콘텐츠로 이동

분산 시스템의 견고성 (Robustness)

Jan 23, 2026 · Updated Jan 27, 2026

분산 시스템의 견고성(Robustness)은 링크, 호스트, 사이트 장애나 메시지 손실 등의 실패에도 불구하고 계속 동작할 수 있는 능력이다. 공유 메모리가 없기 때문에 링크, 사이트, 호스트 장애와 메시지 손실을 명확히 구분하기 어렵다.

장애 처리 3단계
1 장애 감지
Heartbeat으로 장애 발생 탐지
2 재구성
라우팅 업데이트, 코디네이터 선출
3 복구
복귀 알림 후 테이블 업데이트
  • Heartbeat 프로시저: 주기적으로 “I-am-up” 메시지 교환
  • 일정 시간 내 메시지 미수신 시 “Are-you-up?” 메시지 전송
  • 다른 경로로 시도하여 링크 장애 vs 사이트 장애 구분
sequenceDiagram
  participant A as Site A
  participant B as Site B

  A->>B: I-am-up (주기적)
  B->>A: I-am-up (주기적)

  A-xB: I-am-up (타임아웃)

  A->>B: Are-you-up?
  B->>A: I-am-up (살아있으면)
  • 링크 장애: 라우팅 테이블 업데이트를 모든 사이트에 브로드캐스트
  • 사이트 장애: 장애 통보, 서비스 사용 중지, 중앙 코디네이터 장애 시 새 코디네이터 선출
  • 네트워크 분할(Partition): 도달 불가한 사이트가 있을 경우 두 개의 코디네이터가 충돌할 수 있음
  • 링크 복구: Heartbeat으로 자동 감지하여 재통합
  • 사이트 복구: 복귀 알림 후 로컬 테이블 업데이트 (라우팅 정보, 다운 사이트 목록, 미전달 메시지, 트랜잭션 로그 등)

중복 통신 경로, RAID 스토리지, 클러스터링 등으로 구현한다. 성능/기능의 점진적 저하(Graceful Degradation)가 바람직하다.

고속도로 네트워크와 유사하다.. 한 도로가 막히면 네비게이션이 우회로 안내(링크 장애), 한 도시의 물류센터가 문 닫으면 다른 센터가 대신 처리(사이트 장애), 도로가 복구되면 다시 최적 경로로 전환(복구)한다.