가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 전체 정리
가상 면접 사례로 배우는 대규모 시스템 설계 기초 리뷰
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 전체 정리
가상 면접 사례로 배우는 대규모 시스템 설계 기초
0. 개요
이 책에서는 시스템 디자인과 관련된 문제를 설명하고 있다. 1~3 장까지는 확장성, 규모 측정, 면접 방법 등 기초적인 내용을 다루고 그 뒤는 특정 시스템에 대한 설계 방법을 다루고 있다.
- 인프라나 백엔드 개발자가 읽으면 시스템을 볼 때 조금 더 구조를 파악하기 용이 할 듯 하다. 또한 이 책의 주된 목적은 사실 면접을 준비하기 위함일 듯 하다. 토스 NEXT 개발자 모집같은 경우 서술형 문제를 출제한다. 많은 후기에서 이 책이 도움이 됐다고 이야기하고 있다. 볼드나 색깔을 다르게 처리한 부분은 개인적으로 재미있거나 중요한거 같은 곳에 해놓았다.
1. 내용 정리
1~3장 내용 정리
- 1장의 내용은 사용자 수에 따른 규모 확장성을 다루고 있다. 수직적 규모 확장(스케일 업)과 수평적 규모 확장(스케일 아웃)을 어떤 방식으로 하는 지, 부하를 줄이기 위해 캐시, 로드벨런스, CDN을 어떻게 사용하는지 그리고 무상태 아키텍처를 통해 분산 시스템에서 세션을 유지하기 위한 구조로 어떤 부분이 유리한지, 그리고 메시지 큐로 무손실을 어떻게 보장하는지 마지막으로 모니터링과 로깅 등 유지보수 정책을 설명한다.
- 2장의 내용은 규모를 측정하는 방식에 대해 설명하고 있다. 프로그래머가 알고있으면 좋은 응답지연 시간의 값과 가용성을 보장하는 수치들 그리고 저장소의 용량을 구하는 예시들을 설명하고 있다.
- 3장의 내용은 시스템 설계 면접 공략에 대해 알려주고 있다. 3장 이후 계속 적용될 설계의 4가지 단계에 대해 설명한다.
설계 예시 소개
- **처리율 제한 장치의 설계 **
- 안정 해시 설계
- 키-값 저장소 설계
- 분산 시스템을 위한 유일 ID 생성기
- URL 단축기 설계
- 웹 크롤러 설계
- 알림 시스템 설계
- 뉴스 피드 시스템 설계
- 채팅 시스템 설계
- 검색어 자동완성 시스템 설계
- 유튜브 설계 (스트리밍 서비스)
- 구글 드라이브 설계
마무리
이 책에서 느낀 점에서 공통적으로 밝히는 내용은 라이브 코딩 테스트와 같은 면접관과 소통하며 문제를 풀어가는 자리에 모두 적용이 될 것 같다. 문제를 명확하게 하는 과정 문제의 범위를 줄여가고 기능을 정확하게 인지하고 해결하는 과정 그리고 면접관과 소통하면 맞는 길인지 체크하고 커뮤니케이션하며 문제를 풀어가는 과정까지 문제를 정확하게 푸는 것도 중요하지만 소통하고 문제를 같이 풀어가는 과정이 중요하다고 밝히는 것 같다. 물론 내용도 백엔드/인프라 개발자에게 무척 중요하고 값진 내용들이다.
This post is licensed under CC BY 4.0 by the author.