-
가상 면접 사례로 배우는 대규모 시스템 설계 기초후기/Book Review 2022. 12. 10. 23:03728x90반응형
최근에 출판되었다는 걸 본 기억이 있었다. 그러던 중 대규모 시스템은 어떻게 설계하는지 궁금해서 사서 읽어보게 되었다.
목차
- 1장 사용자 수에 따른 규모 확장성
- 2장 개략적인 규모 추정
- 3장 시스템 설계 면접 공략법
- 4장 처리율 제한 장치의 설계
- 5장 안정 해시 설계
- 6장 키-값 저장소 설계
- 7장 분산 시스템을 위한 유일 ID 생성기 설계
- 8장 URL 단축기 설계
- 9장 웹 크롤러 설계
- 10장 알림 시스템 설계
- 11장 뉴스 피드 시스템 설계
- 12장 채팅 시스템 설계
- 13장 검색어 자동완성 시스템
- 14장 유튜브 설계
- 15장 구글 드라이브 설계
- 16장 배움은 계속된다
몇 년 전에 페이스북 같은 (그 때는 아직 페이스북이 시들하지 않던 시절이었다) 글로벌 소셜 네트워크 서비스는 어떻게 만드는지 얘기를 나눈 기억이 있다. 왜 팔로워 수를 5000명으로 제한을 뒀을까에 대한 이야기도 했었던 것 같고... 우리가 평소에 유용하게 사용하는(유료 혹은 무료) 글로벌 서비스들의 뒷단은 어떻게 되어 있을 지 한 번쯤 궁금해 보았을 것이다. 물론 "{서비스명} system design" 혹은 "{서비스명} architecture" 같이 구글링을 하면 잘 나오긴 하지만 일부러 찾아가서 영어를 읽어 보는 건 생각보다 수고롭다. 그런 수고를 덜어주는 좋은 책이라고 생각한다.
단일 웹서버부터 시작해서 데이터베이스, 로드밸런서, CDN, 캐시 등 점차 시스템을 분리하고 확장해 나가는 것부터 시작한다. 일반적으로 알아두면 좋을 응답지연 값 (사진1)이나 SLA에서 말하는 퍼센트가 1년에 어느정도의 수치인지(사진2) 등을 알려준다.
책 내용 답게 시스템 디자인 관련 기술 면접에서 어떤 식으로 하면 좋을 지 등을 알려주는 부분도 있다. 단계별로 살펴보면 아래와 같다.
- 문제 이해 및 설계 범위 확정
- 개략적인 설계안 제시 및 동의 구하기
- 상세 설계
- 마무리
아무리 훌륭한 엔지니어라고 하더라도 면접자와 커뮤니케이션이 되지 않아서 문제의 의도에 완전히 벗어난다면 패스할 확률이 높진 않을 것이다. 제한된 시간 내에 이루어지는 면접이니 면접관과 잘 이야기 하면서 진행해 나가는 것이 핵심 포인트 같다.
뒤에는 웹 크롤러, 알림 시스템, 뉴스 피드 시스템, 채팅 시스템, 검색어 자동완성 시스템 등 보편적인 서비스 설계 내용과 유튜브, 구글 드라이브 같은 서비스 까지 어떻게 설계할 수 있을 지 다뤄본다. 물론 다년간의 운영을 바탕으로 안정적인 서비스를 해오고 있는 서비스들의 실제 구현은 훨씬 복잡하겠지만 그 시작점은 도움이 된다. 책에서 다루는 내용이 많다보니 각 내용들의 깊이가 깊지는 않은 편인 것 같은데, 부족한 내용들은 더 찾아보고 공부하면 될 것 같다.
처음의 간단한 시스템부터 시작해서 최종 단계에 이를 때까지 계속 시스템 구조도를 보여주는 부분이 좋은 것 같다. 글로 이런 이런 모듈이 추가되고 해야합니다 라고 말하는 것보다 그림으로 단계적으로 계속 보여주니 이해가 더 잘 된다.
면접을 준비하는 상황이 아니라 하더라도 백엔드 개발자라면 한 번쯤 읽어보면 좋을 것 같다. 일하면서 비슷한 종류의 시스템 설계를 하게 된다면 분명 조금이라도 참고가 되고 도움이 될 것이다.
가상 면접 사례로 배우는 대규모 시스템 설계 기초, 알렉스 쉬(인사이트)
반응형'후기 > Book Review' 카테고리의 다른 글
실리콘밸리 리더십 (0) 2022.09.11 기업의 성공을 이끄는 Developer Relations (0) 2022.06.27 객체지향의 사실과 오해 (2독) (3) 2022.03.05 SRE를 위한 시스템 설계와 구축 (2) 2022.02.23 만들면서 배우는 클린 아키텍처 (0) 2022.01.30