데이터 양은 엄청나게 커질 수 있으나 그 계산법은 기본을 크게 벗어나지 않는다
제대로된 계산을 하려면 데이터 볼륨의 단위를 2의 제곱수로 표현하면 어떻게 되는지를 우선 알아야 한다.
최소 단위는 1바이트(8비트)이고, 아스키 문자 하나가 차지하는 메모리 크기가 1바이트이다.
아래 표는 흔히 쓰이는 데이터 볼륨 단위들이다.
| 2의 x 제곱 | 근사치 | 이름 | 축약형 |
|---|---|---|---|
| 10 | 1천 (thousand) | 킬로바이트 (Kilobyte) | 1 KB |
| 20 | 1백만 (million) | 메가바이트 (Megabyte) | 1 MB |
| 30 | 10억 (billion) | 기가바이트 (Gigabyte) | 1 GB |
| 40 | 1조 (trillion) | 테라바이트 (Terabyte) | 1 TB |
| 50 | 1000조 (quadrillion) | 페타바이트 (Petabyte) | 1 PB |
이 수치들은 컴퓨터 연산들의 처리 속도가 어느 정도인지 짐작할 수 있도록 해준다.
| 연산명 | 시간 |
|---|---|
| L1 캐시 참조 | 0.5 ns |
| 분기 예측 오류 (branch mispredict) | 5 ns |
| L2 캐시 참조 | 7 ns |
| 뮤텍스(mutex) 락/언락 | 100 ns |
| 주 메모리 참조 | 100 ns |
| Zippy로 1 KB 압축 | 10,000 ns = 10 µs |
| 1 Gbps 네트워크로 2 KB 전송 | 20,000 ns = 20 µs |
| 메모리에서 1 MB 순차 읽기 | 250,000 ns = 250 µs |
| 같은 데이터 센터 내 메시지 왕복 지연시간 | 500,000 ns = 500 µs |
| 디스크 탐색 (seek) | 10,000,000 ns = 10 ms |
| 네트워크에서 1 MB 순차 읽기 | 10,000,000 ns = 10 ms |
| 디스크에서 1 MB 순차 읽기 | 30,000,000 ns = 30 ms |
| 패킷의 캘리포니아 → 네덜란드 왕복 지연시간 | 150,000,000 ns = 150 ms |
ns = nanosecond (나노초, 10⁻⁹초)
µs = microsecond (마이크로초, 10⁻⁶초 = 1,000 ns)
ms = millisecond (밀리초, 10⁻³초 = 1,000,000 ns)
그리고 아래 그림은 최근 기술 동향이 반영되어 있다. 2020년 기준으로 시각화한 수치이다.

위를 분석하면
시스템이 오랜 시간 동안 지속적으로 중단 없이 운영될 수 있는 능력을 말한다.
고가용성은 %로 표현하고, 100%는 시스템이 단 한 번도 중단된 적이 없었음을 의미한다.
대부분의 서비스는 99%~100% 사이의 값을 가진다.
서비스 사업자가 보통 사용한다. 서비스 사업자와 고객 사이에 맺어진 합의를 의미한다.
그리고 SLA에는 서비스 사업자가 제공하는 서비스의 가용시간이 기술되어 있음.
아마존, 구글, 마소 같은 사업자는 99%이상의 SLA를 제공하고, 가용시간은 관습적으로 숫자 9를 사용해 표시한다. 9가 많을 수록 좋다.(ex) 99.999..9%)
아래는 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, 최대 QPS, 저장소 요구량, 캐시 요구량, 서버 수 등을 추정하는 것이므로 연습해두자.
유익한 글이에요. 잘 읽고갑니다 ~ ^^