스터디 노트

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 TBPB

ASCII 문자 1자 = 1 바이트를 기준으로 잡으면 트윗(280자)은 약 280 B, 메시지·이미지·영상까지 곱해 나가며 데이터 크기를 추정할 수 있다.

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

구글 Jeff Dean이 공개한 수치(2010년 기준). 메모리 접근은 마이크로초, 디스크·네트워크 접근은 밀리초라는 세 자릿수 차이를 감각적으로 기억한다.

연산지연(ns)대략
L1 캐시 참조0.5 ns
분기 예측 실패5 ns
L2 캐시 참조7 ns
뮤텍스 lock/unlock100 ns
메인 메모리 참조100 ns
1KB 압축 (Zippy)10,000 ns10 μs
1Gbps 네트워크로 2KB 전송20,000 ns20 μs
메모리에서 1MB 순차 읽기250,000 ns250 μs
같은 데이터센터 왕복500,000 ns0.5 ms
디스크 탐색(seek)10,000,000 ns10 ms
네트워크에서 1MB 순차 읽기10,000,000 ns10 ms
디스크에서 1MB 순차 읽기30,000,000 ns30 ms
대륙 간 패킷 왕복 (CA↔NL)150,000,000 ns150 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, 저장 용량, 캐시 용량, 서버 수. 연습해서 공식처럼 꺼낼 수 있도록 한다.
  • 시간을 낭비하지 마라 — 세세한 계산보다 설계 논의에 더 많은 시간을 써야 한다.