군만두의 IT 개발 일지

[스터디9] 02. 개략적인 규모 추정 본문

학습일지/시스템 설계

[스터디9] 02. 개략적인 규모 추정

mandus 2025. 6. 20. 22:29

목차

    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초

    면접에서의 접근 방법

    개략적인 규모 추정과 관계된 면접에서 가장 중요한 것은 문제를 풀어 나가는 절차다. '결과를 내는 것'보다 '올바른 절차를 밟느냐'가 중요하다.

    1. 근사치를 활용한 계산(rounding and approximation): 면접장에서 복잡한 계산을 하는 것은 시간 낭비다. 적절한 근사치를 활용하여 시간을 절약하자.
      • 예) 99,987 ÷ 9.8 ≈ 100,000 ÷ 10 = 10,000
    2. 가정(assumption)들은 적어두라: 나중에 살펴볼 수 있도록 기록해두자.
    3. 단위(unit)를 붙이는 습관: 모호함을 방지할 수 있다.
    4. 많이 출제되는 문제들: QPS, 최대 QPS, 저장소 요구량, 캐시 요구량, 서버 수 등을 추정하는 연습을 미리 하도록 하자.

     

    ✔️ 복습하기

    1. 2의 제곱수로 표현되는 데이터 볼륨 단위는?
    2. 응답지연(latency) 관점에서 메모리와 디스크의 차이점은?
    3. 99.9% 가용성이 의미하는 바와 월간 장애 허용 시간은?
    4. QPS(Query Per Second)란?

     

    이 글은 『 가상 면접 사례로 배우는 대규모 시스템 설계 기초』 책을 학습한 내용을 정리한 것입니다.

    Comments