Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 부트캠프
- KDT
- UXUI챌린지
- 디자인강의
- UXUI기초정복
- 디자인챌린지
- UXUIPrimary
- 오픈챌린지
- 국비지원교육
- 디자인교육
- Spring
- 객체지향
- Be
- 백엔드개발자
- 백엔드 부트캠프
- 오블완
- 자바
- 오픈패스
- 환급챌린지
- Java
- 국비지원취업
- 국비지원
- 패스트캠퍼스
- JPA
- OPENPATH
- 백준
- mysql
- baekjoon
- 티스토리챌린지
- 내일배움카드
Archives
- Today
- Total
군만두의 IT 개발 일지
[스터디9] 02. 개략적인 규모 추정 본문
목차
2장. 개략적인 규모 추정
시스템 설계 면접에서는 시스템 용량이나 성능 요구사항을 개략적으로 추정해보라는 요구를 받게 된다.
- 개략적인 규모 추정(back-of-the-envelope esti-mation): 보편적으로 통용되는 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위로서, 어떤 설계가 요구사항에 부합할 것인지 보기 위한 것
개략적 규모 추정을 효과적으로 하려면 2의 제곱수나 응답지연(latency) 값, 그리고 가용성에 관계된 수치들을 기본적으로 잘 이해하고 있어야 한다.
2의 제곱수
분산 시스템에서 다루는 데이터 양은 엄청나게 커질 수 있으나, 계산법은 기본을 크게 벗어나지 않는다. 데이터 볼륨의 단위를 2의 제곱수로 표현하면 어떻게 되는지를 우선 알아야 한다.
데이터 볼륨 단위
- 최소 단위는 1바이트이고, 8비트로 구성된다
- ASCII 문자 하나가 차지하는 메모리 크기가 1바이트이다.
- 한글이나 다국어를 고려할 때는 한 단어를 4바이트까지 고려하는 것이 좋다.
| 2의 x 제곱 | 근사치 | 이름 | 축약형 |
| 10 | 1천(thousand) | 1킬로(Kilo)바이트 | 1KB |
| 20 | 1백만(million) | 1메가(Mega))바이트 | 1MB |
| 30 | 10억(billion) | 1기가(Giga)바이트 | 1GB |
| 40 | 1조(trillion) | 1테라(Tera)바이트 | 1TB |
| 50 | 1000조(quadrillion) | 1페타(Peta)바이트 | 1PB |
응답지연(latency) 값
구글의 제프 딘(Jeff Dean)이 2010년에 공개한 통상적인 컴퓨터에서 구현된 연산들의 응답지연 값이다. 더 빠른 컴퓨터가 등장하면서 일부는 유효하지 않지만, 아직도 이 수치들을 통해 컴퓨터 연산들의 처리 속도를 짐작할 수 있다.
주요 연산별 응답지연 시간
- L1 캐시 참조: 0.5ns
- 분기 예측 오류(branch mispredict): 5ns
- L2 캐시 참조: 7ns
- 뮤텍스 락/언락: 25ns
- 주 메모리 참조: 100ns
- Zippy로 1KB 압축: 10,000ns = 10μs
- 1Gbps 네트워크로 2KB 전송: 20,000ns = 20μs
- 메모리에서 1MB 순차적으로 read: 250,000ns = 250μs
- 같은 데이터 센터 내에서의 메시지 왕복 지연시간: 500,000ns = 500μs
- 디스크 탐색(seek): 10,000,000ns = 10ms
- 네트워크에서 1MB 순차적으로 read: 10,000,000ns = 10ms
- 디스크에서 1MB 순차적으로 read: 30,000,000ns = 30ms
- 한 패킷의 CA(캘리포니아)로부터 네덜란드까지의 왕복 지연시간: 150,000,000ns = 150ms
제시된 수치 분석 결과
- 메모리는 빠르지만 디스크는 아직도 느리다.
- 디스크 탐색은 가능한 한 피한다.
- 단순한 압축 알고리즘은 빠르다.
- 데이터를 인터넷으로 전송하기 전에 가능하면 압축한다.
- 데이터 센터는 보통 여러 지역에 분산되어 있고, 센터들 간에 데이터를 주고받는 데는 시간이 걸린다.
가용성
- 고가용성(high availability): 시스템이 오랜 시간 동안 지속적으로 중단 없이 운영될 수 있는 능력
- 고가용성을 표현하는 값은 퍼센트로 표현하는데, 100%는 시스템이 한 번도 중단된 적이 없었음을 의미한다. 대부분의 서비스는 99~100%의 값을 갖는다.
- SLA(Service Level Agreement): 서비스 사업자와 고객 사이에 맺어진 합의로, 서비스 사업자가 제공하는 서비스의 가용시간이 공식적으로 기술되어 있다. 대부분의 클라우드 사업자들은 99% 이상의 SLA를 제공한다.
가용성 수치별 장애 허용 시간
| 가용성 | 하루당 장애시간 | 주당 장애시간 | 개월당 장애시간 | 연간 장애시간 |
| 99% | 14.40분 | 1.68시간 | 7.31시간 | 3.65일 |
| 99.9% | 1.44분 | 10.08분 | 43.83분 | 8.77시간 |
| 99.99% | 8.64초 | 1.01분 | 4.38분 | 52.60분 |
| 99.999% | 864.00밀리초 | 6.05초 | 26.30초 | 5.26분 |
| 99.9999% | 86.40밀리초 | 604.80밀리초 | 2.63초 | 31.56초 |
면접에서의 접근 방법
개략적인 규모 추정과 관계된 면접에서 가장 중요한 것은 문제를 풀어 나가는 절차다. '결과를 내는 것'보다 '올바른 절차를 밟느냐'가 중요하다.
- 근사치를 활용한 계산(rounding and approximation): 면접장에서 복잡한 계산을 하는 것은 시간 낭비다. 적절한 근사치를 활용하여 시간을 절약하자.
- 예) 99,987 ÷ 9.8 ≈ 100,000 ÷ 10 = 10,000
- 가정(assumption)들은 적어두라: 나중에 살펴볼 수 있도록 기록해두자.
- 단위(unit)를 붙이는 습관: 모호함을 방지할 수 있다.
- 많이 출제되는 문제들: QPS, 최대 QPS, 저장소 요구량, 캐시 요구량, 서버 수 등을 추정하는 연습을 미리 하도록 하자.
✔️ 복습하기
- 2의 제곱수로 표현되는 데이터 볼륨 단위는?
- 응답지연(latency) 관점에서 메모리와 디스크의 차이점은?
- 99.9% 가용성이 의미하는 바와 월간 장애 허용 시간은?
- QPS(Query Per Second)란?

이 글은 『 가상 면접 사례로 배우는 대규모 시스템 설계 기초』 책을 학습한 내용을 정리한 것입니다.
'학습일지 > 시스템 설계' 카테고리의 다른 글
| [스터디9] 06. 처리율 제한 장치의 설계 - 실습 (0) | 2025.08.03 |
|---|---|
| [스터디9] 05. 처리율 제한 장치의 설계 (0) | 2025.07.26 |
| [스터디9] 04. 뉴스 피드 시스템 설계 - 실습2 (1) | 2025.07.08 |
| [스터디9] 03. 뉴스 피드 시스템 설계 - 실습1 (0) | 2025.06.27 |
| [스터디9] 01. 사용자 수에 따른 규모 확장성 (3) | 2025.06.14 |
Comments