책 리뷰
대상: 가상 면접 사례로 배우는 대규모 시스템 설계 기초
결론: 아주 좋은책이다. 몇번이나 반복해서 읽고싶은 책이다.
반드시 구매하자: 구매링크
왜?
대규모 시스템 설계에서 왜?에 대한 답변이 많은 책이여서 반드시 읽고싶었다.
1장 - 사용자 수에 따른 규모 확장성
단일 서버
데이터 베이스
수직적 규모 확장 vs 수평적 규모 확장
- Failover, 다중화 방안 -> 수평적 규모 확장 유리
로드밸런서
데이터베이스 다중화
캐시
캐시 계층
캐시가 한대라면 SPOF(단일 장애 지점)이 될수도있다. -> 여러지역에 걸쳐 캐시 서버를 분산시켜야한다.
콘텐츠 전송 네트워크(CDN)
무상태(stateless) 웹 계층
상태 정보 의존적인 아키텍처
무상태 아키텍처
데이터 센터
메시지 큐
서비스간 , 서버 간 결합이 느슨해져, 규모 확장성이 보장된다!
Pub -> MessageQ ->Sub
로그, 메트릭 그리고 자동화
데이터베이스의 규모 확장
수직적 확장
수평적 확장
백만 사용자, 그리고 그 이상(정리)
2장 - 개략적인 규모 추정
2의 제곱수
모든 프로그래머가 알아야 하는 응답지연 값
가용성에 관계된 수치들
예제: 트위터 QPS와 저장소 요구량 추정
3장 - 시스템 설계 면접 공략법
1단계: 문제 이해 및 설계 범위 확정
2단계: 개략적인 설계안 제시 및 동의 구하기
3단계: 상세 설계
4단계: 마무리
해야할것
하지말아야 할것
처리율 제한 장치의 설계
1단계: 문제 이해 및 설계 범위 확정
2단계: 개략적 설계안 제시 및 동의 구하기
처리율 제한 알고리즘
토큰 버킷
누출 버킷 알고리즘
고정 윈도 카운터 알고리즘
이동 윈도 로깅 알고리즘
이동 윈도 카운터 알고리즘
개략적인 아키텍처
3단계: 상세 설계
처리율 제한 규칙
처리율 한도 초과 트래픽의 처리
상세 설계
분산 환경에서의 처리율 제한 장치의 구현
성능 최적화
모니터링
4단계: 마무리
5장 - 안정 해시 설계
해시 키 재배치 문제
안정 해시
해시 공간과 해시 링
해시 서버
해시 키
서버 조회
서버 추가
서버 제거
기본 구현법의 두가지 문제점
가상 노드
재배치할 키 결정
마치며
6장 - 키-값 저장소 설계
문제 이해 및 설계 범위 확정
단일 서버 키-값 저장소
분산 키-값 저장소
CAP정리
CAP 조합 시스템 종류
실세계 실제 분산 시스템
시스템 컴포넌트
데이터 파티션
데이터 다중화
데이터 일관성
일관성 모델
비 일관성 해소 기법: 데이터 버저닝
충돌 감지 가능
장애 처리
장애 감지
일시적 장애 처리
영구 장애 처리
시스템 아키텍처 다이어그램
쓰기 경로
읽기 경로
요약
7장 - 분산 시스템을 위한 유일 ID 생성기 설계
1단계 - 문제 이해 및 설계 범위 확정
2단계 개략적 설계안 제시 및 동의 구하기
다중 마스터 복제
UUID
티켓 서버
트위터 스노플레이크 접근법
3단계: 상세 설계
4단계: 마무리
8장 - URL 단축기 설계
1단계 - 문제 이해 및 설계 범위 확정
2단계 - 개략적 설계안 제시 및 동의 구하기
API 엔드포인트
URL 단축
3단계: 상세 설계
데이터 모델
해시 함수
해시 값 길이(짧은url=해시값)
해시 후 충돌 해소
두접근법 비교
URL 단축기 상세 설계
URL 리다이렉션 상세 설계
4단계: 마무리
9장 - 웹 크롤러 설계
1단계: 문제 이해 및 설계 범위 확정
2단계: 개략적 설계안 제시 및 동의 구하기
웹 크롤러 작업 흐름
3단계: 상세 설계
DFS(Depth-First Search) vs BFS(Breath-First Search)
미수집 URL 저장소
예의
우선순위
신선도
미수집 URL 저장소를 위한 지속성 저장장치
HTML다운로더
성능 최적화
분산 크롤링
도메인 이름 변환 결과 캐시
지역성
짧은 타임아웃
안정성
확장성
문제 있는 콘텐츠 감지 및 회피
4단계: 마무리
10장 - 알림 시스템 설계
중요한 정보 비동기적 제공
1단계: 문제 이해 및 설계 범위 확정
2단계: 개략적 설계안 제시 및 동의 구하기
알림 유형별 지원 방안
3단계: 상세 설계
4단계: 마무리
11장 - 뉴스피드 시스템 설계
1단계: 문제 이해 및 설계 범위 확정
2단계: 개략적 설계안 제시 및 동의 구하기
피드 발행 API
피드 읽기 API
피드 발행
뉴스 피드 생성
3단계: 상세 설계
피드 발행
피드 읽기 흐름 상세 설계
4단계: 마무리
12장 - 채팅 시스템 설계
1단계: 문제 이해 및 설계 범위 확정
2단계: 개략적 설계안 제시 및 동의 구하기
12장 - 채팅 시스템 설계
1단계: 문제 이해 및 설계 범위 확정
2단계: 개략적 설계안 제시 및 동의 구하기
폴링
롱 폴링
웹소켓
개략적 설계안
무상태 서비스
상태 유지 서비스
제 3자 서비스 연동
규모 확장성
저장소
데이터 모델
메시지 ID
3단계: 상세 설계
서비스 탐색
메시지 흐름
1:1 채팅 메시지 처리 흐름
여러 단말 사이의 메시지 동기화
소규모 그룹 채팅에서의 메시지 흐름
접속상태 표시
사용자 로그인