본문 바로가기

책맛보기

대규모 서비스를 지탱하는 기술

대규모 서비스를 지탱하는 기술 웹 개발자를 위한
원제Web開係者のための大規模サ-ビス技術入門
지은이이토 나오야
옮긴이다나카 신지
펴낸곳제이펍
쪽수367쪽
ISBN9788994506128
펴낸날2011년 02월 28일
읽은날
9
대규모 서비스에만 있는 문제
확장성과 부하분산 
대량의 액세스가 있는 서비스에서는 서버 1대로 처리할 수 없는 부하를 어떻게 처리할 것인지가 가장 큰 문제
스케일 아웃 서버를 횡으로 전개, 즉 서버의 역할을 분담하거나 대수를 늘림으로써 시스템의 전체적인 처리능력을 분산하는 방법
스케일 업 하드웨어의 성능을 높여 처리능력을 끌어올리는 방법

하드웨어이 성능과 가격은 비례하지 않는다. 대량생산되고 있는 일용품 성격의 하드웨어일수록 저가에 구할 수 있다. 저가의 하드웨어를 횡으로 나열해서 확장성을 확보하는 것이 스케일아웃 전략이다. 스케일아웃 전략을 채용한 경우는 비용이 절감되는 반면에 다양한 문제가 발생한다.
사용자로부터의 요청을 어떻게 분배할 것인가?
데이터 동기화는 어떻게 할 것인가?

 다중성 확보
시스템은 다중성을 지닌 구성, 즉 특정 서버가 고장 나거나 성능이 저하되더라도 서비스를 계속할 수 있는 구성으로 할 필요가 있다.

효율적인 운용 필요
일손을 거치지 않고 대규모 시스템을 건강한 상태로 얼마나 계속 유지해갈 수 있을 것인가?

개발자 수, 개발방법의 변화 
 대규모 서비스가 되면 당연히 혼자서는 개발이나 운용이 어려워지므로 여러 기술자가 역할을 분담하게 된다. 
개발 표준화
프로그래밍 언어 통일
라이브러리나 프레임워크를 통일
코딩 규약
소스코드 관리를 버전관리 시스템

 13 대규모 데이터량에 대한 대처
서비스가 어느 정도 이상의 규모가 되면 데이터는 증가한다. 이 데이터량이 분수령을 넘어서면 문제가 복잡해진다. 그리고 응급처리로는 쉽사리 풀리지 않는다. 이 점이 대규모 서비스의 어려운 점이다.

18 시스템의 성장전략
미니멈 스타트, 변화를 내다본 관리와 설계

20. 하테나의 기술팀
약 1000대, 종원업 40명

32
대규모 데이터는 어떤 점이 어려운가?
- 메모리 내에서 계산할 수 없다
메모리 내에서 계산할 수 없다는 점이 어려운 점인 이유는 메모리에 올리지 않으면 기본적으로 디스크를 계속 읽어가면서 검색하게 되어 좀처럼 발견할 수 없는 상태가 되기 때문이다. 데이터 건수가 많으면 그만큼 입력 데이터 건수가 늘어나므로 계산량이 많아진다는 점도 당연한 이유지만, 이 점보다도 문제가 되는 것은 '디스크를 읽고 있다'는 점이다.

메모리와 디스크의 속도차
- 메모리는 10^5 ~ 10^6 배 이상 디스크보다 빠르다.

37
전송속도에서도 100배 이상 차이가 난다.
 sudo /sbin/hdparm -tT /dev/sda

41 규모조정의 요소
웹 서비스에서는 고가의 빠른 하드웨어를 사서 성능을 높이는 '스케일업' 전략보다도 저가이면서 일반적인 성능의 하드웨어를 많이 나열해서 시스템 전체 성능을 올리는 스케일아웃 전략이 주류이다. 개별적인 이유는 다양하겠지만, 스케일아웃 전략이 더 나은 이유는 웹 서비스에 적합한 형태이고 비용이 저렴하다는 점과 시스템 구성에 유연성이 있다는 점이 포인트다.

44
DB 확장성 확보의 어려움
대규모 환경에서는 I/O 부하를 부담하고 있는 서버는 애초에 분산시키기 어려운데다가 디스크 I/O가 많이 발생하면 서버가 금새 느려지는 본질적인 문제가 있다.