# 개략적인 규모 추정

- 개략적인 규모 추정은

    - 보편적으로 통용되는 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위

    - 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것

- 개략적인 규모 추정을 효과적으로 하려면

    - 규모 확장성을 표현하는데 익숙해야 함

    - 특히 2의 제곱수나 응답지연값, 그리고 고가용성(HA)에 관계된 수치들을 알아야함

---

- 1 바이트 = 8 비트 = ASCII 문자 하나

- 모든 프로그래머가 알아야 하는 응답지연 값 (2020)

    - 메모리는 빠르지만 디스크는 아직도 느리다.

    - 디스크 탐색은 가능한 피하자 (SSD: 16{\mu s}, Disk: 2ms)

    - 단순 압축 알고리즘은 빠르다 (2{\mu s})

    - 데이터를 인터넷으로 전송하기 전에 가능하면 압축하라

    - 데이터 센터는 보통 여러 지역에 분산되어 있어, 센터들 간에 데이터를 주고받는 데 시간이 걸린다.

⇒ 멀티 리전 데이터베이스의 일관성 문제는 불가피함

![Image](https://upload.cafenono.com/image/slashpageHome/20240820/134321_GjZKNIEzH7i8Z9LdJ6?q=80&s=1280x180&t=outside&f=webp)

---

- 고가용성(high availability, HA)

    - 시스템이 오랜 시간동안 지속적으로 중단 없이 운영될 수 있는 능력

    - SLA(Service Level Agreement) : 서비스 사업자와 고객 사이에 맺어진 합의

    - 가용률 99.99% : 전체 시간의 0.01% 미만, 즉 하루 최대 8.64초까지의 다운타임은 허용

## 규모 추정 문제

### 문제 1: 유튜브

유튜브는 매일 얼마만큼의 저장 용량을 필요로 할까요? (Estimate YouTube’s daily video storage requirements)

**가정**

- 일일 사용자는 10억 명이고 그 중 1/1000의 사람이 동영상을 올린다.

- 동영상은 평균 10분 길이이다.

- 2시간짜리 동영상의 최대 크기는 2GB이다.

- 동영상의 해상도별 용량은 1, 1/2, 1/4, 1/8, … 이다.

**추정**

- 일일 총 동영상 길이 : \frac{10^9}{1000} \times 10 = 10^7 분

- 일일 총 동영상 용량 : 10^7 \times \frac {2GB}{2 \times 60} \approx 160\;TB

- 해상도를 고려한 일일 총 용량 : 160\;TB \times ( 1 + \frac{1}{2} + \frac{1}{4} + \frac{1}{8} + \frac{1}{16}) \approx 160\;TB \times 2 = 0.32\;PB

**발전**

- 동영상 용량 = 사진 한 장 용량 x 영상 길이 x 분당 프레임

- 실제 유튜브에 업로드되는 동영상 길이는 분당 600시간임

- 우리의 계산값은 분당 115시간으로 근접함

### 참고 자료

1. **Latency Numbers Every Programmer Should Know - **[https://colin-scott.github.io/personal_website/research/interactive_latency.html](https://colin-scott.github.io/personal_website/research/interactive_latency.html)

2. **Capacity Planning and Estimation: How much data does YouTube store daily? - **[https://youtu.be/0myM0k1mjZw](https://youtu.be/0myM0k1mjZw)

For the site tree, see the [root Markdown](https://slashpage.com/kaonmir.md).
