개략적인 규모 추정

코딩하는스님·2021년 12월 28일

개요

개략적인 규모 추정은 보편적으로 통용되는 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위로서, 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것이다.
Google Pro Tip: Use Back-Of-The-Envelope-Calculations To Choose The Best Design
개략적 규모 추정을 효과적으로 해 내려면 규모 확장성을 표현하는 데 필요한 기본기에 능숙해야 한다. 특히 2의 제곱수나 latency 값, 그리고 가용성에 관계된 수치들을 기본적으로 잘 이해하고 있어야 한다.

2의 제곱 수

  • 제대로 된 분산 데이터 시스템의 데이터 양 계산을 위해서는 데이터 볼륨의 단위를 2의 제곱수로 어떻게 표현하면 되는지를 알아야 한다. 최소 단위는 1바이트이고, 8비트로 구성된다.

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

  • 2010년에 구글의 제프 딘이 공개한 통상적인 컴퓨터에서 구현된 연산들의 응답지연 값이다.

연산별 응답지연 값

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

Latency Numbers Every Programmer Should Knox

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

가용성에 관련된 수치들

  • 고가용성이란 시스템이 오랜 시간 동안 지속적으로 중단 없이 운영될 수 있는 능력을 지칭한다.
  • 주로 percent로 표현하는데, 100%는 시스템이 단 한 번도 중단된 적이 없음을 의미한다.
  • SLA(Service Level Agreement)는 서비스 사업자가 보편적으로 사용하는 용어로, 서비스 사업자와 고객 사이에 맺어진 합의를 의미한다.

가용률과 장애시간 간의 관계

가용률하루당 장애시간주당 장애시간개월당 장애시간연간 장애시간
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와 저장소 요구량 추정

가정

  • MAU는 3억명
  • 50퍼센트의 사용자가 트위터를 매일 사용한다.
  • 평균적으로 각 사용자는 매일 2건의 트윗을 올린다.
  • 미디어를 포함하는 트윗은 10퍼센트 정도이다.
  • 데이터는 5년간 보관된다.

추정

  • QPS 추정치
    - DAU = 3억 * 50% = 1.5억
    • QPS = 1.5억 * 2트윗 / 24시간 / 3600초 = 3500
    • 최대 QPS = 2 * QPS = 7000
      왜 최대는 2로 잡히는가?
      -> DAU를 MAU의 50%로 잡았으니까
  • 미디어 저장을 위한 저장소 요구량
    - 평균 트윗 크기
    - tweet_id : 64byte
    - text : 140byte
    - media : 1MB
    • 미디어 저장소 요구량 : 1.5억 2 10% * 1MB = 30TB/일
    • 5년간 요구량 : 30TB 365 5 = 55PB

근사치를 활용한 계산

  • 정확한 계산보다는 근사치를 활용하여 불필요한 시간을 절약한다.

가정은 적어둔다.

  • 추후에 확인할 때 도움이 된다.

단위를 붙인다.

  • 다음에 볼 때 헷갈릴 수 있기 때문에 붙이는 습관을 들인다.

QPS를 계산하는 건 미리미리 연습한다.

출처

알렉스 쉬, 가상 면접 사례로 배우는 대규모 시스템 설계 기초, 인사이트, 2021, 33p-38p

profile
👨🏻‍💻👨🏽‍🦲

0개의 댓글