가상 면접 사례로 배우는 대규모 시스템 설계 기초 (알렉스 쉬, 2021) 독후감
재미있다. 다양한 대규모 시스템 설계 문제가 나온다. 면접이라는 포맷을 써서 핵심에 집중이 잘 된다. 요구사항을 정리하는 질문 답변에서도 배울 게 있었다.
시스템 설계 문제 예제가 다양하고 흥미롭다. 처리율 제한 장치, 안정 해시, 키-값 저장소, 분산 시스템을 위한 유일 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
변수는 무엇이고 수치간의 상관성을 파악할 수 있다. 또한 수치로 대체하는 것도 인상적이다.
황당하고 낯선 시스템은 없다. 뒤로 갈수록 힘이 조금씩 빠지는 느낌이지만 다양한 시스템을 설계할 때, 신경 쓰는 것들을 따라가는 게 무척이나 재미있었다. 게다가 다양한 시스템 설계를 구경하면서 내가 모르고 있었던 게 뭔지를 알 수 있어서 도움이 많이 됐다.