책 리뷰

[가상 면접 사례로 배우는 대규모 시스템 설계 기초]2. 개략적인 규모 추정

punch.pro 2023. 5. 15. 17:47

https://product.kyobobook.co.kr/detail/S000001033116

 

가상 면접 사례로 배우는 대규모 시스템 설계 기초 | 알렉스 쉬 - 교보문고

가상 면접 사례로 배우는 대규모 시스템 설계 기초 | “페이스북의 뉴스 피드나 메신저,유튜브, 구글 드라이브 같은 대규모 시스템은 어떻게 설계할까?” IT 경력자라도 느닷없이 대규모 시스템

product.kyobobook.co.kr

1장 사용자 수에 따른 규모 확장성 : https://inhyeok-blog.tistory.com/40
2장 개략적인규모추정 : https://inhyeok-blog.tistory.com/41
3장 시스템 설계 면접 공략법 : https://inhyeok-blog.tistory.com/42
4장 처리율제한장치의설계 : https://inhyeok-blog.tistory.com/43
5장 안정해시설계 : https://inhyeok-blog.tistory.com/44
6장 키-값저장소설계 : https://inhyeok-blog.tistory.com/45
7장 분산시스템을위한유일 ID 생성기설계 : https://inhyeok-blog.tistory.com/46
8장 URL 단축기설계 : https://inhyeok-blog.tistory.com/47
9장 웹크롤러설계 : https://inhyeok-blog.tistory.com/48
10장알림시스템설계 : https://inhyeok-blog.tistory.com/49
11장뉴스피드시스템설계 : https://inhyeok-blog.tistory.com/50
12장채팅시스템설계 : https://inhyeok-blog.tistory.com/51
13장검색어자동완성시스템 : https://inhyeok-blog.tistory.com/52
14장유튜브설계 : https://inhyeok-blog.tistory.com/53
15장구글드라이브설계 : https://inhyeok-blog.tistory.com/54

 

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

 

실제 시스템을 설계할 때 숫자를 확인하면서 설계를 하는 것은 아주 중요한 일이다. 예컨데, RabbitMQ을 사용해야 할 상황과 Kafka를 사용해야 할 상황을 구분하기 위해서는 초당 몇건의 요청이 들어오는지에 달렸다. 또한 유일ID 생성기를 설계할 때도, DB다중화 전략을 잡을 때도 모두 예상하는(또는 목표하는)요청의 숫자에서 시작해야 한다. 또한 규모 추정을 통해서 비용을 계산할 수도 있다. 비용 계산은 비즈니스의 일부로서의 개발을 바라봤을 때 개발보다 중요한 요소일수도 있다.  

 

세부적인 데이터에 관한 내용은  블로그에 작성할 내용은 아닌 것 같으므로, 책에 있는 예시만 언급하고 넘어가겠다.

 

다음과 같은 상황의 개략적인 규모를 추정해보자.

가정

- 월간 능동 사용자(MAU) = 3억

- 50%는 매일 트위터를 사용한다.

- 평균적으로 각 사용자는 매일 2건의 트윗을 올린다.

- 미디어를 포함하는 트윗은 10% 정도이다.

- 데이터는 5년간 보관된다.

 

추정 

QPS(Query Per Second) 추정치

- 일간 능동 사용자(DAU) = 3억 * 50% = 1.5억

- QPS=1.5억 * 2트윗 / 24시간 / 3600초 = 3500

- 최대 QPS(Peek QPS) = 2 * QPS = 약 7000

미디어 저장을 위한 저장소 요구량

- 평균 트윗 크기

   - tweet_id에 64바이트

   - 텍스트에 140바이트

   - 미디어에 1MB

- 미디어 저장소 요구량: 1.5억 * 2 * 10% * 1MB = 30TB/일

- 5년간 미디어를 보관하기 위한 저장소 요구량: 30TB * 365 * 5 = 55PB