Chapter 02
개략적인 규모 추정
back-of-the-envelope 계산 기법. 2의 제곱수, 응답 지연, 가용성 수치를 활용해 QPS, 저장 용량, 대역폭 등을 빠르게 추정.
개요
시스템 설계 면접에서는 처리량·저장 용량·대역폭 같은 수치를 봉투 뒷면 계산(back-of-the-envelope)으로 빠르게 추정할 수 있어야 한다. 정확한 값을 구하는 것이 목적이 아니라 — 시스템 용량을 가늠하고 설계 결정을 뒷받침하는 것이 목적이다. 이를 위해 세 가지 공용어(2의 제곱수, 응답 지연, 가용성)를 손에 익혀 둔다.
2의 제곱수
분산 시스템의 데이터 볼륨은 항상 2의 제곱수 기반으로 표기된다. 바이트 단위 환산을 외워 두면 추정이 빨라진다.
| 이름(approx) | 정확한 값 | 약어 |
|---|---|---|
| 1 KB (10³) | 2¹⁰ = 1,024 바이트 | KB |
| 1 MB (10⁶) | 2²⁰ = 1,048,576 바이트 | MB |
| 1 GB (10⁹) | 2³⁰ ≈ 10억 바이트 | GB |
| 1 TB (10¹²) | 2⁴⁰ ≈ 1조 바이트 | TB |
| 1 PB (10¹⁵) | 2⁵⁰ ≈ 1,000 TB | PB |
ASCII 문자 1자 = 1 바이트를 기준으로 잡으면 트윗(280자)은 약 280 B, 메시지·이미지·영상까지 곱해 나가며 데이터 크기를 추정할 수 있다.
모든 프로그래머가 알아야 하는 응답 지연 값
구글 Jeff Dean이 공개한 수치(2010년 기준). 메모리 접근은 마이크로초, 디스크·네트워크 접근은 밀리초라는 세 자릿수 차이를 감각적으로 기억한다.
| 연산 | 지연(ns) | 대략 |
|---|---|---|
| L1 캐시 참조 | 0.5 ns | — |
| 분기 예측 실패 | 5 ns | — |
| L2 캐시 참조 | 7 ns | — |
| 뮤텍스 lock/unlock | 100 ns | — |
| 메인 메모리 참조 | 100 ns | — |
| 1KB 압축 (Zippy) | 10,000 ns | 10 μs |
| 1Gbps 네트워크로 2KB 전송 | 20,000 ns | 20 μs |
| 메모리에서 1MB 순차 읽기 | 250,000 ns | 250 μs |
| 같은 데이터센터 왕복 | 500,000 ns | 0.5 ms |
| 디스크 탐색(seek) | 10,000,000 ns | 10 ms |
| 네트워크에서 1MB 순차 읽기 | 10,000,000 ns | 10 ms |
| 디스크에서 1MB 순차 읽기 | 30,000,000 ns | 30 ms |
| 대륙 간 패킷 왕복 (CA↔NL) | 150,000,000 ns | 150 ms |
여기서 얻는 결론:
- 메모리는 빠르고 디스크는 느리다 — 디스크는 가능한 피하거나 캐시로 가린다.
- 순차 읽기가 임의 읽기보다 훨씬 빠르다 — 로그 구조 스토리지가 유리한 이유.
- 네트워크 왕복은 비싸다 — 데이터 센터 간 통신을 줄이고, 여러 지역에 복제하는 편이 좋다.
- 압축은 공짜가 아니지만 전송 절감에는 충분히 싸다.
가용성에 관계된 수치들
시스템이 사용 가능한 시간의 비율을 가용성(availability)이라 하며 보통 9의 개수로 부른다. "three nines"는 99.9%, "five nines"는 99.999%.
| 가용성 | 연간 다운타임 | 일간 다운타임 |
|---|---|---|
| 99% | 3.65일 | 14.4분 |
| 99.9% | 8.77시간 | 1.44분 |
| 99.99% | 52.6분 | 8.64초 |
| 99.999% | 5.26분 | 864 밀리초 |
| 99.9999% | 31.5초 | 86.4 밀리초 |
대형 클라우드(AWS, GCP)의 SLA는 보통 99.9%~99.99%. 9를 하나 늘릴 때마다 엔지니어링 비용은 비선형적으로 커진다.
예제: 트위터 QPS와 저장소 요구량 추정
전형적인 추정 흐름을 트위터 같은 서비스에 적용해 본다.
가정
- 월간 활성 사용자(MAU): 3억 명
- 그중 50%가 매일 사용(DAU): 1.5억 명
- 평균 트윗: 사용자당 하루 2건
- 매체가 포함된 트윗 비율: 10%
- 데이터 보관: 5년
QPS 계산
- Tweet QPS = 1.5억 × 2 ÷ 86,400초 ≈ 3,500 QPS
- Peak Tweet QPS ≈ 2 × 평균 ≈ 7,000 QPS
저장소 추정
- 미디어 크기 평균: 1 MB
- 일일 미디어 저장: 1.5억 × 2 × 10% × 1 MB = 30 TB / 일
- 5년 저장 용량: 30 TB × 365 × 5 ≈ 55 PB
이런 수치들은 정확하기보다 자릿수가 맞는지가 중요하다. "GB가 아니라 PB 단위다"라는 감각이 샤딩·CDN·스토리지 비용 결정을 정당화한다.
팁
- 반올림과 근사 — 99987 / 9.1을 계산하지 말고 100,000 / 10으로 단순화.
- 가정을 적어라 — 면접관이 검토할 수 있게 보이도록. 가정이 바뀌면 수치도 재계산.
- 단위를 붙여라 — 5 뒤에 KB인지 MB인지에 따라 설계가 뒤집힌다.
- 자주 묻는 문제 — QPS, 피크 QPS, 저장 용량, 캐시 용량, 서버 수. 연습해서 공식처럼 꺼낼 수 있도록 한다.
- 시간을 낭비하지 마라 — 세세한 계산보다 설계 논의에 더 많은 시간을 써야 한다.