-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 2장) 개략적인 규모 추정DESIGN PATTERN & ARCHITECTURE 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, 저장소 요구량, 캐시 요구량, 서버 수 등을 측정하는 것
'DESIGN PATTERN & ARCHITECTURE' 카테고리의 다른 글
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 4장) 처리율 제한 장치의 설계 (0) 2024.10.22 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 3장) 시스템 설계 면접 공략법 (1) 2024.10.21 가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 1장) 사용자 수에 따른 규모 확장성 (2) 2024.10.21 도메인 주도 개발 시작하기 CH.8 ~ CH.9 (1) 2024.07.03 도메인 주도 개발 시작하기 CH.6 ~ CH.7 (0) 2024.06.26