목차
1부 시스템 설계 기초
1장 시스템 설계의 기본
1.1 시스템 설계의 정의
1.2 시스템 설계의 다양한 유형
1.3 업계에서 시스템 설계가 갖는 중요성
1.4 시스템 설계의 중요성을 엿볼 수 있는 실제 사례
1.5 요약
2장 분산 시스템의 속성
2.1 호텔 객실 예약 시스템으로 살펴보는 분산 시스템 예시
2.2 일관성
2.3 가용성
2.4 파티션 허용성
2.5 지연 시간
2.6 내구성
2.7 신뢰성
2.8 장애 허용성
2.9 확장성
2.10 요약
3장 분산 시스템의 이론과 데이터 구조
3.1 CAP 정리
3.2 PACELC 정리
3.3 비잔티움 장군 문제
3.4 FLP 불가능성 정리
3.5 일관된 해싱
3.6 블룸 필터
3.7 카운트-민 스케치
3.8 하이퍼로그로그
3.9 요약
2부 분산 시스템의 핵심 구성 요소
4장 분산 시스템의 기본 요소: DNS, 로드 밸런서, 애플리케이션 게이트웨이
4.1 DNS 이해
4.1.1 DNS 쿼리
4.2 DNS의 확장성, 신뢰성, 일관성
4.3 로드 밸런서
4.4 애플리케이션 게이트웨이
4.5 마이크로서비스 아키텍처
4.6 클라우드 네이티브 애플리케이션 게이트웨이 서비스 개요
4.7 온프레미스 옵션
4.8 요약
5장 시스템 구성 요소의 설계 및 구현: 데이터베이스와 스토리지
5.1 데이터베이스
5.2 키-값 저장소
5.3 확장성과 데이터 복제의 최적화
5.4 get 및 put 함수 구현
5.5 키-값 저장소의 장애 허용성과 장애 식별
5.6 시스템 설계 인터뷰: 키-값 저장소 설계 관련 질문과 전략
5.7 DynamoDB
5.8 컬럼 패밀리 데이터베이스
5.9 HBase
5.10 그래프 기반 데이터베이스
5.11 Neo4j 그래프 데이터베이스
5.11.1 Neo4j 자세히 살펴보기
5.12 관계형 모델링과 그래프 모델링
5.13 요약
5.14 참고 자료
6장 분산 캐싱
6.1 캐싱 정의
6.2 분산 캐시 설계
6.3 대표적인 분산 캐시 솔루션
6.4 요약
7장 발행/구독과 분산 큐
7.1 분산 시스템의 발전 과정
7.2 발행/구독 시스템 설계
7.3 카프카
7.4 카프카 스트림
7.5 키네시스
7.6 요약
3부 시스템 설계 실전으로 들어가기
8장 시스템 구성 요소 설계 및 구현: API, 보안, 메트릭
8.1 REST API
8.2 gRPC API
8.3 REST와 gRPC 비교
8.4 API 보안
8.5 분산 시스템 로깅
8.6 분산 시스템에서 메트릭
8.7 분산 시스템에서 알림
8.8 분산 시스템에서 트레이싱
8.9 요약
9장 URL 단축 서비스 설계
9.1 실제 활용 사례
9.2 API 설계
9.3 계산으로 문제 규모 파악
9.4 시스템 설계
9.5 요구 사항 검토
9.6 요약
10장 근접 서비스 설계
10.1 실제 활용 사례
10.2 API 설계
10.3 계산으로 문제 규모 파악
10.4 시스템 설계
10.5 요구 사항 검토
10.6 요약
11장 X 서비스 설계
11.1 기능적 요구 사항
11.2 비기능적 요구 사항
11.3 데이터 모델
11.4 시스템 규모 산정
11.5 고수준 설계 탐구
11.6 트윗 서비스 설계
11.7 사용자 서비스 설계
11.8 타임라인 서비스 세부 설계
11.9 검색 서비스 세부 설계
11.10 기타 고려 사항
11.11 요약
12장 인스타그램 서비스 설계
12.1 기능적 요구 사항
12.2 비기능적 요구 사항
12.3 데이터 모델 설계
12.4 시스템 규모 산정
12.5 고수준 설계
12.6 서비스 세부 설계
12.7 기타 고려 사항
12.8 요약
13장 구글 독스 서비스 설계
13.1 기능적 요구 사항
13.2 비기능적 요구 사항
13.3 데이터 모델
13.4 시스템 규모 산정
13.5 고수준 설계
13.6 마이크로서비스 세부 설계
13.7 기타 검토 사항 및 모범 사례
13.8 요약
14장 넷플릭스 서비스 설계
14.1 기능적 요구 사항
14.2 비기능적 요구 사항
14.3 데이터 모델
14.4 시스템 규모 산정
14.5 고수준 설계
14.6 서비스 세부 설계
14.7 CDN
14.8 요약
15장 시스템 설계 면접 준비를 위한 팁
15.1 시스템 설계 면접을 준비하는 방법
15.2 시스템 설계 면접을 위한 팁
15.3 요약
16장 시스템 설계 커닝 페이퍼
16.1 시스템 설계 면접에서는 어떤 구조를 기반으로 대답해야 할까?
16.2 사용 사례별로 어떤 데이터 저장소를 사용해야 할까?
16.3 사용 사례별로 어떤 데이터 구조를 선택해야 할까?
16.4 사용 사례별로 어떤 컴포넌트를 사용해야 할까?
16.5 사용 사례별로 어떤 프로토콜을 사용해야 할까?
16.6 사용 사례별로 어떤 솔루션을 적용해야 할까?
16.7 요약