개발 서적 완독하기/가상 면접 사례로 배우는 대규모 시스템 설계 기초

가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 2장(개략적인 규모 추정)

코드 살인마 2023. 9. 26. 21:13
728x90

2의 제곱수

 

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

응답지연 값
응답지연값 시각화

 

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

통신할 때, 데이터를 압축하거나, 용량을 줄이는 것에 대해는 와닿는다.


예를 들어, 이미지를 저장하는데, 클라 -> 서버 -> 이미지서버라면, 2번의 통신에 용량이 큰 이미지가 들어갈 것이다.


용량이 큰 이미지는 클라이언트에서 바로 이미지 서버로 전송하는 것이 더 효율적일 것이다.

 

가용성에 관계된 수치들

고가용성(High availability)는 시스템이 오랜 시간 동안 지속적으로 중단 없이 운영될 수 있는 능력을 지칭하는 용어다.


퍼센트로 표현하는데 100%는 단 한번도 중단된 적이 없었음을 의미하고, 대부분은 99% ~ 100%이다.

 

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

가정

  • 월간 능동 사용자는 3억명
  • 50%의 사용자가 트위터를 매일 사용
  • 평균적으로 각 사용자는 매일 2건 트윗 올림
  • 미디어를 포함한 트윗은 10%정도
  • 데이터는 5년간 보관된다.

추정

QPS(Query Per Second) 추정치

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

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

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

 

개략적인 규모 추정과 관계된 면접은 계산하는게 아니라, 결과를 내는 것이 중요하다.

  • 근사치 계산은 생략
  • 가정은 적어두라 나중에 볼 수 있도록
  • 단위를 붙여라
  • 많이 출제되는 개략적 규모 추정 문제는 QPS, 최대 QPS, 저장소 요구량, 캐시 요구량, 서버 수 등을 추정하는 것이다.

 

사실 한국에서 면접을 많이 보면서, 개략적인 규모 추정을 물어보는 분은 한분도 없긴했다..

저자가 외국인이라,, 그런가?

근데 읽다보니, 개략적인 규모 측정하는 능력은 필요하다고 느꼈고, 면접 때 물어보는 것도 합리적이라 생각이 들었다.