2장. 개략적인 규모추정

1. 개략적인 규모 추정(back-of-the-envelope estimation)

  • 보편적으로 통용되는 성능 수치상에서 사고실험(thought experiments)을 행하여 추정치를 계산하는 행위
  • 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것

2. 규모 확장성을 표현하는 데 필요한 수치들

2-1. 데이터 볼륨 단위

단위이름대략적 크기2의 제곱비유/설명
1 KBKilobyte10³ bytes(1천)10작은 텍스트 파일
1 MBMegabyte10⁶ bytes(백만)20고화질 사진 1장 수준
1 GBGigabyte10⁹ bytes(10억)30영화 파일 (저화질)
1 TBTerabyte10¹² bytes(1조)40수천 편 영화, 수억 건 로그
1 PBPetabyte10¹⁵ bytes(1000조)50대규모 데이터센터 저장 규모

2-2. 지연 시간(Latency)

  • 제프 딘(Jeff Dean), 통상적인 컴퓨터에 구현된 연산들의 응답 지연 값

(1) 메모리 & CPU (ns 단위)

연산대략적 지연
L1 캐시 접근~0.5 ns
브랜치 예측 실패~5 ns
L2 캐시 접근~7 ns
Mutex lock/unlock~25 ns
메인 메모리 접근~100 ns

(2) 스토리지 (ms 단위)

연산대략적 지연
메모리에서 1MB 읽기~0.25 ms
SSD에서 1MB 읽기~1 ms
디스크 탐색(Seek)~10 ms
HDD에서 1MB 읽기~10 ms

(3) 네트워크 (ms 단위)

연산대략적 지연
데이터센터 내 RPC 호출~0.5 ms
데이터센터 내 네트워크 왕복~0.5–1 ms
데이터센터 간 왕복 (대륙 간)~100 ms

(4) 대역폭 (Bandwidth)

리소스대역폭
메모리 읽기~10 GB/s
SSD 순차 읽기~1 GB/s
HDD 순차 읽기~100 MB/s
데이터센터 네트워크~10 Gbps (≈1.25 GB/s)
WAN (대륙 간)~10–100 Mbps

2-3. 가용성 관련 수치들

(1) 고가용성(High Availability, HA)

  • 시스템이 오랜 시간 동안 지속적으로 중단 없이 운영될 수 있는 능력을 지칭하는 용어

  • 퍼센트로 표현

  • 대부분의 서비스는 99~100%사이의 값을 가지며, 단 한번도 중단된 적이 없었을 경우 100%

  • 일반적인 가용성(Availability) 공식

    가용성=총 시간장애 시간총 시간\text{가용성} = \frac{\text{총 시간} - \text{장애 시간}}{\text{총 시간}}
  • SLA(Service Level Agreement)

    • 서비스 사업자가 보장하는 가용성 수준(uptime)을 계약서에 명시한 것

    • 아마존, 구글 등의 사업자는 99% 이상의 SLA 제공

    • 가용시간은 관습적으로 숫자 9를 사용해 표시하며, 9가 많을수록 좋음

(2) 가용성과 다운타임 허용치

가용성하루당 허용 다운타임주당 허용 다운타임월당 허용 다운타임연간 허용 다운타임
90% (1 nine)2.4시간16.8시간72시간 (3일)876시간
99% (2 nines)14.40분1.68시간7.31시간3.65시간
99.9% (3 nines)1.44분10.08분43.83분8.77시간
99.99% (4 nines)8.64초1.01분4.38분52.60분
99.999% (5 nines)864.00밀리초6.05초26.30초5.26분
99.9999% (6 nines)86.40밀리초604.80밀리초2.63초31.56초

3. 수치의 의미

3-1. 응답 지연 시간 관련

  • 메모리는 디스크에 비해 빠름
  • 디스크 탐색은 가능한 회피하는 것이 좋음
  • 단순한 압축 알고리즘은 빠름
  • 데이터를 인터넷으로 전송하기 전에 가능하면 압축할 것
  • 데이터 센터는 보통 여러 지역에 분산되어 있고, 센터들 간에 데이터를 주고받는 데는 오랜 시간이 걸림

3-2. 가용성 관련

  • 1 nine (90%): 하루 중 2시간 이상 멈춰도 허용 → 사실상 실무 서비스 불가능
  • 3 nines (99.9%): 흔히 SaaS나 클라우드 기본 SLA → 연간 9시간 이내 장애 허용
  • *5 nines (99.999%): “Carrier Grade” → 연간 5분 이내** 장애만 허용 (통신사, 금융)
  • 9의 개수가 하나 늘 때마다 허용 장애시간이 10배씩 줄어듦

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

4-1. 가정

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

4-2. 문제

  • QPS 추정치
  • 미디어 저장을 위한 저장소 요구량

4-3. 풀이

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

5. 면접 팁

  • 근사치를 활용한 계산: 계산 결과의 정확함 < 적절한 근사치 활용을 통한 시간 절약
  • 가정들은 나중에 살펴볼 수 있도록 작성해두기
  • 단위를 붙이는 습관을 들여 모호함 방지
  • 자주 출제되는 문제 유형
    • QPS 추정
    • 최대 QPS 저장소 요구량 추정
    • 캐시 요구량 추정
    • 서버 수 추정

0개의 댓글