시스템 용량이나 성능 요구사항을 개략적으로 추정하기
개략적 규모 추정을 효과적으로 해 내려면 규모 확장성을 표현하는데 필요한 기본기에 능숙해야 한다.
특히 2의 제곱수나 응답지연(latency) 값, 그리고 가용성에 관계된 수치들을 기본적으로 잘 이해해야 한다.

 

2의 제곱수

데이터 볼륨의 단위를 2의 제곱수로 표현하면 어떻게 되는지 알아야 정확한 데이터의 양을 측정할 수 있다.
최소단위는 1바이트, 8비트로 구성

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

구글의 제프 딘은 2010년 통상적인 컴퓨터에서 구현된 연산들의 응답지연 값을 공개하였다.
한 구글 엔지니어는 이 수치를 쉽게 시각화하는 도구를 개발하였다.
이하 그림은 이 도구를 사용해 2020년 기준으로 시각화한 수치이다.

위 수치로 알 수 있는 사실

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

 

가용성에 관계된 수치들

고가용성(high availability)란?

  • 시스템이 오랜 시간 동안 중단 없이 운영될 수 있는 능력을 지칭하는 용어
  • percent로 표현 - 100%는 시스템이 단 한 번도 중단된 적이 없었음을 의미
  • 대부분의 서비스는 99% ~ 100% 사이의 값

SLA(Service Level Agreement)란?

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

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

트위터 시스템을 가정하여 QPS(초당 처리 쿼리)와 비례해 요구되는 저장소의 용량을 구하라.

 

가정

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

추정

QPS(Query Per Second) 추정치

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

  • 근사치를 이용한 계산(rounding and approximation)
    • "99987 / 9.1" -> "100,000 / 10"
  • 가정(assumption)들은 나중에 살펴볼 수 있도록 적어 두라.
  • 단위(unit)을 붙이라. 5 -> 5KB, 5MB 등
  • QPS, 최대 QPS, 저장소 요구량, 캐시 요구량, 서버 수 추정 등이 자주 요구됨