시스템 용량이나 성능 요구사항을 개략적으로 추정하기
개략적 규모 추정을 효과적으로 해 내려면 규모 확장성을 표현하는데 필요한 기본기에 능숙해야 한다.
특히 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, 저장소 요구량, 캐시 요구량, 서버 수 추정 등이 자주 요구됨
'기술 서적 정리 요약 > 가상면접 사례로 배우는 대규모 시스템 설계 기초]' 카테고리의 다른 글
5장 안정 해시 설계 (0) | 2023.05.01 |
---|---|
4장 처리율 제한 장치의 설계 (0) | 2023.04.27 |
3장 시스템 설계 면접 공략법 (0) | 2023.04.26 |
1장. 사용자 수에 따른 규모 확장성 (0) | 2023.04.11 |
[가상면접 사례로 배우는 대규모 시스템 설계 기초] 목차 및 후기 (0) | 2023.03.06 |