가상 면접 사례로 배우는 대규모 시스템 설계 기초 - Chapter2

dongyoung heo·2021년 9월 26일
0

System design

목록 보기
2/2

개략적인 규모 추정

시스템 설계 면접에서 시스템 용량이나 성능 요구사항을 개략적인 수치로 나타낼 수 있어야한다.

구글의 시니어 제프 딘은 다음과 같이 말했다.

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

즉 개략적인 수치 계산을 통해 어떤 설계가 어울릴지 찾아내는 것이다. 수치 계산을 위해 규모 확장성을 표현하는 기본기에 대해 알려주는게 이번 챕터2다.

  • 2의 제곱수
  • 응답지연 값
  • 가용성에 관계된 수치들

2의 제곱수

  • 1천바이트 ≒ 1KB
  • 1백만(million) 바이트 ≒ 1MB
  • 10억(billion) 바이트 ≒ 1GB
  • 1조(trillion) 바이트 ≒ 1TB
  • 1000조(quadrillion) 바이트 ≒ 1PTB

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

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

메모리는 빠르지만 디스크는 아직도 느리다.

디스크 탐색(seek)은 가능한 피하라.

단순한 압축 알고리즘은 빠르다.

데이터를 인터넷으로 전송하기 전에 가능하면 압축하라.

데이터 센터는 보통 여러 지역에 분산되어 있고, 센터들 간의 데이터를 주고받는 데는 시간이 걸린다.

가용성에 관한 수치들

고가용성(high availability)

  • 시스템이 오랜 시간동안 중단 없이 운영이 지속되는것.
  • 퍼센트로 표기. 대부분의 서비스는 99% ~ 100%사이의 값을 가진다.
  • 가용률하루당 장애시간주당 장애시간개월당 장애시간연간 장애시간
    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.000밀리초6.05초26.30초5.26분
    99.9999%86.40밀리초604.80밀리초2.63초31.56초

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

가정

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

QPS(Query per Second) 추정치는?
DAU = 3억 50% = 1.5억명
1.5억
2 / 86400 = 3472.2 == 3500
최대 qps는 2*QPS = 7000

미디어 저장을 위한 저장소 요구량은?
평균 트윗 크기

  • id : 64바이트
  • text : 140바이트
  • 미디어어: 1MB
    3억건 0.9200바이트 + 3억건0.11mb(30TB/일)
    5년간 미디어를 보관하기 위한 저장소 요구량 = 30TB 365 5 = 약 55PB

  • 근사치를 활용해라
  • 단위를 붙여라
  • QPS, 최대 QPS, 저장소 요구량, 캐시 요구량, 서버 수등을 추정

0개의 댓글