보편적으로 통용되는 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위로서, 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것
개략적 규모 추정을 하기 위해 보편적으로 사용되는 수치들을 이해할 필요가 있다.
데이터 볼륨의 단위를 2의 제곱수로 표현하는 수치에 익숙해져야한다.
| 2의 x제곱 | 근사치 | 이름 | 축약형 |
|---|---|---|---|
| 10 | 1천 | 1Kilobyte | 1KB |
| 20 | 1백만 | 1Megabyte | 1MB |
| 30 | 10억 | 1Gigabyte | 1GB |
| 40 | 1조 | 1Terabyte | 1TB |
| 50 | 1000조 | 1Petabyte | 1PB |
구글 제프 딘이 2010년에 공개한 통상적인 컴퓨터에서 구현된 연산들의 응답지연 값
| 연산명 | 시간 |
|---|---|
| L1 캐시 참조 | 0.5ns |
| 분기 예측 오류(branch mispredict) | 5ns |
| L2 캐시 참조 | 7ns |
| 뮤텍스(mutex) 락/언락 | 100ns |
| 주 메모리 참조 | 100ns |
| Zippy로 1 KB 압축 | 10,000ns = 10us |
| 1 Gbps 네트워크로 2 KB 전송 | 20,000ns = 10us |
| 메모리에서 1 MB 순차적으로 read | 250,000ns = 250us |
| 같은 데이터 센터 내에서 메시지 왕복 지연시간 | 500,000ns = 500us |
| 디스크 탐색(seek) | 10,000,000ns = 10ms |
| 네트워크에서 1 MB 순차적으로 read | 10,000,000ns = 10ms |
| 디스크에서 1 MB 순차적으로 read | 30,000,000ns = 30ms |
| 한 패킷의 CA(캘리포니아)로부터 네덜란드까지의 왕복 지연 시간 | 150,000,000ns = 150ms |
이를 시각화한 도구

결론

본 포스트는 알렉스 쉬 저자의 가상 면접 사례로 배우는 대규모 시스템 설계 기초를 기반으로 스터디하며 정리한 내용들입니다.