1장: 시스템 설계란 무엇인가
시스템 설계의 정의와 6단계 절차, 상위 수준 설계와 하위 수준 상세 설계의 구분, 그리고 설계가 조직에 주는 실제 이점을 정리한다.

디렌드라 신하, 테자스 초프라
추천 대상 분산 시스템 용어와 설계 절차를 한 권으로 정리하고 싶은 백엔드 개발자
“분산 시스템의 이론과 구성 요소를 훑고 실전 서비스 설계로 이어지는 시스템 설계 입문서”
디렌드라 신하와 테자스 초프라의 "요즘 개발자를 위한 시스템 설계 수업"은 시스템 설계라는 넓은 주제를 세 부로 나누어 훑는 책이다. 1부에서 분산 시스템의 속성과 이론을 정리하고, 2부에서 DNS부터 로드 밸런서, 데이터베이스, 캐시, 메시지 큐까지 구성 요소를 하나씩 살펴본 다음, 3부에서 URL 단축 서비스, X, 인스타그램, 구글 독스, 넷플릭스 같은 실제 서비스를 설계하는 흐름으로 마무리한다.
이 책의 가장 큰 미덕은 구조다. CAP 정리와 합의 알고리즘 같은 이론, 확률적 자료구조, 인프라 구성 요소, 관측 가능성, 그리고 설계 실전이 하나의 목차 안에 정리되어 있어 "시스템 설계라는 영역에 무엇이 들어 있는가"를 한 번에 조망할 수 있다. 특히 3부에서 반복되는 설계 템플릿(활용 사례 → 기능적 요구 사항 → 비기능적 요구 사항 → API 설계 → 규모 산정 → 고수준 설계 → 요구 사항 검토)은 그대로 실무에 옮겨 쓸 수 있는 절차다.
반대로 아쉬운 점도 분명하다. 다루는 범위가 넓은 만큼 각 주제의 깊이가 얕다. DNS는 더 파고들었으면 좋았을 부분에서 멈추고, 로드 밸런서는 알고리즘 나열 수준에 가깝다. Neo4j나 카프카 같은 개별 기술도 개요 정도에서 끝난다. 후반부 사례 설계는 앞선 장의 템플릿을 반복 적용하는 구성이라 뒤로 갈수록 새로 얻는 것이 줄어드는 느낌이 있었다.
별점 3.5점은 그 균형에 대한 평가다. 시스템 설계의 지도를 그리는 책으로는 충분히 값을 하지만, 각 지역을 깊게 파려면 주제별 전문서가 따로 필요하다. 이 시리즈는 책의 내용을 그대로 요약하기보다, 읽으면서 정리한 하이라이트를 축으로 삼고 부족한 맥락은 별도 리서치로 메워 13개 장으로 재구성한 리뷰다. 원서의 16개 장 가운데 밀도가 낮았던 부분은 인접한 주제와 묶어 하나의 장으로 합쳤다.
읽는 동안 가장 크게 남은 생각은 설계 절차 자체를 파이프라인으로 만들어 두는 일이었다. 요구 사항 분석에서 규모 산정, 고수준 설계, 요구 사항 검토로 이어지는 순서는 사람이 매번 새로 기억해서 밟기보다 체크리스트로 고정해 두는 편이 낫다. 코딩 에이전트에게 설계 작업을 맡길 때에도 이 절차를 그대로 프롬프트 구조로 옮길 수 있다고 느꼈다.
시스템 설계의 정의와 6단계 절차, 상위 수준 설계와 하위 수준 상세 설계의 구분, 그리고 설계가 조직에 주는 실제 이점을 정리한다.
호텔 예약 시스템 예시로 읽기/쓰기 옵션을 살펴본 뒤, 일관성부터 가용성, 파티션 허용성, 지연 시간, 내구성, 신뢰성, 장애 허용성, 확장성까지 분산 시스템의 핵심 속성을 정리한다.
CAP 정리에서 PACELC 정리로 확장되는 흐름과 팩소스, 래프트 합의 알고리즘, 비잔티움 장군 문제, FLP 불가능성 정리까지 분산 시스템의 이론적 한계를 정리한다.
모듈로 해싱의 한계에서 출발한 일관된 해싱과 가상 노드, 그리고 블룸 필터, 카운트-민 스케치, 하이퍼로그로그로 메모리를 절약하는 확률적 자료구조를 정리한다.
DNS 계층 구조와 쿼리 방식, 로드 밸런서의 알고리즘과 OSI 계층별 배치, 그리고 애플리케이션 게이트웨이가 담당하는 라우팅과 보안 기능을 정리한다.
관계형과 비관계형의 트레이드오프, 키-값 저장소 설계와 쿼럼, 머클 트리로 레플리카를 동기화하는 방법, 그리고 그래프 데이터베이스의 저장 구조를 정리한다.
캐시 히트와 미스의 기본 개념에서 출발해 분산 캐싱과 일반 캐싱의 차이, 삭제 정책 분류, LRU 캐시 설계, 그리고 캐시를 시스템에 배치하는 두 가지 방식을 정리한다.
분산 큐 설계 시 고려할 요소와 발행/구독 시스템의 확장성·신뢰성 설계, 그리고 카프카와 카프카 스트림, 키네시스의 구조를 정리한다.
REST와 gRPC의 설계 원칙과 성능·호환성 비교, API 키·OAuth·JWT 인증 방식, RBAC와 ABAC 인가, 그리고 요청 속도 제한 알고리즘 세 가지를 정리한다.
중앙 집중형 로깅과 세 가지 메트릭 분류, 알림을 설계할 때의 민감도 균형, 그리고 스팬과 트레이스로 요청 흐름을 추적하는 분산 트레이싱을 정리한다.
URL 단축 서비스의 요구 사항 정의부터 규모 산정, 고유 단축 URL 생성 네 가지 방법 비교, 그리고 근접 서비스에서 쿼드 트리와 지오해시로 위치를 검색하는 방법을 정리한다.
대규모 소셜 미디어를 마이크로서비스로 분해하는 방법, 타임라인의 팬아웃 전략과 다층 캐싱, 검색 서비스의 인덱싱과 랭킹, 그리고 인스타그램 설계와의 차이를 정리한다.
구글 독스의 협업 편집을 지탱하는 OT와 CRDT, 넷플릭스의 CDN과 적응형 비트레이트 스트리밍, 그리고 시스템 설계 면접에 임하는 절차를 정리한다.