최종적 일관성 (eventual consistency)

컴퓨터과학·AI
한 줄 정의: 데이터에 대한 갱신이 더 이상 발생하지 않는다면, 시간이 충분히 지나면 결국 모든 복제본이 같은 값으로 수렴한다는 것을 보장하는 느슨한 분산 일관성 모델.

쉽게 풀면

최종적 일관성은 '지금 당장은 서버마다 다른 값을 보여줄 수 있지만, 새로운 변경이 없다면 결국에는 모두 같은 값으로 맞춰진다'는 약속이다. 예를 들어 소셜 미디어에 글을 올렸을 때 어떤 사용자에게는 몇 초 늦게 보이더라도, 결국에는 모든 사용자가 같은 게시물을 보게 된다. 이 모델은 강한 일관성보다 보장이 약한 대신, 네트워크 지연이나 일부 노드 장애가 있어도 시스템이 계속 응답할 수 있게 해주어 대규모 분산 시스템에서 높은 가용성과 성능을 얻는 데 널리 사용된다.

왜 중요한가

최종적 일관성은 CAP 정리가 제시하는 일관성과 가용성 사이의 근본적인 트레이드오프를 실제 시스템에서 다루는 방식이기 때문에 분산 시스템 논문에서 핵심적으로 등장합니다. 대규모 서비스는 지리적으로 흩어진 여러 서버에 데이터를 복제해 두는데, 네트워크 지연이나 장애 상황에서도 서비스를 계속 제공하려면 즉각적인 일관성을 어느 정도 포기해야 하는 경우가 많습니다. 그래서 클라우드 인프라, 분산 데이터베이스, 대규모 협업 서비스를 설계하는 연구에서 성능과 신뢰성의 균형을 논의할 때 빠지지 않고 등장합니다.

논문에서는 이렇게 쓰입니다

"본 시스템은 사용자 경험상 즉각적인 응답이 중요하다고 판단하여 강한 일관성 대신 최종적 일관성을 채택하였다."

가용성과 성능을 위해 일관성 보장 수준을 완화하는 설계 결정을 정당화할 때 사용된다.

"지역별로 분산 배치된 캐시 노드 간에는 최종적 일관성 모델을 적용하여 쓰기 지연을 최소화하면서도 일정 시간 내 데이터 수렴을 보장하였다."

이 문장은 캐시 시스템 설계 논문에서, 여러 지역에 흩어진 캐시가 즉시 동기화되지는 않지만 결국에는 같은 값으로 맞춰지도록 설계했다는 뜻입니다.

"협업 편집 도구에서는 사용자 간 충돌을 최소화하기 위해 CRDT를 활용한 최종적 일관성 모델을 채택하였다."

이 문장은 협업 소프트웨어 연구에서, 여러 사용자가 동시에 문서를 편집해도 결국 모두 같은 결과로 수렴하도록 자료구조 수준에서 최종적 일관성을 보장했다는 뜻입니다.

조금 더 깊게 보면

최종적 일관성을 실제로 구현할 때는 서로 다른 복제본에서 발생한 갱신들을 어떤 순서로 병합할지가 중요한 문제가 됩니다. 이를 위해 이벤트의 인과관계를 추적하는 벡터 클럭이나, 충돌이 나더라도 자동으로 하나의 상태로 수렴하도록 설계된 CRDT(충돌 없는 복제 데이터 타입) 같은 기법이 함께 사용됩니다. 최종적 일관성 안에서도 읽은 값이 그 사용자의 이전 쓰기를 반드시 반영하도록 보장하는 "읽은 내 쓰기(read-your-writes)"처럼 더 세분화된 보장 수준이 존재하며, 논문에서는 어떤 수준의 보장을 채택했는지를 구체적으로 명시하는 경우가 많습니다.

주의할 점

최종적 일관성은 '언젠가는' 일치한다는 것만 보장할 뿐 그 시간이 얼마나 걸릴지에 대해서는 구체적인 상한을 제시하지 않는 경우가 많아, 이 지연이 문제가 되는 응용에는 부적합할 수 있다.

관련 용어