1장 | 분산 컴퓨팅이란 무엇인가? 1.1 두 장군 이야기 게임으로 풀어보는 두 장군 간의 합의 문제 1.2 분산 컴퓨팅의 정의 분산 컴퓨팅의 주체 비동기적인 통신 환경
2장 | 중계자와 2단계 커밋 프로토콜 2.1 계좌 이체 문제 분산 프로세스 간 올바른 거래의 어려움 2.2 안전성과 라이브니스 안정성과 라이브니스 동시 충족 문제 확약과 합의의 어려움 2.3 2단계 커밋 프로토콜 스트로우맨 프로토콜 원자적 커밋 프로토콜 안정성 보장을 위한 조치 라이브니스 보장을 위한 조치 2단계 커밋 프로토콜 수행 예시
3장 | 시간 동기화 문제와 논리적 시계 3.1 이중화된 데이터베이스 문제 분산된 데이터베이스의 병행 갱신 3.2 시간 동기화 기법 크리스티안 알고리즘 버클리 알고리즘 네트워크 시간 프로토콜 3.3 논리적 시계 램포트 시계 이벤트의 전체 순서 3.4 램포트 시계를 활용한 비일관성 문제 해결 데이터베이스 복제 알고리즘 분산 데이터베이스 병행 갱신 문제 해결
4장 | CAP과 FLP 정리 4.1 복제 시 발생하는 네트워크 장애 비일관성의 문제 가용성의 문제 궁극적 또는 강한 일관성 일관성과 가용성 동시 충족 딜레마 4.2 합의 합의 조건 4.3 FLP 정리 분산 장치들 간의 동일값 결정 문제 장애 발생 시 결정론적 합의 알고리즘 존재 여부 4.4 무결한 프로세스 간의 합의 정족수 충족 합의 직장인 회식 여부 합의 예시
5장 | Paxos 5.1 전설 Paxos 섬의 고대 유물 5.2 장애 유형 난이도 순 장애 유형 5.3 Paxos 알고리즘 Paxos의 안전성과 라이브니스 Paxos 참여 프로세스 역할 Paxos 3단계 수행 과정 5.4 Paxos 역으로 파헤치기 Paxos 특성 분석 5.5 Paxos로 단절된 두뇌 문제 해결 2PC 프로토콜과 TC 장애 두뇌 단절 문제 Paxos에 의한 리더 선정
6장 | 암복호화와 디지털 서명 6.1 고전적 암호 시저 암호 6.2 RSA 알고리즘 암호화 복호화 공개키와 비밀키 6.3 디지털 서명 위변조 방지 인증 기관의 필요성
7장 | 비잔틴 장애와 합의 7.1 비잔틴 장애 문제 합의 과정 교란 7.2 비잔틴 장애 내성 합의 알고리즘 백업 서버 복제 문제 디지털 서명 활용 사전 준비 단계와 준비 단계 확약 단계 PBFT 알고리즘
8장 | RAFT 8.1 로그 복제의 문제 프라이머리 서버 선정 문제 8.2 리더 선정 방법 RAFT 참여자 역할 주기적 하트비트 임기의 개념 선거 과정 RAFT의 안전성과 라이브니스 8.3 로그 관리 로그 구조 리더 지시 실패 예시 안전한 리더 선정 로그 정정 방법
9장 | 블록체인 9.1 이중 지불 사기꾼 잡기 게임 게임 규칙 게임 수행 예시 이중 지불 문제 9.2 블록체인 기반 비트코인 비트코인 구조 비트코인 양도 과정 비트코인 트랜잭션 검증 과정 9.3 블록체인과 가상화폐의 한계 블록체인 응용 저장 공간 활용 한계 탈중앙화 검증 방식의 한계 검증 속도의 문제
10장 | 벡터 시계와 스냅샷 찍기 10.1 단체 메시징 애플리케이션 문제 메시지들의 인과관계 파악 문제 램포트 시계의 한계 10.2 벡터 시계 벡터 시각 갱신 벡터 시각에 따른 이벤트 인과관계 벡터 시계를 활용한 안전한 메시지 열람 방법 10.3 전역 스냅샷 전역 스냅샷의 필요성 올바르지 않은 전역 스냅샷 예시 마커 기반 전역 스냅샷 찍는법 정확한 순서 관계 기록의 보장
11장 | 성능 모델링과 병렬 처리 11.1 큐잉 네트워크 모델 서비스센터 모델 서비스센터 성능 지표 성능 지표 간의 관계 11.2 성능 법칙 가용률의 법칙 리틀의 법칙 강제 플로우의 법칙 11.3 맵리듀스 기반 병렬 처리 웹페이지 검색의 문제 맵리듀스 작동 원리 하둡 생태계
12장 | 분산 데이터베이스 12.1 장애 시 확장성 관리 문제의 고민 단순 해싱의 문제점 데이터 완전 재배치 문제 12.2 일관적 해싱 해시 링 서버별 해시값 담당 범위 배정법 데이터 레코드 배치 방법 일관된 해시의 장점 12.3 분산 해시 테이블 중앙 디렉토리 서비스 관리 문제 Chord 알고리즘 12.4 가상 노드 기법 노드 간 불균형 문제 해결 DHT의 활용
13장 | Publish/Subscribe 13.1 Publish/Subscribe 패러다임 Publisher Subscriber 시공간의 분리 13.2 Publish/Subscribe의 작동 원리 관심사 매칭 콘텐츠 기반 라우팅 13.3 Publish/Subscribe의 응용 Service Choreography ESB
14장 | 보안 관제 14.1 목적에 따른 사이버 공격 유형 서비스 장애 공격 기밀 정보 탈취 및 위변조 14.2 공격 패턴 정의 스노트 문법 스노트 규칙 예시 스노트 운영 모드 스노트의 문제점과 한계 ATT&CK 기반 행위분석 킬체인 14.3 데이터 기반 공격 패턴 분석과 탐지 체계 SIEM 연관 분석 인과관계 분석 시계열 분석 그래프 분석 평판 분석 문맥 분석
15장 | 기밀 보호 15.1 영지식 증명 직관적 영지식 증명 Fiat-Shamir 프로토콜 Schnorr 프로토콜 Fiat-Shamir 휴리스틱 15.2 다자간 연산 누가 더 부자인가? 안전 회로 평가 15.3 동형암호 직관적 예시 Paillier 암호화 15.4 기밀 보호 Pub/Sub 콘텐츠 기반 Pub/Sub의 딜레마 재암호화 동형암호의 활용 15.5 분산학습 인공신경망 개념 연합학습 분할학습
16장 | Golang RPC와 DevOps 16.1 Golang 기초 Go의 특성 Go 기본 문법 16.2 RPC로 메시지 보내기 RPC 서버 RPC 클라이언트 16.3 암호화 메시지 디지털 서명 복호화 서버 디지털 서명 클라이언트 16.4 분산 시스템 구동 환경 온프레미스 클라우드 모바일 단말 16.5 DevOps 폭포수 모델 애자일 모델 CI/CD 도커 컨테이너 젠킨스 쿠버네티스 DevOps 정리