less than 1 minute read

재미있다. 다양한 대규모 시스템 설계 문제가 나온다. 면접이라는 포맷을 써서 핵심에 집중이 잘 된다. 요구사항을 정리하는 질문 답변에서도 배울 게 있었다.

시스템 설계 문제 예제가 다양하고 흥미롭다. 처리율 제한 장치, 안정 해시, 키-값 저장소, 분산 시스템을 위한 유일 ID 생성기, URL 단축기, 웹 크롤러, 알림 시스템, 뉴스 피드 시스템, 채팅 시스템, 검색어 자동완성 시스템, 유튜브, 구글 드라이브.

시작하기 전 항상 개략적인 규모 추정을 한다. 많이 해본 적이 없어서 가장 재미있게 읽었다. 다음은 구글 드라이브 설계에 들어가기 전 개략적으로 규모 추정치다.

  • 가입 사용자 오천만, DAU(Daily Active User) 천만
  • 모든 사용자에게 무료 10GB 저장공간
  • 매일 각 사용자가 평균 2개의 파일 업로드
    • 각 파일의 크기는 평균 500KB
  • 읽기:쓰기 비율 1:1
  • 필요한 저장공간 총량 = 5천만 * 10GB = 500PB
  • 업로드 API QPS = 1천만 사용자 * 2회 업로드 / 24시간 / 3600초 = 240
  • 최대 QPS = QPS * 2 = 480

변수는 무엇이고 수치간의 상관성을 파악할 수 있다. 또한 수치로 대체하는 것도 인상적이다.

황당하고 낯선 시스템은 없다. 뒤로 갈수록 힘이 조금씩 빠지는 느낌이지만 다양한 시스템을 설계할 때, 신경 쓰는 것들을 따라가는 게 무척이나 재미있었다. 게다가 다양한 시스템 설계를 구경하면서 내가 모르고 있었던 게 뭔지를 알 수 있어서 도움이 많이 됐다.