콘텐츠로 바로가기

Distributed Systems Principles & Consensus

물리적으로 분리된 노드들 간의 상호작용 원리, 네트워크 비결정성 문제, 그리고 동일 상태에 도달하기 위한 합의 알고리즘의 역학을 다루는 학습 노드입니다.

sys.entry
M

Me

hyunyoun's Blog

posts6 min read

1. Overview

분산 시스템 원리 및 합의(Distributed Systems Principles & Consensus, DPC)는 연산 성능의 한계를 돌파하기 위해 여러 대의 컴퓨터를 하나의 거대한 논리적 시스템으로 묶는 물리적 원리를 다룹니다.

분산 시스템의 가장 큰 적은 '부분 장애'와 '네트워크 불확실성'입니다. 학습자는 지연 시간(Latency)이 연산 정합성에 미치는 물리적 영향, 데이터 일관성을 지키기 위한 CAP 정리의 선택, 그리고 신뢰할 수 없는 환경에서 하나의 결론을 내리는 Paxos/Raft 합의 알고리즘을 학습합니다. 이를 통해 어떤 노드가 죽거나 메시지가 누락되어도 전체 시스템의 신뢰성을 유지하는 고수준 분산 로직을 설계합니다.

2. Scope & Boundaries

In-Scope

  • Core Challenges: 부분 장애(Partial Failure), 비동기 모델, 네트워킹 비결정성 물리
  • Reasoning Models: CAP 정리, PACELC 정리, 일관성 모델(Strong vs Eventual)
  • Time & Ordering: Lamport Clocks, Vector Clocks, 물리적 시계 동기화의 한계
  • Consensus Protocols: Paxos, Raft 알고리즘의 동작 단계 및 리더 선출 역학

Out-of-Scope

  • 특정 분산 데이터베이스(NoSQL) 관리 기술 (06-02 NoSQL 영역으로 위임)
  • 분산 시스템상의 보안 인증 및 암호화 (10. Security 영역으로 위임)

Boundaries

  • DPC vs. Distributed Logic: 06-03(DL)이 '분산된 저장 매체와 데이터 정합성'에 특화된다면, DPC는 '연산 노드 간의 상태 공유와 일반적인 합의 메커니즘'이라는 아키텍처 원론에 집중합니다.

3. Counterexample

  • 단순히 API를 여러 서버로 분산 처리하는 것은 DPC 학습이 아닙니다. 여러 서버에 분산된 공유 변수값을 업데이트할 때, **경쟁 상태(Race Condition)**를 막기 위해 어떻게 물리적인 **분산 락(Distributed Lock)**을 구현하거나, 합의 알고리즘을 통해 **선형성(Linearizability)**을 보장할지 논리적으로 증명할 수 있어야 합니다.

4. Prerequisites

  • 기초 자료 구조 (Basic): 큐, 그래프 탐색, 해시 테이블 개념이 프로토콜 구현에 필요합니다. (04. CDS)
  • 네트워크 기초 및 OSI 스택 (Recommended): TCP/UDP의 신뢰성 차이와 타임아웃 개념 이해가 필수적입니다. (08. Network)

5. Learning Map

  1. Facing Uncertainty: 네트워크 지연과 패킷 유실이 시스템에 주는 물리적 리스크를 인지합니다.
  2. Synchronizing Time: 물리 시계가 없는 분산 환경에서 이벤트 순서를 정하는 논리 시계를 이해합니다.
  3. Reaching Consensus: 신뢰할 수 없는 다수 노드가 하나의 값에 동의하는 합의 알고리즘을 익힙니다.
  4. Resilient States: 장애 노드가 복구되어 다시 클러스터에 합류하는 상태 복구 물리 과정을 배웁니다.

6. Learning Topics

Basic

Core: 분산 시스템의 특징과 CAP 정리 (Distributed Challenges)

  • Why to Learn: 분산 환경에서 모든 것을 동시에 가질 수 없음을 인지하고 현실적인 설계를 하기 위함입니다.
  • What to Learn:
    • 분산 시스템의 8가지 오해(Fallacies of Distributed Computing)
    • CAP 정리: Consistency(일관성), Availability(가용성), Partition Tolerance(단절 용인)
    • 장애 모델: 크래시 장애 vs 비잔틴 장애 정체
  • How to Learn:
    • 네트워크 단절 상황을 가정한 시나리오에서 데이터 정합성과 응답성 중 무엇을 택할지 의사결정 연습
    • 특정 시스템(예: DNS, Redis 클러스터)이 CAP 중 무엇에 집중하는지 분석
  • Implement: CAP 정리의 트레이드오프를 도식화한 아키텍처 의사결정 가이드

