2장 - 개략적인 규모 추정
목표
보편적으로 통용되는 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위로서, 어떤 설계가 요구사항에 부합 할 것인지 확인해보자.
2의 제곱수
데이터 볼륨의 단위를 2의 제곱수로 표현하면 어떻게 되는지 알아야한다.
(아스키 문자 하나 : 1바이트)

모든 프로그래머가 알아야하는 응답 지연 값

ns ➡️ us ➡️ ms순이며 다음과 같은 사실을 알 수 있다.
- 메모리는 빠르지만 디스크는 느리다. 250us vs 30ms
- 디스크 탐색은 가능한 한 피하라.
- 단순한 압축 알고리즘은 빠르다.
- 데이터를 인터넷으로 전송하기 전에 가능하면 압축하라.
- 데이터 센터는 보통 여러지역(region)에 분산되어 있고, 센터들 간에 데이터 주고받는데는 시간이 걸린다.
가용성에 관한 수치들
고가용성 = 시스템이 오랜 시간 동안 지속적으로 중단 업싱 운영될 수 있는 능력
100%일때 단 한 번도 중단 X, 대부분은 99~100%이며 관습적으로 숫자 9를 이용해 표시한다.

예제: 트위터 QPS와 저장소 요구량 추정
위의 내용을 바탕으로 저장소 요구량을 추정해보자
가정
- 월간 능동사용자 3억
- 50% 사용자가 트위터 매일 사용
- 각 사용자는 2건 트윗
- 미티어를 포함하는 트윗은 10%
- 데이터는 5년간 보관된
추정
QPS(Query Per Second) 추정치
- 일간 능동사용자(DAU) = 3억 * 50% = 1.5억
- QPS = 1.5억 * 2 트윗 / 24시간 / 3600초 = 약 3500
- 최대 QPS(Peek QPS) = 2 * QPS = 약 7000
미디어 저장을 위한 저장소 요구향
- 평균 트윗 크기
- tweet_id : 64byte
- text : 140byte
- media : 1mb
- 미디어 저장소 요구량 : 1.5억 * 2(트윗) * 10%(미디어 포함) * 1mb = 30TB/일
- 5년간 미디어 보관 : 30TB * 365 * 5 = 약 55PB
팁
- 근사치를 활용한 계산 99984/9.1 = 100,000/10으로 간소화 할 수 있다. 정확한 계산이 목적이 아니다.
- 가정을 적어 둬라, 나중에 확인할 수 있게
- 단위를 붙혀라, 5MB인지 5KM인지 스스로 헷갈릴 수 있음 습관으로 해결
- 많이 출제되는 QPS, 최대 QPS, 저장소 요구량, 캐시 요구량, 서버수의 추정은 연습하도록 하자.