데이터 집약 시스템과 분산 아키텍처
신뢰성·확장성·유지보수성은 유행하는 제품 이름이 아니라, 저장 엔진의 I/O 특성과 분산 일관성의 트레이드오프를 이해하는 데서 출발한다.
이 지도는 마틴 클레프만(Martin Kleppmann)의 Designing Data-Intensive Applications를 바탕으로, 저장 엔진의 기본 동작 원리부터 분산 복제, 합의, 이벤트 스트리밍 파이프라인까지 대규모 데이터 시스템의 핵심 아키텍처를 다룬다.
생각의 지도 (Topic Map)
flowchart TD TOP["데이터 집약 시스템과 분산 아키텍처"] TOP --> C1["저장 엔진의 두 갈래와 색인"] TOP --> C2["복제 지연과 일관성 모델"] TOP --> C3["분산 트랜잭션과 합의의 한계"] TOP --> C4["파생 데이터와 이벤트 스트리밍"] C1 -.->|단일 노드 엔진에서 다중 노드 복제로| C2 C2 -.->|네트워크 분할과 부분 실패의 극복| C3 C2 -.->|이중 쓰기 대신 단일 진실 원천 확립| C4 class TOP,C1,C2,C3,C4 internal-link;
핵심 개념 노트
- 저장 엔진의 두 갈래와 색인:
LSM-Tree의 추가 전용 로그와 B-Tree의 제자리 갱신, 그리고 OLTP(행 지향)와 OLAP(열 지향)의 근본적 작업 부하 차이. - 복제 지연과 일관성 모델:
비동기 복제가 낳는 3대 이상 현상(읽기-쓰기 일관성, 단조 읽기, 일관된 순서)과 정족수()의 현실적 한계. - 분산 트랜잭션과 합의의 한계:
2단계 커밋(2PC)의 코디네이터 블로킹 위험, 부분 실패의 본질, FLP 불가능성 정리와 Raft/Paxos의 실용적 해법. - 파생 데이터와 이벤트 스트리밍:
이중 쓰기의 함정 극복, 변경 데이터 캡처(CDC)와 불변 이벤트 로그, 그리고 끝단 멱등성을 통한 진실의 원천 관리.
출처
- Designing Data-Intensive Applications: 마틴 클레프만의 분산 시스템 아키텍처 정본.
다른 생각의 길
- 단일 코드베이스의 복잡성을 다스리는 모듈 설계: 복잡성의 본질과 모듈 설계
- 소프트웨어 설계 전체 조감도로 돌아가기: 소프트웨어 설계
- 인간의 의사결정과 예측의 한계를 다루는 길: 예측과 의사결정 위생