📚 Study

[System Design] 2. 개략적인 규모 추정

date
Jul 5, 2023
slug
book-system-design-interview-2
author
status
Public
category
📚 Study
tags
Book
Server
summary
시스템 용량이나 성능 요구사항을 개략적으로 추정하기 위한 기본기 다지기
type
Post
thumbnail
ㅁㄴㅇ.png
notion image
📚
Alex Zu, <System Design Interview(가상 면접 사례로 배우는 대규모 시스템 설계 기초)>를 읽고 정리한 글입니다.

2의 제곱수

2^10 곱할 때마다 1000씩 곱해진다 : 1천 → 1백만 → 10억 → 1조 → 1000조

최소단위 = 1바이트 = 8비트 = ASCII 문자 하나의 메모리 크기
2의 x제곱
근사치
이름
축약형
10
1천 = 1k
1킬로바이트
1KB
20
1백만 = million
1메가바이트
1MB
30
10억 = billion
1기가바이트
1GB
40
1조 = trillion
1테라바이트
1TB
50
1000조 = quadrillion
1페타바이트
1PM
 

응답지연 값

응답지연값으로 컴퓨터 연산의 처리 속도를 알 수 있다.

notion image
notion image
 
수치들을 분석하면 다음과 같은 결론이 나온다.
  • 메모리는 빠르지만 디스크는 아직도 느리다
  • 디스크 탐색(seek)은 가능한 한 피하라.
  • 단순한 압축 알고리즘은 빠르다.
  • 데이터를 인터넷으로 전송하기 전에 가능하면 압축하라.
  • 데이터 센터는 보통 여러 지역에 분산되어 있고, 센터들 간에 데이터를 주고받는 데는 시간이 걸린다. 따라서 센터들 간의 데이터 전송비용은 비싸다.
 

가용성 수치

대부분의 서비스는 99%에서 100% 사이의 가용률을 가진다.

고가용성(high availability)은 시스템이 오랜 시간 동안 지속적으로 중단 없이 운영될 수 있는 능력을 지칭하는 용어다. 고가용성을 표현하는 값은 퍼센트로 표현한다. 100%는 시스템이 단 한 번도 중단된 적이 없었음을 의미한다. 대부분의 서비스는 99%에서 100% 사이의 값을 갖는다.
 

9의 개수와 시스템 장애 시간(downtime) 사이의 관계

notion image
 

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

가정

  • 월간 능동 사용자(monthly active user)는 3억(300million)명이다.
  • 50%의 사용자가 트위터를 매일 사용한다.
  • 평균적으로 각 사용자는 매일 2건의 트윗을 올린다.
  • 미디어를 포함하는 트윗은 10% 정도다.
  • 데이터는 5년간 보관된다.

QPS(Query Per Second) 추정

  • 일간 능동 사용자(Daily Active User, DAU) = 3억 % 50% = 1.5억(150milion)
  • 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
 

개략적인 규모 추정과 관계된 면접에서 가장 중요한 것은 문제를 풀어 나가는 절차다. 올바른 절차를 밟느냐가 결과를 내는 것보다 중요하다.

근사치를 활용하여 계산하라.

계산 결과의 정확함을 평가하려는 것이 아니므로, 적절한 근사치를 활용하여 시간을 절약하자.
99,987/9.1 ≈ 100,000/10 으로 근사할 수 있다.

가정을 적어 두고, 나중에 다시 살펴볼 수 있도록 하라.

헷갈리지 않도록 단위(unit)를 붙이는 습관을 들여라.

많이 출제되는 개략적 규모 추정 문제

QPS, 최대 QPS, 저장소 요구량, 캐시 요구량, 서버 수 추정 등