최종적 일관성이란 무엇인가
분산 시스템에서 여러 서버(노드)에 동일한 데이터를 복제해 저장할 때, 모든 노드가 항상 같은 값을 보장하기는 어렵습니다. 최종적 일관성(Eventual Consistency)은 데이터를 업데이트한 직후에는 노드마다 값이 다를 수 있지만, 시간이 지나 추가 업데이트가 없으면 결국 모든 노드가 동일한 값으로 수렴한다는 일관성 모델입니다. 즉 ‘지금 당장은 아니지만 언젠가는 모두 같아진다’는 것이 핵심 개념입니다.
동작 원리와 예시
예를 들어 카카오톡 같은 메신저 서비스가 전 세계 여러 데이터센터에 서버를 두고 있다고 가정해봅시다. 서울에 있는 사용자가 프로필 사진을 변경하면, 그 정보는 먼저 서울 서버에 저장됩니다. 그런데 도쿄나 미국의 서버에는 아직 복제가 안 되어서, 그 지역 사용자는 몇 초간 예전 프로필 사진을 보게 될 수 있습니다. 하지만 몇 초 뒤 복제가 완료되면 전 세계 모든 서버가 동일한 최신 프로필 사진 정보를 갖게 됩니다. 이 잠깐의 ‘불일치 구간’을 허용하는 대신, 시스템 전체는 더 빠르게 응답하고 장애에도 잘 견딜 수 있습니다.
대표적으로 Amazon DynamoDB, Cassandra, MongoDB의 일부 읽기 옵션 등이 최종적 일관성을 채택하고 있습니다.
실무에서 왜 사용할까
강한 일관성(Strong Consistency)을 유지하려면 모든 노드가 쓰기 작업이 끝날 때까지 서로 응답을 기다려야 하므로 속도가 느려지고, 네트워크 장애 시 시스템 전체가 멈출 위험이 있습니다. 반면 최종적 일관성을 채택하면 다음과 같은 이점이 있습니다.
- 가용성(Availability) 향상: 일부 노드가 응답하지 않아도 서비스는 계속 동작
- 확장성(Scalability) 개선: 노드를 늘려도 성능 저하가 적음
- 사용자 체감 속도 향상: 즉각적인 응답 제공
대신 은행 잔액이나 재고 수량처럼 정확성이 매우 중요한 데이터에는 적합하지 않을 수 있어, 서비스 특