비동기 환경에서 이벤트 기반 동기화로 구현한 결정적 합의
초록
**
본 논문은 이벤트 기반 동기화를 이용해 비동기 시스템에서 하나의 크래시를 견디는 결정적 합의 알고리즘을 제시한다. 저자는 합의를 “데이터‑독립(벡터 합의)”과 “데이터‑종속(이진 합의)” 두 종류로 구분하고, 기존 FLP 불가능성 증명이 암묵적으로 가정한 세 가지 전제를 밝힌 뒤, 특히 세 번째 전제가 실증적으로 근거가 없음을 실험으로 입증한다. 결과적으로 벡터 합의는 비동기에서도 안전·활성·내결함성을 동시에 만족할 수 있음을 보인다.
**
상세 분석
**
논문은 먼저 기존 FLP 정리의 증명 과정에서 “합의 불가능”, “종료 불가능”, “이진 합의와 벡터 합의의 동등한 불가능성”이라는 세 가지 암묵적 가정을 식별한다. 저자는 이 가정들을 각각 비판적으로 검토한다. 첫 번째 가정은 ‘동점(tie)’ 상황을 합의 불가능으로 보는 논리적 오류를 지적한다. 동점은 단순히 0과 1의 표가 동일하게 나뉘는 경우이며, 이를 새로운 이진 값(예: ‘동점’)으로 정의하면 합의 자체는 여전히 가능해진다. 두 번째 가정은 “비동기에서는 합의 값을 결정하기 전까지 절대로 종료할 수 없다”는 전제로, 이는 벡터 합의가 먼저 종료된 뒤 각 프로세스가 동일한 결정론적 함수를 적용해 이진 값을 도출함으로써 반증된다. 세 번째 가정은 데이터‑종속(이진) 합의의 불가능성을 데이터‑독립(벡터) 합의에도 그대로 적용한다는 전제로, 이는 두 합의 유형이 근본적으로 다른 목표와 메커니즘을 갖고 있음을 무시한다는 점에서 부당하다.
이후 저자는 ‘이벤트 기반 동기화(event‑based synchronisation)’라는 새로운 메커니즘을 제안한다. 각 프로세스는 로컬 이벤트 큐에 도착한 메시지를 기반으로 상태 전이를 수행하고, 특정 이벤트(예: 충분한 수의 초기값 수신) 발생 시 즉시 벡터 합의를 선언한다. 이 과정에서 크래시가 발생한 프로세스의 입력값은 ‘∅’(null) 로 표시되며, 나머지 프로세스는 이를 포함한 n‑벡터를 합의한다. 중요한 점은 이 합의가 유효(valid) 하다는 것이다. 즉, 합의된 벡터는 실제 시스템에 존재하는 초기값들을 정확히 반영하고, 하나의 결함 프로세스가 누락된 경우에도 나머지 n‑1개의 값은 정확히 포함한다.
실험 부분에서는 동기식 환경에서 구현한 비교 시스템을 이용해 이진 합의와 벡터 합의 사이의 상관관계를 측정한다. 결과는 벡터 합의가 성공적으로 종료된 경우, 모든 정상 프로세스가 동일한 벡터를 얻고, 이를 동일한 결정론적 함수에 입력했을 때 동일한 이진 값을 산출한다는 것을 보여준다. 따라서 “이진 합의는 불가능하다”는 기존 주장에 반증을 제공한다.
마지막으로 저자는 FLP 정리의 적용 범위를 재정의한다. 기존 정리는 ‘데이터‑종속, 동점 미할당, 종료 전 합의값 미결정’이라는 제한된 프로토콜 클래스에만 엄밀히 적용될 수 있으며, 이 제한을 벗어난 프로토콜—특히 이벤트 기반 동기화와 벡터 합의를 이용한 프로토콜—에 대해서는 FLP 불가능성이 성립하지 않는다. 이는 비동기 시스템에서도 결정적, 내결함성, 그리고 완전한 종료를 동시에 만족하는 합의 알고리즘이 설계 가능함을 의미한다.
**
댓글 및 학술 토론
Loading comments...
의견 남기기