보편적으로 통용되는 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위로서, 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것
개략적 규모 추정을 하기 위해 보편적으로 사용되는 수치들을 이해할 필요가 있다.
데이터 볼륨의 단위를 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 |
이를 시각화한 도구
결론
본 포스트는 알렉스 쉬 저자의 가상 면접 사례로 배우는 대규모 시스템 설계 기초를 기반으로 스터디하며 정리한 내용들입니다.