로고jiohh blog

2장 - 개략적인 규모 추정

목표

보편적으로 통용되는 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위로서, 어떤 설계가 요구사항에 부합 할 것인지 확인해보자.

2의 제곱수

데이터 볼륨의 단위를 2의 제곱수로 표현하면 어떻게 되는지 알아야한다.
(아스키 문자 하나 : 1바이트)

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

ns ➡️ us ➡️ ms순이며 다음과 같은 사실을 알 수 있다.

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

가용성에 관한 수치들

고가용성 = 시스템이 오랜 시간 동안 지속적으로 중단 업싱 운영될 수 있는 능력
100%일때 단 한 번도 중단 X, 대부분은 99~100%이며 관습적으로 숫자 9를 이용해 표시한다.

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

위의 내용을 바탕으로 저장소 요구량을 추정해보자

가정

  1. 월간 능동사용자 3억
  2. 50% 사용자가 트위터 매일 사용
  3. 각 사용자는 2건 트윗
  4. 미티어를 포함하는 트윗은 10%
  5. 데이터는 5년간 보관된

추정

QPS(Query Per Second) 추정치

  • 일간 능동사용자(DAU) = 3억 * 50% = 1.5억
  • QPS = 1.5억 * 2 트윗 / 24시간 / 3600초 = 약 3500
  • 최대 QPS(Peek QPS) = 2 * QPS = 약 7000

미디어 저장을 위한 저장소 요구향

  • 평균 트윗 크기
    • tweet_id : 64byte
    • text : 140byte
    • media : 1mb
  • 미디어 저장소 요구량 : 1.5억 * 2(트윗) * 10%(미디어 포함) * 1mb = 30TB/일
  • 5년간 미디어 보관 : 30TB * 365 * 5 = 약 55PB

  • 근사치를 활용한 계산 99984/9.1 = 100,000/10으로 간소화 할 수 있다. 정확한 계산이 목적이 아니다.
  • 가정을 적어 둬라, 나중에 확인할 수 있게
  • 단위를 붙혀라, 5MB인지 5KM인지 스스로 헷갈릴 수 있음 습관으로 해결
  • 많이 출제되는 QPS, 최대 QPS, 저장소 요구량, 캐시 요구량, 서버수의 추정은 연습하도록 하자.