# 강의 영상
이전 강의에서 "두 장군 문제(The Generals problem)" 을 통해 분산 시스템이 가질 수 있는 근본적인 문제에 대해서 살펴보았습니다.
이번 강의에서는 두번째 문제인 "비잔틴 문제(The Generals problem)" 를 살펴보도록 하겠습니다.
요약
두 장군 문제와 비슷하지만, 비잔팀 문제는 세개 이상의 군대를 가진 경우를 예시로 들고 있습니다.
시나리오는 두 장군 문제와 동일하게 특정 날짜에 공격하기로 해서 동시에 공격해야 하는 상황을 가정합니다.
하지만, 이번에는 통신의 문제가 생긴 상황이 아닌, 악의적인 장군이 있는 경우를 생각합니다.
즉, 여러 군대중 몇 군대가 스파이 처럼, 말을 듣지 않는 배신자가 있는 것이죠.
여기서 문제는, 두개 이상의 군대가 존재할 때 모든 노드가 동시에 같은 메시지를 받지 않는 상황과, 하나의 노드가 배신하여 거짓말 하는 상황이 있을 수 있음 우리는 이걸 구분하지 못한다는 것입니다. 아래와 같은 상황처럼 장군 3은 그래서 어떤게 진짜 올바른 메시지인지 판단할 수 없게 됩니다.
비잔팀 문제에서는 총 n 개의 장군이 있고, 그 중에 f 개의 장군이 악의적인 배신자라면, n은 최소 3f+1 개여야 정상적으로 판단할 수 있다고 힙니다. 최소 2/3 의 의견은 같아야 판단을 할 수 있기 때문이죠.
이 비잔틴 문제는 분산 시스템 뿐만 아니라, 사실상 인터넷 통신 위에서 동작하는 모든 시스템에 전반적으로 해결해야할 문제입니다. 어느 시템이든 무결성과 정합성이 보장되어야 하기 때문입니다. 이전 "두 장군 문제" 에서는 통신에 의한 분산 시스템의 문제를 살펴보았는데, 이번 비잔팀 문제에서는 악의적인 노드로 오염될 가능성에 대한 문제를 살펴보았습니다. 이러한 "통신", "악의적인 노드" 에 대한 고려는 분산 시스템에서 중요한 문제 이므로 항상 고려하며 확인해 나가야 할 것입니다.
'아키텍쳐' 카테고리의 다른 글
[강의 정리] Distributed System 2.4: Fault tolerance and high availability (0) | 2023.03.15 |
---|---|
[강의 정리] Distributed System 2.3: System models (0) | 2023.03.10 |
[강의 정리] Distributed System 2.1: The two generals problem (0) | 2023.02.23 |
[강의 정리] Distributed System 1.3: RPC (Remote Procedure Call) (0) | 2023.02.23 |
[강의 정리] Distributed System 1.2: Computing networking (0) | 2023.02.23 |
댓글