본문 바로가기
아키텍쳐

[강의 정리] Distributed System 2.1: The two generals problem

by hayz 2023. 2. 23.

# 강의 영상

이전 강의에서 클라이언트 서버 를 예시로 분산 시스템을 살펴 보았습니다. 

이번 강의에서는 일반적인 모델, 분산 환경에서 고려해야할 시스템의 특징들에 대해서 하나씩 살펴보도록 하겠습니다. 

 

Models of distributed systems

 

1. generals problem

일종의 군사 들로 비유를 한 대표적인, 아주 유명한 문제 입니다. 일명 "두 장군 문제"로 널리 알려져 있습니다. 

이 "두 장군 문제" 란, 다음과 같습니다. 

어떤 두개의 군대가 있고, 이 두 군대가 하나의 도시를 공격하려고 합니다. 이때, 두 군대가 모두 공격해야만 도시를 점령할 수 있습니다. 두 군대중에 하나라도 공격을 하지 않으면 공격을 진행한 군대는 피해를 받습니다. (단, 두 군대가 모두 공격을 하지 않으면 아무런 일도 일어나지 않아요)

 

그럼, 군대가 성공적으로 도시를 점령하기 위해서는 어떻게 해야 할까요? 

두 군대가 모두 동일한 의견을 갖을 수 있도록 교신을 하고, 합의를 봐야 합니다. 

 

하지만, 이 두 군대 사이에 교신을 하던 중 메시지가 누락될 수도 있고, 문제가 생겨 응답이 늦게 갈 수도 있는 상황이 발생합니다. 

그렇게 되면, 두 군대 사이의 의견에 불일치가 생길 가능성이 높아집니다. 

 

두 군대가 합의를 하는 방안을 고려하지면 이러한 방안들이 있습니다. 

 

첫번째, 응답 받든 말든 공격하자

 -> 이는 의견 불일치할 가능성이 높은 경우이므로 매우위험한 방안입니다.

 

두번째,  긍정적인 답변을 받는 경우에만 공격하자

-> 장군 1이 먼저 교신을 요청했을 경우, 장군 2의 응답이 와야 공격을 할 수 있기 때문에 안전합니다. 하지만 중간에 장군 1이 마음을 바꾸었는데, 그 메시지가 누락되어 장군 2에게 닿지 않았을 경우, 의견 불일치가 발생할 수 있습니다. 이에, 무한으로 응답이 오고가는 상황이 생길 수 있습니다. 

 

 

"No common knowledge: the only way of knowing sometine is to communicate it"

 

통신을 하는 과정에서 완전한 확실성을 갖기는 어렵습니다. 

 

우리는 이 "두 장군 문제"를 살펴보면서 분산 환경에서 생길수 있는 문제를 간접적으로 살펴보았습니다. 

통신을 하여 두 노드간의 의견을 일치시킨다는 것은 굉장히 어려운 일이라는 것도 알아보았습니다. 

 

다음은 비잔티움 문제에 대해서 알아보겠습니다.