[대규모 시스템 설계 기초] 2장. 개략적인 규모 추정

가영·2022년 9월 13일
0
post-thumbnail

이 글은 《가상 면접으로 배우는 대규모 시스템 설계 기초》 를 읽고 요약, 제 생각을 더한 글입니다.

2장 개략적인 규모 추정

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

2의 제곱수

  • 최소단위는 1Byte, 8bit로 구성 => ASCII 문자 하나가 차지하는 메모리 크기.

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

구글의 제프 딘이 공개한 통상적 컴퓨터에서 구현된 연산 별 응답지연 값.
꽤나 예전 자료라 더 이상 유효하지는 않게 되었지만, 이 수치들은 컴퓨터 연산 처리속도가 어느정도인지 짐작하는 데 도움을 준다.

Latency Comparison Numbers (~2012)

Name
L1 cache reference0.5ns
Branch mispredict5ns
L2 cachereference7ns14x L1 cache
Mutex lock/unlock25ns
Main memory reference100ns20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy3,000ns3us
Send 1K bytes over 1 Gb ps network10,000ns10us
Read 4K randomly from SSD150,000ns150us~1GB/sec SSD
Read 1 MB sequentially from memory250,000ns250us
Round trip within same datacenter500,000ns500us
Read 1 MB sequentially from SSD1,000,000ns1,000us1ms~1GB/sec SSD, 4X memory
Disk seek10,000,000ns10,000us10ms20x datacenter roundtrip
Read 1 MB sequentially20,000,000ns20,000us20ms80x memory, 20X SSD
Send pack et CA->Netherlands->CA150,000,000ns150,000us150ms

Notes

1 ns = 10^-9 seconds

1 us = 10^-6 seconds = 1,000 ns

1 ms = 10^-3 seconds = 1,000 us = 1,000,000 ns

visual comparison chart

저 표를 보면서 해야하는 생각

  • 여러 동작의 성능 단위 차이를 주목

  • 데이터센터들은 멀리 떨어져 있으므로 뭔가 전송하려면 오래 걸린다.

  • 메모리는 빠르고 디스크는 느리다.

  • 효율적인 압축 알고리즘을 통해 많은 네트워크 대역폭을 절약할 수 있다.

  • 쓰기 연산은 읽기보다 40배 이상 비싸다(느리다).

  • 글로벌 공유 데이터는 비싸다. 이건 분산 시스템의 근본적인 한계다. 자주 쓰이는 공유 객체의 락 경합은 트랜잭션을 직렬화하고 느리게 만들어 성능을 크게 저하한다.

  • 늘어날 쓰기 연산을 대비해 설계하자.

  • 쓰기 경합을 줄이기 위해 최적화하자.

  • 넓게 최적화하자. 쓰기 연산은 최대한 병렬 처리하자.

가용성에 관계된 수치들

고가용성(high availability)

: 시스템이 오랜 시간동안 지속적으로 중단 없이 운영될 수 있는 능력.

가용성은 uptime/period 로 수치화할 수 있다. 보통 퍼센트를 사용한다!

  • 100%: 시스템이 단 한 번도 중단된 적이 없었음을 의미
  • 대부분의 서비스는 99에서 100 사이의 값을 갖는다.

SLA (Service Level Agreement)

서비스 사업자가 보편적으로 사용하는 용어, 서비스 사업자와 고객 사이에 맺어진 합의를 의미한다. 그리고 이 합의에는 서비스 사업자가 제공하는 서비스의 가용시간이 공식적으로 기술돼있다.

아마존, 구글, 그리고 마이크로 소프트 같은 사업자는 99% 이상의 SLA를 제공한다.

하지만 실제로는 조금 더 엄격하게 가용성을 지키려고 한다. 사진을 보면 알 수 있듯, 99%를 보장하더라도 꽤나 긴 시간 고객들이 불편을 겪을 수 있기 때문이다.

+) SLA가 비즈니스에 미치는 영향

downtime 시간당 비용 조사

2019, 2020 모두 25퍼센트의 기업이 서비스 중단 시 비용이 평균 시간당 3-4억원 ...

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

가정

  • 월간 능동 사용자: 3억명
  • 50%의 사용자가 매일 사용
  • 각 사용자는 매일 2건의 트윗을 올린다. (평균)
  • 미디어를 포함하는 트윗은 10% 정도이다.
  • 데이터는 5년간 보관된다.

추정

QPS(Query Per Second) 추정치

  • 일간 능동 사용자 = 월간 능동 사용자 * 50% = 1.5억
  • QPS = 일간 능동 사용자 2트윗 / (24시간 3600초) = 약 3500
  • 최대 QPS = 2 * QPS = 약 7000

미디어 저장을 위한 저장소 요구량

  • 평균 트윗 크기
    • tweet_id: 64바이트
    • 텍스트에 140바이트
    • 미디어에 1MB
  • 미디어 저장소 요구량: 1.5억 2 10% * 1MB = 30TB/일
  • 5년간 미디어를 보관하기 위한 저장소 요구량: 30TB 365 5 = 약 55PB

개략적인 규모 추정하는 데에서 가장 중요한 것은

문제를 풀어나가는 절차!

올바른 절차를 밟느냐가 결과보다 중요하다. 면접자가 보고자하는 것은 우리의 문제해결능력. 올바른 절차를 밟기위한 팁 몇가지를 공유

  • 근사치를 활용한 계산
  • 가정(assumption)들을 미리 적어두어라
  • 단위(unit)을 붙여라 스스로도 헷갈리게 되기 쉬우니 단위를 붙이는 습관을 들이자.
  • 많이 출제되는 개략적 규모 추정문제
    • QPS
    • 최대 QPS
    • 저장소 요구량
    • 캐시 요구량
    • 서버 수

면접에 임하기 전에 이런 계산은 미리 연습하세여.

참고문헌

What Is SLA and Why Is It Important for Your Business?, Alibaba Cloud

0개의 댓글