[웹 개발자를 위한 대규모 서비스를 지탱하는 기술]Chapter 14

zzarbttoo·2021년 8월 17일
0

이 글은 절판도서 "웹 개발자를 위한 대규모 서비스를 지탱하는 기술" 을 개인적인 용도로 정리한 글입니다. 모든 내용을 정리한 것이 아니라 필요한 부분만 정리했다는 점 양해 부탁드립니다
문제/오류가 있을 시 댓글로 알려주면 감사하겠습니다


| 효율향상전략

하드웨어의 리소스 사용률 높이기

  • 가상화 기술, 자체제작 서버
  • 규모의 크기와 리소스 사용률
  • 다중화를 추진하면 이용효율은 저하되게 된다
  • 가상화 기술을 이용해 호스트의 집적도를 상승시켜 리소스 시용률을 올린다
  • 자체 제작 서버를 사용해 서버 이중화 사양을 가볍게 해 시스템 전체의 저비용화를 추진

가상화 기술

  • 가상화 기술의 목적을 정리하면 다음과 같다
확장성 
- 오버헤드의 최소화 

비용대비 성능 
- 리소스 사용률 향상
- 운용의 유연함(환경의 단순화)

고가용성 
- 환경의 격리
  • 하테나에서는 Xen을 사용하고 있고, 가상화 기술을 사용할 경우 스토리지로는 네트워크 상의 가상 디스크를 사용하는 구성도 자주 채택되지만, 하테나는 로컬 디스크에 LVM(Logical Volume Manager)의 파티션을 만들고 있다

| 가상화 기술의 효용


1. IPMI를 대체하는 하이퍼바이저 
2. 하드웨어 간 차이 흡수(-> 환경 추상화)
3. 준 가상화(paraVirtualization) 사용 
4. 리소스 소비 제어 
- 과부하 경고
- 부하 조정 
  1. IPMI를 대체하는 하이퍼바이저
  • 벤더 서버에는 IPMI(Intelligent Platform Management Interface)라는 리모트 관리 기능이 있고, 이를 대체해 하이퍼바이저를 사용할 수 있도록 되어있다(하이퍼바이저는 호스트OS를 말한다)
  • 서버 상에 최초로 기동하는 OS를 '하이퍼바이저', 호스트 OS상에서 기동하는 OS를 '게스트OS'라고 한다
  • IPMI는 전원 ON, OFF등의 기능을 원격으로 할 수 있게 하고 하테나는 이를 대체하기 위해 하이퍼바이저 계층을 늘려 게스트 OS를 리모트에서 제어하고 있다(IPMI 탑재X 하드웨어 제어 가능)
  1. 하드웨어 차이를 흡수해 환경 추상화
  • 새로운 하드웨어나 오래된 하드웨어로도 차분에 신경 쓰지 말고 사용할 수 있다
  1. 가상화로 인한 오버헤드를 줄이기 위해 하드웨어를 완전히 에뮬레이팅 하지 않은 가상화(ParaVirtualization)이라는 방식이 있으며 하테나에서는 이 방식을 사용하고 있다(Xen 에 특화됨)

  2. 리소스 소비를 소프트웨어 레벨에서 강력하게 제어할 수 있게 한다

  • 리소스 소비를 제어함으로써 과부하 경고, 부하 조정을 수행한다
  • 비정상적인 리소스 소비를 발견하면 강제적 재시작을 하는데(시스템 안정화 대책) 그런 흐름에서 게스트 OS의 자동 재시작도 수행한다
  • 게스트 OS를 자동 재시작할 때에는 monit이라는 리소스 관리용 툴을 이용해 감시한다(감시 값이 임계치를 넘으면 Apache 재시작 or 게스트 OS 재기동)

| 가상화 서버 구축 정책

  • 가상화 도입의 가장 기본적인 목적은 하드웨어의 이용효율 향상이다
  • 하드웨어 이용효율 향상을 위해 남아있는 리소스를 사용하는 게스트 OS를 투입한다
