📗 개발자 책 읽기/가상 면접 사례로 배우는 대규모 시스템 설계 기초

[System Design Interview] 02. 개략적인 규모 측정

민돌v 2022. 12. 28. 19:21
728x90
가상 면접 사례로 배우는 대규모 시스템 설계 기초 (System Design Interview) - 저 : 알렉스 쉬, 역 : 이병준 을 읽고 정리한 글입니다.

 

2장의 내용은 아직 아는게 적어서 그런것인지 내용도 많지 않고 크게 와닿지 않아, 짧게 정리합니다.

  • 개략적인 규모 추정을 효과적으로 하는데 필요한 기본기

 

 

[목차]

개략적인 규모 추정

  1. 2의 제곱수
  2. 응답지연 값
  3. 가용성에 관계된 수치들
  4. 트위터 시스템 설계 예시

 


📌 2장 - 개략적인 규모 추정

1. 개략적인 규모 추정(back-of-the-envelope estimation)이란

  • 보편적으로 통용되는 성능 수치상에서 사고 실험(thought experiments)를 행하여 추정치를 계산하는 행위
  • 즉, 어떤 설계가 요구사항에 부합할 것인지를 보기 위한 것

 

ex) 트위터 시스템을 설계해주세요, 뉴스 피드 시스템을 설계해주세요


 

2. 2의 제곱수

  • 제대로 된 분산 시스템 데이터 계산 결과를 얻으려면 데이터 볼륨의 단위를 2의 제곱수로 표현하는 방법을 알아야 한다.
  • 최소 단위는 1바이트이며, 8비트로 구성된다.


3. 응답 지연 값 (latency)

  • 구글의 제프 딘이 2010년에 「통상적인 컴퓨터에서 구현된 연산들의 응답지연값」을 공개하였다.
  • 더 빠른 컴퓨터가 등장하면서 더 이상 유효하지 않은 값도 있지만, 여전히 컴퓨터 연산들의 처리 속도가 어느 정도인지 짐작할 수 있도록 해준다.

2020 년 기준으로 시각화한 표

 


 

4.  가용성에 관계된 수치들

 

고가용성이란 (high availability) 

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

 

SLA(Service Level Agreement 란

  • 서비스 사업자가 보편적으로 사용하는 용어로,서비스 사업자와 고객 사이에 맺어진 합의를 의미한다.
  • 이 합의에는 서비스 사업자가 제공하는 서비스의 가용시간이 공식적으로 기술되어 있다.
  • 아마존, 구글, 마이크로소프트 같은 사업자는 99% 이상의 SLA를 제공한다.
  • 가용시간은 관습적으로 숫자 9를 사용해 표시한다.
  • 9가 많으면 많을수록 좋다고 생각하면 된다.

 


5. 트위터 QPS와 저장소 요구량 추정

  • 트위터의 시스템을 가정하여 QPS (초당 처리 쿼리) 와 요구되는 저장소 용량을 구해보자!

가정

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

 

추정

QPS(Query Per Second) 추정치

  • 일간 능동 사용자(Daily Active User, DAU) = 3억 X 50% = 1.5억(150million)
  • QPS = 1.5억 X 2트윗/24시간/3600초 = 약 3500
  • 최대 QPS(Peek QPS) = 2 X QPS = 약 7000

 

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

  • 평균 트윗 크기
    • tweet_id에 64바이트
    • 텍스트에 140바이트
    • 미디어에 1MB
  • 미디어 저장소 요구량: 1.5억 X 2 X 10% X 1MB = 30TB/일
  • 5년간 미디어를 보관하기 위한 저장소 요구량: 30TB X 365 X 5 = 약 55PB

 

 

 

 

끝!!

 

 

가상 면접 사례로 배우는 대규모 시스템 설계 기초

 

 

참고 : https://velog.io/@mmy789/System-Design-4

반응형