Study/대규모 시스템 설계 기초

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 2장 개략적인 규모 측정

킴준현 2024. 11. 14. 20:01

2장. 개략적인 규모 추정

시스템 설계 면접을 볼 때, 시스템 용량이나 성능 요구사항을 추정해보라는 요구를 받는다.

개략적 규모 추정을 효과적으로 해내려면 규모 확장성을 표현하는데 필요한 기본기가 필요하다.

2의 제곱수응답지연(latency) 값, 가용성에 관계된 수치들을 기본적으로 잘 이해하고 있어야한다.

 

2의 제곱수

데이터 볼륨 단위를 계산하기 위해 2의 제곱수의 최소단위는 1바이트(8비트)

2의 x제곱 근사치 이름 축약형
10 1천 1킬로바이트(Kilobyte) 1KB
20 1백만 1메가바이트(Megabyte) 1MB
30 10억 1기가바이트(Gigabyte) 1GB
40 1조(trilion) 1테라바이트(Terabyte) 1TB
50 1000조(quadrillion) 1페타바이트(Petabyte) 1PB

 

응답지연 값

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

 

수치 분석 결론

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

가용서에 관계된 수치들

고가용성 (high avaliability)

: 시스템이 오랜 시간동안 지속적으로 중단 없이 운영될 수 있는 능력

100%는 시스템이 단 한 번도 중단된 적이 없었음을 의미한다.

대부분의 서비스는 99%에서 100% 사이의 값을 갖는다.

 

가용시간은 관습적으로 숫자 9를 사용해 표시한다.

9가 많으면 많을수록 좋다고 보면 된다.

가용률 시간 하루당 장애시간 연간 장애시간
99% 14.40분 3.65일
99.9% 1.44분 8.77시간
99.99% 8.64초 52.60분
99.999% 864.00밀리초 5.26분

9의 개수와 시스템 장애시간(downtime) 사이의 관계

 

개략적인 규모 추정과 관계된 면접에서 가장 중요한 것은 문제를 풀어나가는 절차이다.

올바른 절차를 밟느냐가 결과를 내는 것보다 중요하다. 면접자가 보고 싶어하는 것은 문제 해결 능력이다.

  • 근사치(rounding and approximation)를 활용한 계산을 해자. 근사치로 계산시간을 줄이자.
  • 나중에 살펴볼 수 있도록 가정(assumption)을 적어두자.
  • 단위(unit)를 붙이자. 단위를 붙이는 습관
  • 많이 출제되는 개략적 규모 추정 문제는 QPS(Query Per Second), 최대 QPS, 저장소 요구량, 캐시 요구량, 서버 수 등을 추정하는 것이다.