DESIGN PATTERN & ARCHITECTURE
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 2장) 개략적인 규모 추정
dodop
2024. 10. 21. 23:14
개략적인 규모 추정
- 어떤 설계가 시스템의 요구 사항에 부합하는지 보기 위한 지표로 성능 추정에 사용됨
2의 제곱수
- 데이터 볼륨의 단위를 2의 제곱수로 표현
- 최소 단위 = 1바이트 = 8비트 = ASCII문자 하나가 차지하는 메모리 크기
- UTF-8의 경우 1~4바이트
- 최소 단위 = 1바이트 = 8비트 = ASCII문자 하나가 차지하는 메모리 크기
2의 제곱수 | 근사치 | 이름 | 축약형 |
10 | 1천 | 1킬로바이트 | 1KB |
20 | 1백만 | 1메가바이트 | 1MB |
30 | 10억 | 1기가바이트 | 1GB |
40 | 1조 | 1테라바이트 | 1TB |
50 | 1000조 | 1페타바이트 | 1PB |
응답 지연 값
연산명 | 시간 |
L1 캐시 참조 | 0.5ns |
분기 예측 오류 (branch mispredict) | 5ns |
L2 캐시 참조 | 7ns |
뮤텍스 락 / 언락 | 100ns |
주 메모리 참조 | 100ns |
Zippy로 1KB 압축 | 10000ns = 10us |
1Gbps 네트워크로 2KB 전송 | 20000ns = 20us |
메모리에서 1MB 순차적으로 read | 250000ns = 250us |
같은 데이터 센터 내에서의 메세지 왕복 지연 시간 | 500000ns = 500us |
디스크 탐색 (seek) | 10000000ns = 10ms |
네트워크에서 1MB 순차적으로 read | 10000000ns = 10ms |
디스크에서 1MB 순차적으로 read | 30000000ns = 30ms |
한 패킷의 CA(캘리포니아)로부터 네덜란드까지의 왕복 지연 시간 | 150000000ns = 150ms |
- 메모리는 빠르지만 디스크는 느림
- 디스크 탐색은 가능한 피할 것
- 단순한 압축 알고리즘은 빠름
- 데이터를 인터넷으로 전송하기 전에 가능하면 압축할 것
- 데이터 센터는 보통 여러 지역에 분산 되어 있고 센터들 간에 데이터를 주고받는 데는 시간이 소요됨
가용성에 관계된 수치들
- 고가용성 (%)
- 시스템이 오랜 시간 동안 지속적으로 중단 없이 운영될 수 있는 능력
- 대부분의 서비스는 99% ~ 100% 사이의 값을 가짐
- SLA = Service Level Agreement
- 아마존, 구글, 마이크로소프트 같은 사업자는 99% 이상의 SLA 제공
- 9가 많을 수록 좋음
가용률 | 하루당 장애시간 | 주당 장애시간 | 개월당 장애시간 | 연간 장애시간 |
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 (Query Per Second)
- 일간 능동 사용자 = 3억 x 50% = 1.5억명
- QPS = 1.5억 x 2트윗 / 24시간 / 3600초 = 약 3500
- 최대 QPS(Peek QPS) = 2 x QPS = 약 7000
- 미디어 저장을 위한 저장소 요구량
- 평균 트윗 크기
- tweet_id = 64bytes
- 텍스트 = 140bytes
- 미디어 = 1MB
- 미디어 저장소 요구량
- 1.5억 x 2 x 10% x 1MB = 30TB / 일
- 5년간 미디어 보관을 위한 저장소 요구량
- 30TB x 365 x 5 = 약 55PB
- 평균 트윗 크기
- QPS (Query Per Second)
팁
- 올바른 절차를 밟느냐가 결과를 내는 것보다 중요
- 문제 해결 능력
- 근사치를 활용하여 계산 시간을 줄일 것
- 가정들은 적어둘 것
- 나중에 도움을 받기 위해
- 단위를 붙일 것
- 개략적 규모 추정 문제는 QPS, 저장소 요구량, 캐시 요구량, 서버 수 등을 측정하는 것