티스토리 뷰
분산 시스템에서 일관성을 유지하는 것은 매우 어려운 과제이다. 이 장에서는 분산 환경에서 흔히 발생하는 문제들과 그 원인을 다룬다.
1. 부분 장애 (Partial Failure)
- 단일 시스템에서는 전체가 성공하거나 실패하지만,
분산 시스템에서는 일부 노드, 일부 네트워크 링크 등만 실패하는 부분 장애가 일반적이다. - 장애 감지는 어렵고, 실패인지 지연인지 구분하기 힘들다.
- 복구 가능한 실패인지 여부도 알 수 없는 경우가 많다.
2. 신뢰할 수 없는 네트워크
- 분산 시스템은 비동기 네트워크 위에서 동작하며,
패킷 지연, 손실, 재정렬, 중복 전송 등의 문제가 발생할 수 있다. - 메시지가 수신되지 않았다고 해서, 전송되지 않은 것은 아니다.
- 타임아웃과 재시도를 통한 실패 감지는 부정확하다.
3. 신뢰할 수 없는 시계
- 각 노드의 시계는 서로 정확히 동기화되지 않으며, 클럭 드리프트가 존재한다.
- 시간 기반 순서 판단은 종종 잘못된 결정을 내리게 한다.
- 해결책:
- 물리적 시계: NTP 등은 오차가 존재함
- 논리적 시계: Lamport Timestamp, Vector Clock 등으로 인과관계만 판단 가능
4. 지식, 진실, 그리고 거짓말
- 각 노드가 가지고 있는 상태는 다른 노드와 다를 수 있다.
- 하나의 노드가 알고 있는 사실이 전체적으로 합의된 진실인지 보장되지 않는다.
- 비잔틴 장애(Byzantine Fault):
- 노드가 악의적으로 거짓 정보를 보낼 수 있음
- 단순 충돌보다 훨씬 다루기 어려운 문제
5. 시스템 모델과 현실의 차이
- 이상적인 시스템 모델:
- 동기 네트워크, 정확한 장애 감지, 동기화된 시계
- 현실:
- 네트워크 지연, 패킷 손실, 시계 불일치, 일시적 오류
- 안전성과 생존성의 균형:
- 안전성 (Safety): 잘못된 동작을 하지 않음
- 생존성 (Liveness): 시스템이 계속 응답함
핵심
분산 시스템은 본질적으로 실패와 불확실성에 노출되어 있다.
이러한 환경에서 일관성을 유지하려면, 시스템 설계자는 불확실성을 인정하고 설계에 반영해야 한다.
- 장애는 반드시 발생한다.
- 네트워크는 신뢰할 수 없다.
- 시계는 일치하지 않는다.
- 진실은 상대적일 수 있다.
따라서, 완벽한 일관성을 요구하기보다는 허용 가능한 수준의 일관성과 복구 전략을 세우는 것이 현실적인 접근
회고 (부족한 내용 보충)
1. 합의 (Consensus)
분산 시스템에서 노드들이 같은 값을 결정하는 과정
장애 상황에서도 일관된 상태 유지가 핵심
사용 예시
리더 선출 (Leader Election)
로그 복제 (Log Replication)
대표 알고리즘
Paxos
Raft
Viewstamped Replication
2. CAP 정리 (CAP Theorem)
분산 시스템은 아래 세 가지 속성 중 동시에 두 가지만 보장할 수 있음
Consistency (일관성): 모든 노드가 같은 데이터를 읽음
Availability (가용성): 모든 요청에 대해 유효한 응답을 제공
Partition Tolerance (분할 허용성): 네트워크 분할 상황에서도 시스템이 일부 동작을 계속 수행
네트워크 분할(P)이 현실적으로 항상 존재한다고 가정하면
Consistency vs Availability 사이에서 선택해야 함
3. 응답 불가능성 (Impossibility of Knowing)
응답 없음 = 실패라고 단정할 수 없음
원인
느린 네트워크
처리 지연
일시적인 노드 부하 등
설계 전략
타임아웃과 재시도는 추정일 뿐이며, 정확한 실패 감지 불가
시스템은 항상 불확실성 속에 동작한다는 전제를 가져야 함
4. 안전성과 생존성 (Safety vs Liveness)
안전성 (Safety): 시스템이 잘못된 결과를 절대 내지 않음
생존성 (Liveness): 시스템이 언젠가는 반드시 응답함
두 속성은 종종 트레이드오프 관계
예: 분할 발생 시, 일관성을 위해 응답을 일부 포기할 수도 있음
설계 시 두 속성의 균형을 어떻게 잡을지가 핵심
'스터디' 카테고리의 다른 글
| 데이터 중심 애플리케이션 설계 5장 (0) | 2025.05.08 |
|---|---|
| 데이터 중심 애플리케이션 1,2장 (0) | 2025.04.22 |