ex) CPU 리소스가 남아있으면 웹 서버,
I/O 리소스가 남아있으면 DB 서버,
메모리 용량이 남아있으면 캐시 서버를 투입한다 
  • 리소스 소비 경향이 비슷하고 부하가 높은 용도의 게스트 OS끼리는 리소스를 서로 점유하려고 하므로 같이 두는 것은 피하도록 한다
  • 가상화 기술을 도입할 때 중앙에 신뢰성이 높은 큰 규모의 스토리지를 두고 네트워크로 파일 시스템을 마운트 하는 구성을 채택할 경우도 있긴 하지만, 고가의 스토리지 서버를 사용하지 않으면 충분한 안정성을 확보할 수 없기 때문에 이런 형태는 사용하지 않았다(그런 하드웨어는 비쌈)

| 가상화의 장점

  • 물리적인 리소스 제약에서 해방됨으로써 동적으로 변경할 수 있게 되고 게스트 OS의 마이그레이션이나 복제가 용이해짐
    -> 서버 증설 용이, 확장성 확보
  • 소프트웨어 레벨에서 호스트 리소스를 강력하게 제어할 수 있고, 비정상 동작 시 문제를 국소화시키고 호스트를 쉽게 제어할 수 있게 되었다
  • 효율이 향상되고 시스템을 전체적으로 안정화할 수 있게 되었다
  • 하드웨어 운용 비용 저하
  • 비용 대비 성능향상, 고가용성으로 발전

| 가상화와 운용 - 서버 관리 툴로 운용측면에서 가상화의 장점을 살리다

  • 서버관리툴에서도 서버 간 관계를 파악할 수 있다
  • 가상화된 호스트 간 관계를 DNS를 사용해서 조사할 수 있도록 한다
  • 호스트 명으로 IP주소를 얻을 수 있고, parent.게스트OS호스트명 명령어로 게스트 OS에서 부모 OS의 ip 주소를 얻을 수 있도록 했다
  • 게스트 OS에 이상이 생겨서 외부에서 로그인할 수 없게 된 경우에도 부모 호스트 OS로 로그인해서 게스트 OS 상태를 확인할 수 있다
  • 자체적으로 서버관리툴을 구현하면 DNS와의 연계를 곧바로 할 수 있다

| 가상화 도입 시 주의할 점

  • 성능상 오버헤드가 있다
오버헤드의 기준은 다음과 같다 
- CPU 2~3%
- 메모리 성능에서 1할 정도 
- 네트워크 성능은 절반 정도 
- I/O 성능이 5% 정도 떨어진다 
  • 가상화 기술 구현상 결함으로 인해 갑자기 네트워크가 단절되는 등의 불안정 요인이 늘어나는 경우가 있다
  • 네트워크 성능이 반감하는 것은 심각한 문제이다(네트워크 라우터로 PC 라우터를 사용할 때, PC 라우터에서 가상화를 사용해 성능이 떨어지는 부분이 있었다)

하드웨어와 효율 향상

저비용을 실현하는 요소기술

  • 무어의 법칙 : 집적회로 상의 트랜지스터 수는 18개월마다 2배로 증가한다(프로세스는 지수적으로 성능이 향상되는 하드웨어)
  • 개별 코어도 성능이 향상될 것이다
  • 메모리, HDD 도 저렴해지고 있다

| 저가 하드웨어의 유용한 이용법 - 가상화를 전제로 한 하드웨어 사용

  • 관리기능은 최소한 억제하고 코어는 가능한 많은 것을 채택하며 메모리는 충분히 저렴하므로 상한선까지 탑재
  • I/O 성능은 용도별로 요구되는 레벨이 많기 때문에 디스크가 없는 서버를 준비하거나, RAID를 통한 RAID-10을 구성하거나 SSD로 RAID-0등을 구성하는 등 다양한 패턴을 갖추고 있다
  • IPMI와 같은 관리용 하드웨어는 불필요하다(가격만 올라감)
    -> Intel AMT라는 기능으로 이를 대체하고 가상화 기술로 게스트 OS를 소프트웨어적으로 분리함으로써 리소스 제어를 가능하게 한다
  • 벤더 서버의 경우 네트워크 포트를 1개로 한다거나 ECC, RAID를 없애도 되게 한다거나 웹에 특화된 하드웨어로 한정지음으로써 비용을 내리게 된다

| SSD

  • SSD는 DB 슬레이브 서버에 사용하고 있다
  • 메모리 > SSD > HDD RAID-0/10 > HDD RAID-1
    -> 메모리 정도는 아니지만 충분히 빠르다
profile
나는야 누워있는 개발머신

0개의 댓글