개발 책 읽기 : 가상 면접 사례로 배우는 대규모 시스템 설계 기초 1 #
2장. 개략적인 규모 추정 #
개요 #
시스템 용량이나 성능 요구사항을 개략적으로 추정
- 개략적인 규모 추정(back-of-the-enveope estimation) : 보편적으로 통용되는 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위
- 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것
- 효과적인 개략적 규모 추정을 위해서는 규모 확장성을 표현하는 데 필요한 기본기에 능숙해야 한다.
2의 제곱수 #
분산 시스템에서 다루는 데이터 양은 엄청나게 커질 수 있으나 그 계산법은 기본을 크게 벗어나지 않는다. 제대로된 계산 결과를 얻으려면 데이터 볼륨의 단위를 2의 제곱수로 표현하면 어떻게 되는지를 우선 알아야한다.
- 최소 단위는 1바이트이고, 8비트로 구성된다.
- ASCII 문자 하나가 차지하는 메모리 크기가 1바이트이다.
모든 프로그래머가 알아야 하는 응답지연 값 #
컴퓨터에서 구현된 연산들의 응답지연 값 #
위의 표를 시각화한 수치 #
위 이미지에 제시된 수치들을 분석하면 다음과 같은 결론이 나온다.
- 메모리는 빠르지만 디스크는 아직도 느리다.
- 디스크 탐색(seek)은 가능한 한 피하라.
- 단순한 압축 알고리즘은 빠르다.
- 데이터를 인터넷으로 전송하기 전에 가능하면 압축하라.
- 데이터 센터는 보통 여러 지역에 분산되어 있고, 센터들 간에 데이터를 주고받는 데는 시간이 걸린다.
가용성에 관계된 수치들 #
- 고가용성(high availability)
- 시스템이 오랜 시간 동안 지속적으로 중단 없이 운영될 수 있는 능력을 지칭하는 용어
- 고가용성을 표현하는 값은 퍼센트(percent)로 표현하는데, 100%는 시스템이 단 한번도 중단된 적이 없었음을 의미한다.
- 대부분의 서비스는 99%에서 100% 사이의 값을 갖는다.
- SLA(Service Level Agreement)
- 서비스 사업자(service provider)가 보편적으로 사용하는 용어로, 서비스 사업자와 고객 사이에 맺어진 합의
- 이 합의에는 서비스 사업자가 제공하는 서비스의 가용시간(uptime)이 공식적으로 기술되어 있다.
- 가용 시간은 관습적으로 숫자 9를 사용해 표시한다.
- 9가 많을수록 좋다고 보면 된다.
9의 개수와 시스템 장애 시간(downtime) 사이의 관계 #
예제: 트위터 QPS와 저장소 요구량 추정 #
가정 #
- MAU : 300,000,000 (3억)
- 50% 사용자가 매일 사용
- 평균적으로 각 사용자는 매일 2건의 트윗을 올림
- 미디어를 포함하는 트윗은 10%
- 데이터는 5년간 보관
추정 #
- QPS 추정치
- DAU : 300,000,000 * 50% = 150,000,000 (1.5억)
- QPS : 150,000,000 * 2(tweet)/24(hour)/3600(second) = 3472.2 (약 3500)
- 최대 QPS(Peek QPS) : 2 * QPS = 6944 (약 7000)
- 미디어 저장을 위한 저장소 요구량
- 평균 트윗 크기
- tweet_id : 64 Byte
- text : 140 Byte
- Media : 1MB
- 미디어 저장소 요구량 : 150,000,000 2 / 10 1MB = 30TB/일
- 5년간 미디어 보관하기 위한 저장소 요구량 : 30TB 365 5 = 약 55 PB
- 평균 트윗 크기
- 도서 : 가상 면접 사례로 배우는 대규모 시스템 설계 기초 1