개요
개략적인 규모 추정(back-of-the-envelope estimation)은 보편적인 성능 수치상에서 사고 실험(thought experience)을 수행해 추정치를 계산하는 행위이다. 이를 요구사항에 어떤 설계가 부합할 것인지 알아볼 수 있다.
2의 제곱수
분산 시스템에서는 다루는 데이터 양이 엄청나게 커질 수 있으니, 데이터를 2의 제곱수로 표현하면 어떻게 되는지 알고 있어야한다.
데이터의 최소 단위는 1 byte이고, 8 bit로 구성된다. ASCII 문자 하나가 메모리에서 1바이트 크기만큼 차지한다.
응답지연 값
위 표는 2010년의 값으로 더 이상 유효하지 않지만, 이러한 일반적인 응답지연 값을 통해 컴퓨터들의 연산 처리 속도를 어느 정도인지 짐작할 수 있다.
위는 2020년 한 구글 엔지니어가 시각화한 응답지연 값 수치이다.
위 수치들을 통해 우리는 다음과 같은 사실을 알 수 있다.
•
메모리는 빠르고 디스크는 느리다. 디스크 탐색은 가능한 피하자.
•
단순 압축 알고리즘은 빠르다. 데이터를 인터넷으로 전송하기 전에 가능하면 압축하자.
•
데이터 센터는 여러 지역(region)에 분산되어 있고, 센터들 간에 데이터 주고 받는데 시간이 걸린다.
가용성에 관계된 수치들
고가용성(high availability)은 시스템이 오랜 시간 지속적으로 중단 없이 운영될 수 있는 능력을 지칭한다. 고가용성은 퍼센트로 표현하는데, 대부분의 서비스는 99%에서 100% 사이의 값을 갖는다.
예제: 트위터 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(Peak QPS) = 2 × QPS = 약 7000
미디어 저장을 위한 저장소 요구량
•
평균 트윗 크기
◦
tweet_id에 64바이트
◦
텍스트에 140바이트
◦
미디어에 1MB
저장소 요구량 계산
•
미디어 저장소 요구량 = 1.5억 × 2 × 10% × 1MB = 30TB/일
•
5년간 미디어를 보관하기 위한 저장소 요구량: 30TB × 365 × 5 = 약 55PB
팁
이러한 개략적인 규모 추정과 관계된 면접에서 가장 중요한건 문제를 풀어나가는 절차다. 이에 도움될 몇 가지 팁이 있다.
•
9986/9.1과 같은 계산에 집착하지말고, 10000/10과 같이 근사치를 활용해 간소화하여 계산하여 시간을 아끼자
•
가정(assumption)은 나중에 살펴볼 수 있게 적어두자.
•
단위(unit)를 붙여 모호함을 방지하자.
•
많이 출제되는 개략적 규모 추정 문제는 QPS, 최대 QPS, 저장소 요구량, 캐시 요구량, 서버 수 등을 추정하기이다.



