오늘은 비잔티움 장군 문제에 대한 개념정리를 하고자합니다!
A군은 예전부터 참새가 너무나도 작고 귀여웠습니다. 그런데 어느날 참새가 다 성장했을때도 저 크기인것인가? 참새의 새끼는 본적이 없는 것 같은데??
너무나도 궁금한 A군은 인터넷을 통해 참새는 원래 작은가요? 어른 참새도 저렇게 작은건가요?라고 네트워크에 연결된 사용자들에게 물어보기 시작합니다.
B군 : 저는 조류과를 다니고 있습니다. 사실 참새는 비둘기의 새끼입니다. 못 믿으실것 같아서 아래에 인증샷 및 위키 자료 첨부해 드립니다.
A군은 너무나도 큰 충격에 빠졌습니다. 내가 그토록 사랑스럽게 생각하고 아꼈던 참새가 사실 비둘기의 새끼라니..!?
혹시.. 여러분들중에서도 이게 사실이라고 믿는 분은 없으시죠? 비둘기의 새끼는 비둘기입니다...
그럼 왜 이런 이야기로 시작을 했을까요? "비잔티움 장군 문제" 는 분산 처리 시스템에서 발생할 수 있는 오류와 관련된 개념입니다. 그럼 지금부터 자세히 살펴보도록 하겠습니다.
위키에 정의된 비잔티움 장군 문제의 정의부터 살펴보도록 하겠습니다.
비잔티움 장군 문제는 레슬리 램포트와 쇼스탁, 피스가 공저한 1982년 논문에서 처음 언급됐다.[1] 이 논문에서 저자들은 적군의 도시를 공격하려는 비잔티움 제국군의 여러 부대가 지리적으로 떨어진 상태에서 각 부대의 지휘관들이 (중간에 잡힐지도 모르는) 전령을 통해 교신하면서 공격 계획을 함께 세우는 상황을 가정하고 있다. 이 부대의 지휘관 중 일부에는 배신자가 섞여있을 수 있고, 배신자는 규칙을 충실히 따르는 충직한 지휘관들과 달리 규칙에 얽매이지 않고 마음대로 행동할 수 있다. 이 때 배신자의 존재에도 불구하고 충직한 지휘관들이 동일한 공격 계획을 세우기 위해서는 충직한 지휘관들의 수가 얼마나 있어야 하며, 이 지휘관들이 어떤 규칙을 따라 교신해야 하는지에 대한 문제가 비잔티움 장군 문제다.
스팀성을 함락하기 위해 공격을 준비하고 있는 스티미언들이 있습니다. 스티미언들을 이끄는 지휘관은 총 5명이고, 각 지휘관이 보유한 병력은 1,000명입니다. 스팀성에는 3,000명의 병사가 성을 지키고 있기 때문에 스팀성 함락을 위해서는 최소 4명의 지휘관이 동시에 공격 명령을 내려야합니다.
각 지휘관들은 지리적으로 떨어져 있는 상황속에서 동시에 공격을 할 수 있도록 전령을 통해서 서로 합의를 하고 있었습니다. 그런데 이때 내부의 배신자가 나타나 공격 시간을 교란한다면 각 지휘관들은 어떻게 정확한 공격시간을 판단할 수 있을까요?
즉 비잔티움 장군의 문제는 분산 처리 시스템(지리적으로 떨어진 부대)에서 어떤 데이터(전령)를 주고 받을때 통신의 문제가 발생하거나, 악의적으로 데이터를 조작하여 가짜 정보를 전달할 경우 시스템은 어떻게 올바른 정보를 가져올 수 있는지에 대한 문제를 제기한 이야기입니다.
자 그럼 오늘 학습한 내용을 정리해보도록 하겠습니다.
이제 비잔티움 장군 문제가 어떤 내용인지 확실히 이해하셨죠? 다음 시간에는 비트코인에서 비잔티움 장군 문제를 어떻게 해결했는지에 대한 포스팅으로 찾아뵙도록 하겠습니다!
[참고자료]