서론

시스템 용량이나 성능 요구사항을 개략적으로 추정하는 것은 성능 수치상에서 사고 실험을 행하여 추정치를 계산하는 행위이다. 이를 통해 어떤 설계가 요구사항에 부합할 것인지 알 수 있다. 이러한 개략적인 규모 추정을 효과적으로 해 내려면 규모 확장성을 표현하는 데 필요한 기본기에 능숙해야 한다. 특히, 2의 제곱수나 응답지연 값, 가용성에 관계된 수치들을 기본적으로 잘 이해하고 있어야한다.

 

2의 제곱수

데이터 볼륨의 단위를 2의 제곱수로 표현하면 어떻게 되는지 알아야 제대로된 결과를 얻을 수 있다. 최소 단위는 1바이트이고, 8비트로 구성된다. ASCII 문자 하나가 차지하는 메모리 크기가 1바이트다. 아래는 흔히 쓰이는 데이터 볼륨 단위들이다.

2의 x 제곱 근사치  이름 축약형
10 1천 1 KiloByte 1KB
20 1백만 1 MegaByte 1MB
30 10억 1 GigaByte 1GB
40 1조 1 TeraByte 1TB
50 1000조 1 PetaByte (페타바이트) 1PB

 

 

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

구글의 제프 딘은 2010년에 통상적인 컴퓨터에서 구현된 연산들의 응답지연 값을 공개한 바 있다. 이들 중 몇몇은 더 빠른 컴퓨터가 등장하면서 유효하지 않게 되었지만, 어느정도 짐작할 수 있도록 도와준다.

 

이 수들을 알기 쉽게 시각화한 자료는 아래와 같다. 아래는 2020년 기준으로 시각화한 수치이다.

제시된 수치들을 분석하면 아래와 같은 결론이 나온다.

  1. 메모리는 빠르지만 디스크는 아직도 느리다.
  2. 디스크 탐색은 가능한 한 피하자.
  3. 단순한 압축 알고리즘은 빠르다.
  4. 데이터를 인터넷으로 전송하기 전에 가능하면 압축하라.
  5. 데이터 센터는 보통 여러 지역에 분산되어 있고, 센터들 간에 데이터를 주고 받는데는 시간이 걸린다.

 

가용성에 관계된 수치들

고가용성은 시스템이 오랜 시간 동안 지속적으로 중단 없이 운영될 수 있는 능력을 지칭하는 용어다. 고가용성을 표현하는 값을 percent로 표현하는데, 100%는 시스템이 단 한번도 중단된 적이 없었음을 의미한다. 대부분의 서비스는 99~100% 사이의 값을 갖는다.

 

SLA는 서비스 사업자가 보편적으로 사용하는 용어로, 서비스 사업자와 고객 사이의 맺어진 합의를 의미한다. 이 합의에는 서비스 사업자가 제공하는 서비스의 가용시간이 공식적으로 기술되어 있다. AWS, Google, Microsoft 같은 사업자는 99% 이상의 SLA를 제공한다.

 

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

  • 가정
    • 월간 능동 사용자는 3억명이다.
    • 50%의 사용자가 트위터를 매일 사용한다. 
    • 평균적으로 각 사용자는 매일 2건의 트윗을 올린다.
    • 미디어를 포함하는 트윗은 10% 정도이다.
    • 데이터는 5년간 보관된다.
  • 추정
    • QPS 추정치
      • 일간 능동 사용자 = 3억 x 50% = 1.5억
      • QPS = 1.5억 x 2트윗/24시간/3600초 = 약 3500
      • 최대 QPS = 2 x QPS = 약 7000
    • 미디어 저장을 위한 저장소 요구량
      • 평균 트윗 크기
        • tweet_id에 64바이트
        • 텍스트에 140바이트
        • 미디어에 1MB
      • 미디어 저장소 요구량 = 1.5억 x 2 x 10% x 1 B = 30TB/일
      • 5년간 미디어를 보관하기 위한 저장소 요구량: 30TB x 365 x 5 = 약 55PB

 

개략적인 규모 추정과 관계된 면접에서 가장 중요한 것은 문제를 풀어나가는 절차다. 올바른 절차를 밟느냐가 결과는 내는 것보다 중요하다. 면접관이 보고 싶어하는 것은 면접자의 문제 해결 능력이다. 아래 몇 가지 팁을 참고해보자.

  1. 근사치를 활용한 계산
    • 면접장에서 복잡한 계산을 하는 것은 어려운 일이다. 계산 결과의 정확함을 평가하는 것이 목적이 아니므로, 적절한 근사치를 활용하여 계산을 간단화하는 것이 좋다.
  2. 가정을 적어두자. 나중에 살펴볼 수 있도록
  3. 단위를 붙여라
    • 5라고만 적어놓으면 5KB인지 5MB인지 알 수가 없다. 나중에 헷갈리게 될 수 있으므로 단위를 붙이는 습관을 들이자.
  4. 많이 출제되는 개략적 규모 추정 문제는 QPS, 최대 QPS, 저장소 요구량, 캐시 요구량, 서버 수 등을 추정하는 것이다.
    • 면접에 임하기전에 이런 값들을 계산하는 연습을 미리 하자.

완벽함을 달성하는 방법은 연습 뿐이다. 연습 꼭 하자.

 

 

 

 

Reference

  • 가상 면접 사례로 배우는 대규모 시스템 설계 기초

+ Recent posts