Core: 논리적 시계와 이벤트 순서 (Logical Clocks & Ordering)

  • Why to Learn: 물리적 시계가 일치하지 않는 서버들 사이에서 '누가 먼저 했는가'를 판별하기 위해서입니다.
  • What to Learn:
    • 인과 관계(Causality)와 선행 발생(Happened-before) 관계의 정의
    • 램포트 시계(Lamport Clock)의 물리적 카운터 증가 규칙
    • 벡터 시계(Vector Clock)를 이용한 데이터 버전 충돌 감지 물리
  • How to Learn:
    • 3대 이상의 서버 간 메시지 교환 시퀀스를 그려보고 각 시점의 램포트 시계값 수기 계산
    • DynamoDB 스타일의 충동 해결(Conflict Resolution) 시나리오 실습
  • Implement: 벡터 시계를 활용하여 데이터 충돌을 감지하고 병합하는 기초 로직

Practical

Core: Raft 합의 알고리즘 실무 (Raft Consensus)

  • Why to Learn: 이해하기 쉬우면서도 강력한 합의 메커니즘을 실제 시스템에 적용하기 위함입니다.
  • What to Learn:
    • Raft의 3가지 상태: Leader, Follower, Candidate 물리 거동
    • 리더 선출(Leader Election) 과정과 텀(Term) 관리 논리
    • 로그 복제(Log Replication) 및 안정적 커밋(Commitment) 프로세스
  • How to Learn:
    • Raft 인터랙티브 시뮬레이터를 통해 리더 노드 정지 시 Candidate로 전환되는 과정 관측
    • 로그 인덱스 불일치 상황에서 리더가 Follower의 로그를 동기화하는 물리적 절차 분석
  • Implement: Go나 Python을 이용한 간단한 Raft 기반 키-값 저장소의 리더 선출 모듈

Advanced

Core: 비잔틴 장애와 고수준 합의 (Byzantine Fault Tolerance)

  • Why to Learn: 악의적인 노드의 공격이나 극심한 신뢰 불능 상황(블록체인 등)에 대응하기 위해서입니다.
  • What to Learn:
    • 비잔틴 장군 문제(Byzantine Generals Problem)의 정의와 임계치 분석
    • PBFT (Practical Byzantine Fault Tolerance) 기초 논리
    • 분산 스냅샷과 체크포인팅(Checkpointing)을 통한 복구 가속화 물리
  • How to Learn:
    • 노드 4대 중 1대가 거짓 정보를 보낼 때 전체가 합의에 도달하는 프로세스 연구
    • 블록체인의 합의(PoW, PoS)가 고전적 합의 알고리즘과 물리적으로 어떻게 다른지 비교
  • Implement: 일부 노드의 오작동이나 변조를 탐지하여 격리하는 비잔틴 합의 시뮬레이션 환경

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core/misused/legacy)
Consensus (합의) 여러 개의 노드가 하나의 값이나 동작 상태에 대해 동일한 결정을 내리도록 하는 프로세스입니다. 추천 결합성 보장 Raft / Paxos Protocol 단순한 '데이터 저장'과 혼동 P1:CS2023/Distributed core
CAP Theorem 분산 시스템은 일관성, 가용성, 단절 용인성 세 가지 성질을 동시에 만족할 수 없다는 이론입니다. 기본 설계 제약 PACELC Partition '일관성 없음'을 오류로 오해 P1:CS2023 core
Raft Paxos의 복잡성을 개선하여 리더 중심의 명확한 상태 관리를 지원하는 분산 합의 알고리즘입니다. 실무 실무 구현 Leader Election Paxos 단순 복제와 동일시함 Industry Paper core
Linearizability 연산이 실행된 어느 시점 이후부터는 모든 읽기 연산이 항상 최신값을 반환하는 강한 일관성 성질입니다. 심화 정합성 모델 Atomicity Serializability 단순히 '빠름'으로 오해 P1:CS2023/Distributed core

8. References

Primary References

Secondary References

  • [Distributed Systems: An Algorithmic Approach] Sukumar Ghosh — Formal approach.
  • [Reliable Distributed Systems] Kenneth Birman — Focus on high availability.

Industry References

  • [Consensus: Bridging Theory and Practice] Diego Ongaro (Raft creator) — Practical implementation guide.
  • [Etcd Documentation - Why Raft?] — Real-world usage of consensus for configuration.

9. Final Checklist

Primary Checklist

  • 네트워크 단절(Network Partition) 발생 시 가용성을 위해 일관성을 포기한다는 것이 실제 데이터 조회 시 어떤 의미인지 사례를 들어 설명 가능한가? (P1)
  • Paxos와 Raft 알고리즘에서 왜 과반수(Quorum) 찬성이 필요한지 물리적 논리를 기술할 수 있는가? (P1)

Secondary Checklist

  • 램포트 시계가 이벤트의 '전체 순서(Total order)'가 아닌 '부분 순서(Partial order)'만을 보장하는 이유를 인지하고 있는가?
  • 분산 시스템에서 '멱등성(Idempotency)'이 중복 메시지 전송 문제를 어떻게 물리적으로 해결하는지 이해하는가?

Industry Checklist

  • Kubernetes의 컨트롤 플레인이나 DB 클러스터에서 리더 선출 실패 시 서비스에 미치는 물리적 영향도를 시뮬레이션 가능한가? (SFIA)
  • 전역적으로 분산된 시스템에서 물리적 시계 동기화(NTP 등) 오차 범위를 고려한 타임아웃 설정을 할 수 있는가?