왜 분산 시스템은 "동의"하는 것만으로도 어려운가? FLP 불가능성 정리의 충격, Lamport의 Paxos와 그 이해 불가능성, Raft가 바꾼 판도, ZooKeeper의 ZAB, KRaft의 탄생, Byzantine Fault Tolerance, CRDT의 합의 없는 수렴 — 모든 분산 시스템의 진짜 심장을 파헤친다.
분산 시스템은 "여러 컴퓨터가 협력하는 일"처럼 보이지만, 실제로는 "시계가 다른 여러 컴퓨터가, 일부가 고장난 상태에서, 메시지가 손실되고 지연되는 네트워크를 통해 합의에 이르는 일"이다. Lamport/Vector Clock·HLC부터 Raft·Paxos·PBFT, Event Sourcing·CQRS, Saga 패턴, CRDT, 그리고 8 Fallacies와 실전 장애 패턴까지. Byzantine Fault를 포함한 분산의 진짜 얼굴을 담은 한 편. Season 2의 열두 번째.
etcd, Consul, CockroachDB, TiDB가 모두 Raft를 쓰는 이유는 이해하기 쉽기 때문이다. Leader Election, Log Replication, Safety Property, Membership Change, Snapshot까지 — 실전 시스템 분석과 함께 700줄로 깊이 있게 파헤친다.
분산 시스템의 모든 것! CAP/PACELC 정리, 합의 알고리즘(Raft/Paxos), 복제 전략(리더-팔로워/멀티리더/무리더), 일관성 모델(강한/최종/인과), 분산 클럭(Lamport/Vector), 장애 모델(비잔틴/크래시), 분산 트랜잭션(2PC/3PC/Saga).
분산 시스템의 모든 것! CAP/PACELC 정리, 합의 알고리즘(Raft/Paxos), 일관성 모델(Strong/Eventual/Causal), 복제(Leader-Follower/Multi-Leader/Leaderless), 파티셔닝, 분산 트랜잭션(2PC/3PC), 시계(Lamport/Vector Clock)까지.