개략적인 규모 추정은 보편적으로 통용되는 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위로서, 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것이다.
Google Pro Tip: Use Back-Of-The-Envelope-Calculations To Choose The Best Design
개략적 규모 추정을 효과적으로 해 내려면 규모 확장성을 표현하는 데 필요한 기본기에 능숙해야 한다. 특히 2의 제곱수나 latency 값, 그리고 가용성에 관계된 수치들을 기본적으로 잘 이해하고 있어야 한다.
연산명 | 시간 |
---|---|
L1 캐시 참조 | 0.5ns |
분기 예측 오류 | 5ns |
L2 캐시 참조 | 7ns |
mutex lock/unlock | 100ns |
주메모리 참조 | 100ns |
snappy로 1KB 압축 | 10,000ns |
1Gbps 네트워크로 2kb 전송 | 10,000ns = 10µs |
메모리에서 1MB 순차적으로 read | 250,000ns = 250µs |
같은 데이터 센터 내에서의 메시지 왕복 지연시간 | 500,000ns= 500µs |
디스크 탐색 | 10,000,000ns = 10ms |
네트워크에서 1MB 순차적으로 read | 10,000,000ns = 10ms |
디스크에서 1MB 순차적으로 read | 30,000,000ns = 30ms |
한 패킷의 캘리포니아로부터 네덜란드까지의 왕복 지연시간 | 150,000,000ns = 150ms |
Latency Numbers Every Programmer Should Knox
gzip
가용률 | 하루당 장애시간 | 주당 장애시간 | 개월당 장애시간 | 연간 장애시간 |
---|---|---|---|---|
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초 |
왜 최대는 2로 잡히는가?
DAU를 MAU의 50%로 잡았으니까
알렉스 쉬, 가상 면접 사례로 배우는 대규모 시스템 설계 기초, 인사이트, 2021, 33p-38p