[2026] System design & CS

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 2. 개략적인 규모 추정

dev_writer 2026. 2. 16. 20:17

책 내용 요약

2의 제곱수

2의 제곱수는 데이터의 계산을 다룰 때 규모 추정 등 다양하게 사용된다.

2의 x 제곱 근사치 이름 축약형
10 1천 (thousand) 1킬로바이트 1KB
20 1백만 (million) 1메가바이트 1MB
30 10억 (billion) 1기가바이트 1GB
40 1조 (trillion) 1테라바이트 1TB
50 1000조 (quadrillion) 1페타바이트 1PB

 

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

아래 응답지연 값들을 통해서 컴퓨터 연산들의 처리 속도가 어느 정도인지 짐작할 수 있다.

연산명 시간
L1 캐시 참조 0.5 ns
분기 예측 오류 (branch mispredict) 5 ns
L2 캐시 참조 7 ns
뮤텍스 (mutex) 락 / 언락 100 ns
주 메모리 참조 100 ns
Zippy로 1 KB 압축 10,000 ns = 10 µs
1 Gbps 네트워크로 2 KB 전송 20,000 ns = 20 µs
메모리에서 1 MB 순차적으로 read 250,000 ns = 250 µs
같은 데이터 센터 내에서의 메시지 왕복 지연시간 500,000 ns = 500 µs
디스크 탐색 (seek) 10,000,000 ns = 10 ms
네트워크에서 1 MB 순차적으로 read 10,000,000 ns = 10 ms
디스크에서 1 MB 순차적으로 read 30,000,000 ns = 30 ms
한 패킷의 CA (캘리포니아) 로부터 네덜란드까지의 왕복 지연시간 150,000,000 ns = 150 ms

 

이를 통해, 다음과 같은 사실도 알 수 있다.

  • 메모리는 빠르지만 디스크는 느리다.
  • 디스크 탐색은 가능한 피하라.
  • 단순한 압축 알고리즘은 빠르다.
  • 데이터를 인터넷으로 전송하기 전에 가능하면 압축하라.
  • 데이터 센터는 보통 여러 지역에 분산되어 있고, 센터들 간에 데이터를 주고받는 데는 시간이 걸린다.

 

가용성에 관계된 수치들

고가용성 (HA, High Availability)은 시스템이 오랜 시간 동안 지속적으로 중단 없이 운영될 수 있는 능력을 지칭하는 용어다.

가용률 하루 당 장애시간 주 당 장애시간 개월 당 장애시간 연 간 장애시간
99% 14.40 분 1.68 시간 7.31 시간 3.65 일
99.9% 1.44 분 10.08 분 43.83 분 8.77 시간
99.99% 8.64 초 1.01 분 4.38 분 52.60 분
99.999% 864.00 밀리초 6.05 초 26.30 초 5.26 분
99.9999% 86.40 밀리초 604.80 밀리초 2.63 초 31.56 초

 

예제: 트위터 QPS와 저장소 요구량 추정

QPS (Query Per Second): 검색 엔진이나 데이터베이스와 같은 정보 검색 시스템이 1초 동안 받는 검색 트래픽의 양

가정

  • 월간 능동 사용자 (MAU)는 3억 명
  • 50% 사용자가 매일 트위터를 이용
  • 평균적으로 각 사용자가 매일 2건의 트윗 업로드
  • 미디어를 포함하는 트윗은 10% 정도
  • 데이터는 5년간 보관

추정

  • QPS 추정치
    • 일간 능동 사용자 (DAU) = 3억 * 50% = 1.5억
    • QPS = 1.5억 * 2 트윗 * 24시간 / 3600초 = 약 3,500
    • 최대 QPS (Peek QPS) = 2 * QPS = 약 7,000
  • 미디어 저장을 위한 저장소 요구량
    • 평균 트윗 크기
      • tweet_id에 64 바이트
      • 텍스트에 140 바이트
      • 미디어에 1 MB
    • 미디어 저장소 요구량 = 1.5억 * 2 * 10% * 1 MB = 30TB / 일
    • 5년간 미디어를 보관하기 위한 저장소 요구량 = 30TB * 365 * 5 = 약 55PB

 

  • 면접장에서는 복잡한 계산을 실제로 구체적으로 하는 것 보다는 근사치를 활용하는 것이 시간을 아낀다. 99,987 / 9.1 의 실제 값을 구하기보다는 100,000 / 10 로 간소화하라.
  • 가정들은 나중에 살펴볼 수 있도록 적어두라.
  • 단위를 붙여두는 습관을 들이면 모호함을 방지할 수 있다.
  • 많이 출제되는 개략적 규모 추정 문제를 해결하기 위해서는 QPS, 최대 QPS, 저장소 요구량, 캐시 요구량, 서버 수 등을 추정하는 연습을 해 두어야 한다.

Reference