002 System Size Estimation

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

2장. 개략적인 규모 추정 #

개요 #

시스템 용량이나 성능 요구사항을 개략적으로 추정

  • 개략적인 규모 추정(back-of-the-enveope estimation) : 보편적으로 통용되는 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위
    • 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것
  • 효과적인 개략적 규모 추정을 위해서는 규모 확장성을 표현하는 데 필요한 기본기에 능숙해야 한다.

2의 제곱수 #

분산 시스템에서 다루는 데이터 양은 엄청나게 커질 수 있으나 그 계산법은 기본을 크게 벗어나지 않는다. 제대로된 계산 결과를 얻으려면 데이터 볼륨의 단위를 2의 제곱수로 표현하면 어떻게 되는지를 우선 알아야한다.

  • 최소 단위는 1바이트이고, 8비트로 구성된다.
  • ASCII 문자 하나가 차지하는 메모리 크기가 1바이트이다. img.png

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

컴퓨터에서 구현된 연산들의 응답지연 값 #

img_1.png

위의 표를 시각화한 수치 #

img_2.png

위 이미지에 제시된 수치들을 분석하면 다음과 같은 결론이 나온다.

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

가용성에 관계된 수치들 #

  • 고가용성(high availability)
    • 시스템이 오랜 시간 동안 지속적으로 중단 없이 운영될 수 있는 능력을 지칭하는 용어
    • 고가용성을 표현하는 값은 퍼센트(percent)로 표현하는데, 100%는 시스템이 단 한번도 중단된 적이 없었음을 의미한다.
    • 대부분의 서비스는 99%에서 100% 사이의 값을 갖는다.
  • SLA(Service Level Agreement)
    • 서비스 사업자(service provider)가 보편적으로 사용하는 용어로, 서비스 사업자와 고객 사이에 맺어진 합의
    • 이 합의에는 서비스 사업자가 제공하는 서비스의 가용시간(uptime)이 공식적으로 기술되어 있다.
    • 가용 시간은 관습적으로 숫자 9를 사용해 표시한다.
      • 9가 많을수록 좋다고 보면 된다.

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

img_3.png

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

가정 #

  • MAU : 300,000,000 (3억)
  • 50% 사용자가 매일 사용
  • 평균적으로 각 사용자는 매일 2건의 트윗을 올림
  • 미디어를 포함하는 트윗은 10%
  • 데이터는 5년간 보관

추정 #

  • QPS 추정치
    • DAU : 300,000,000 * 50% = 150,000,000 (1.5억)
    • QPS : 150,000,000 * 2(tweet)/24(hour)/3600(second) = 3472.2 (약 3500)
    • 최대 QPS(Peek QPS) : 2 * QPS = 6944 (약 7000)
  • 미디어 저장을 위한 저장소 요구량
    • 평균 트윗 크기
      • tweet_id : 64 Byte
      • text : 140 Byte
      • Media : 1MB
    • 미디어 저장소 요구량 : 150,000,000 2 / 10 1MB = 30TB/일
    • 5년간 미디어 보관하기 위한 저장소 요구량 : 30TB 365 5 = 약 55 PB

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