대규모 시스템 설계 기초: 02. 개략적인 규모 추정

대규모 시스템 설계 기초 - 02 장을 보고 정리한 내용 입니다. 개략적인 규모 추정(back-of-the-envelope estimation) 은 보편적으로 통용되는 성능 수치상에서 사고 실험(thought experiments)을 행하여 추정치를 계산하는 행위로서, 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것 이다

대규모 시스템 설계 기초: 02. 개략적인 규모 추정
💡
개략적인 규모 추정?

개략적인 규모 추정(back-of-the-envelope estimation) 은 보편적으로 통용되는 성능 수치상에서 사고 실험(thought experiments)을 행하여 추정치를 계산하는 행위로서, 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것 이다

by. 구글의 시니어 펠로(Senior Fellow)

개략적인 규모 추정을 효과적으로 잘 해내려면?

규모 확장성을 표현하는 데 필요한 기본기에 능숙해야 함
  • 2의 제곱수
  • 응답지연(Latency) 값
  • 가용성에 관계된 수치
    위 항목들을 기본적으로 잘 이해하고 있어야 함

2의 제곱 수

데이터의 양은 엄청나게 커질 수 있으나 계산법은 기본을 크게 벗어나지 않는다

  • 최소 단위: 1Byte(8bit) (CPU 에서 할당 가능한 최소 단위)
  • ASCII 문자 하나가 차지하는 메모리 크기는 1Byte
    아래는 흔히 쓰는 데이터 볼륨 표

응답 지연 값

아래의 표는 2010년에 통상적인 컴퓨터에서 구현된 연산들의 응답 지연 값이다
대략적인 이해를 위해서만 참고하자. (현대의 컴퓨터는 2010년도 보다 빨라졌기 때문에 아래의 값을 신용하기엔 너무 많은 세월이 지났다)

https://norvig.com/21-days.html?ref=blog.pollra.com#answers

  • 메모리는 빠르지만 디스크는 아직도 느리다
  • 디스크 탐색(seek)은 가능한 한 피하라
  • 단순한 압축 알고리즘은 빠르다
  • 데이터를 인터넷으로 전송하기 전에 가능하면 압축하라

가용성에 관계된 수치들

  • 고용성: 시스템이 오랜 시간 동안 지속적으로 중단 없이 운영될 수 있는 능력
  • SLA(Service Level Agreement): 서비스 사업자와 고객 사이에 맺어진 합의

가정

  • 월간 능동 사용자(monthly active user)는 3억(300million) 명이다.
  • 50%의 사용자가 트위터를 매일 사용한다.
  • 평균적으로 각 사용자는 매일 2건의 트윗을 올린다
  • 미디어를 포함하는 트윗은 10% 정도다.
  • 데이터는 5년간 보관된다.

추정

QPS(Query Per Second) 추정치

  • 일간 능동 사용자(Daily Active User, DAU) = 3억 x 50% = 1.5억(150million)
  • QPS = 1.5억 × 2 트윗 / 24시간 / 3600초 = 약 3500
  • 최대 QPS(Peek QPS) = 2 x QPS = 약 7000

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

  • 평균 트윗 크기
    • tweet_id에 64바이트
    • 텍스트에 140 바이트
    • 미디어에 1MB
  • 미디어 저장소 요구량: 1.5억 x 2 x 10% x 1 MB = 30TB / 일
  • 5년간 미디어를 보관하기 위한 저장소 요구량: 30TB x 365 x 5 = 약 55PB

  • 규모 추정을 물어보는 이유: 문제 해결 능력을 보기 위해
  • 근사치를 활용한 계산
    • 면접장에서 복잡한 계산은 어려움.(시간 낭비)
    • 계산 결과의 정확함을 평가하는 것이 아님.
    • 99987/9.1 같은 값은 100,000/10 으로 간소화
  • 가정의 기록
  • 단위를 붙여야 함
    • 단위에 대해 까먹을 가능성
  • QPS, 최대 QPS, 저장소 요구량, 캐시 요구량, 서버 수 추정 같은 항목의 계산을 연습 해 보자