
2장. 개략적인 규모 추정
1. 2의 제곱수
데이터 볼륨의 단위
- 어떻게 2의 제곱수로 표현?
- 최소단위 1바이트(8비트)
- ASCII 문자: 1바이트 차지
흔히 쓰이는 단위
- 2^10 := 1천(thousand) = 1Kilobyte = 1KB
- 2^20 := 1백만(million) = 1Megabyte = 1MB
- 2^30 := 10억(billion) = 1Gigabyte = 1GB
- 2^40 := 1조(trillion) = 1Terabyte = 1TB
- 2^50 := 1000조(quadrillion) = 1Petabyte = 1PB
2. 모든 프로그래머가 알아야 하는 응답지연 값
- 메모리는 빠르지만 디스크는 느림
- 디스크 탐색(seek)은 가능한 한 피할 것
- 단순한 압축 알고리즘은 빠름
- 데이터를 인터넷으로 전송하기 전에 가능하면 압축할 것
- 데이터센터는 보통 여러 region에 분산되어 있고, 센터들 간에 데이터를 주고받는 데는 시간이 걸림
3. 가용성에 관계된 수치들
고가용성 high availability
- 오랜 시간동안 지속적으로 중단없이 운영될 수 있는 능력
- percent로 표현: 100% = 단 한 번도 시스템이 중단된 적 없음을 의미
SLA
- Service Level Agreement
- 서비스 provider와 고객 사이에 맺어진 합의를 의미
- 해당 합의에는 서비스 provider가 제공하는 서비스의 가용시간
uptime 이 공식적으로 기술됨.
- 가용시간은 관습적으로 9를 사용해 표시 → 9가 많을수록 좋음 (99.99999%)
4. 예제 : 트위터 QPS와 저장소 요구량 추정
가정
- monthly active user는 3억명
- 50%의 user가 트위터를 매일 사용
- 평균적으로 각 사용자는 매일 2건의 트윗을 게시
- 미디어를 포함하는 트윗은 10%
- 데이터는 5년간 보관
추정
- QPS(Query Per Second) 추정치
- Daily Active User (DAU) = 3억 x 50% = 1.5억
- QPS = 1.5억 x 2트윗 / 24시간 / 3600초 := 3500
- 최대 QPS(Peek QPS) = 2 x QPS := 7000
- 미디어 저장을 위한 저장소 요구량
- 평균 트윗 크기: twee_id 64byte, text 140byte, media 1MB
- 미디어 저장소 요구량 = 1.5억 x 2 x 10% x 1MB = 30TB/일
- 5년간 미디어를 보관하기 위한 저장소 요구량
5. 팁
- 근사치를 활용한 계산
- rounding and approximation
- 계산 결과의 정확함을 평가하는 목적 X
- 적절한 근사치 활용해서 시간 절약
- 가정(assumption) 메모하기
- 단위(unit) 붙이기