---
description: 2장. 개략적인 규모 추정
---

# 2.Back-of-the-envelope estimation

개략적인 규모 추정은 보편적으로 통용되는 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위로서, 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것입니다.



## 2의 제곱수

데이터 저장과 전송에서 효율성을 높이기 위해 2의 제곱수 개념이 자주 사용됩니다.

<figure><img src="https://2804243633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfV6clXG953LqFieNgWUf%2Fuploads%2FSrV5SUlNVmuO1K2aeBxA%2Fimage.png?alt=media&#x26;token=b593160e-5bb5-40dd-9b40-0771b2ee7859" alt=""><figcaption></figcaption></figure>

## 모든 프로그래머가 알아야 하는 응답지연 값

다양한 컴퓨팅 작업에 대한 지연 시간을 이해하면 시스템 성능 최적화에 도움이 됩니다.

<figure><img src="https://2804243633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfV6clXG953LqFieNgWUf%2Fuploads%2FhW3rRYYZ719QTJ9H8u8O%2Fimage.png?alt=media&#x26;token=f66389ac-153c-489c-a2bb-f208ea8ea8ed" alt=""><figcaption></figcaption></figure>

* 메모리는 빠르지만 디스크는 느리다.
* 디스크 탐색은 가능한 피해라.
* 단순한 압축 알고리즘은 빠르다
* 데이터를 인터넷으로 전송하기 전에 가능하면 압축하라
* 데이터 센터는 보통 여러 지역에 분산되어 있고, 센터들 간에 데이터를 주고받는 데는 시간이 걸린다.



## 가용성에 관계된 수치들

시스템 가용성(availability)은 시스템이 얼마나 신뢰성 있게 동작하는지를 나타내는 지표입니다. 일반적으로 가용성은 "구간 시간 동안 시스템이 정상적으로 작동하는 비율"로 정의됩니다.&#x20;

**가용성(%) = (가동 시간 / 총 시간) × 100**

<figure><img src="https://2804243633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfV6clXG953LqFieNgWUf%2Fuploads%2Fv9q7Rtuerj8DjEo6zjWw%2Fimage.png?alt=media&#x26;token=268a41f4-de12-43b7-8ed0-9de874fad744" alt=""><figcaption></figcaption></figure>

## 예제: 트위터 QPS와 저장소 요구량 추정

### 가정

* Monthly Active User = 300,000,000
* 50%의 사용자가 매일 사용한다.
* 유저당평균적으로 2개의 트윗을 보낸다.
* 미디어를 포함하는 트윗은 10% 정도다.
* 데이터는 5년간 보관된다.
* 평균 트윗 크기
  * tweet\_id: 64바이트
  * 텍스트: 140바이트
  * 미디어: 1MB

### 추정

QPS 추정치

DAU = MAU x 50% = 150,000,000

QPS = 150,000,000 x 2트윗 / 24 / 3600 = 초당  약 3500 쿼리

최대  Peek QPS = 2 x QPS = 약 7000

미디어 저장소 요구량 = 150,000,000 x 2 x 10% x 1MB = 30TB/일.

5년치 필요 저장 공간 = 30TB \* 365 \* 5 = 약55PB

### 참고

Peek QPS: 최대 요청 수. 특정 이벤트나 시간대에 트래픽이 집중되는데, 최악의 시나리오를 고려하여 보통 x2를 합니다.

QPS: 평균 요청 수





