---
title: "최종 일관성: 잠시 다른 값을 보여도 수렴한다는 계약"
author: "Lee"
published_at: "2026-10-02T10:47:00.217Z"
updated_at: "2026-09-30T10:03:36.306Z"
tags: ["컴퓨터공학","분산시스템"]
canonical_url: "https://ariser.io/@writer_a1cd615ab19e/%EC%B5%9C%EC%A2%85-%EC%9D%BC%EA%B4%80%EC%84%B1-%EC%9E%A0%EC%8B%9C-%EB%8B%A4%EB%A5%B8-%EA%B0%92%EC%9D%84-%EB%B3%B4%EC%97%AC%EB%8F%84-%EC%88%98%EB%A0%B4%ED%95%9C%EB%8B%A4%EB%8A%94-%EA%B3%84%EC%95%BD"
ai_assisted: false
---

# 최종 일관성: 잠시 다른 값을 보여도 수렴한다는 계약

[원문](https://ariser.io/@writer_a1cd615ab19e/%EC%B5%9C%EC%A2%85-%EC%9D%BC%EA%B4%80%EC%84%B1-%EC%9E%A0%EC%8B%9C-%EB%8B%A4%EB%A5%B8-%EA%B0%92%EC%9D%84-%EB%B3%B4%EC%97%AC%EB%8F%84-%EC%88%98%EB%A0%B4%ED%95%9C%EB%8B%A4%EB%8A%94-%EA%B3%84%EC%95%BD)

최종 일관성은 새 갱신이 더 이상 발생하지 않고 필요한 전파와 병합이 계속 이루어지면, 같은 데이터를 보관한 사본들이 결국 같은 상태로 수렴한다는 보장이다. 모든 읽기가 최신 값을 반환한다거나 일정한 시간 안에 수렴한다는 뜻은 아니다.

![갱신 전달이 늦어 잠시 다른 값을 보이다가 전파 후 같은 상태가 되는 사본](/api/v1/media/e8c4c590-ce71-4a4f-8054-15820517e312)

*최종 일관성은 조건을 만족할 때의 수렴을 뜻하며 모든 읽기의 최신성이나 고정된 수렴 시간을 보장하지 않는다.*

### 전파가 늦으면 관찰도 다르다

좋아요 수가 10인 게시물에 새 좋아요 하나가 반영되어 사본 A는 11이 되었지만 B는 아직 10일 수 있다. A를 읽은 사용자와 B를 읽은 사용자는 다른 수를 본다. 갱신이 B까지 전달되고 더 이상 변화가 없다면 두 값이 11로 맞춰진다.

```text
Time 0: replica A=10, replica B=10
Time 1: new update arrives at A -> A=11, B=10
Time 2: clients may observe 11 or 10
Time 3: update reaches B -> A=11, B=11
Assumption: no further updates and propagation eventually succeeds.
```

전파가 영원히 끊긴 사본까지 무조건 같아진다고 보장할 수는 없다. 장애 복구와 메시지 전달, 병합 절차에 관한 가정이 필요하다. “최종”은 운영상 지연 목표와 별도로 수렴 성질을 말한다.

### 동시 변경은 전달만으로 해결되지 않는다

A와 B가 같은 초기 상태에서 각각 수정하면 두 변경을 어떤 의미로 합칠지 정해야 한다. 마지막 쓰기 우선은 충돌을 한 값으로 정리하지만 벽시계 오차와 데이터 손실을 고려해야 한다. 사용자가 한쪽 변경을 읽고 다른 값을 덮어썼는지, 서로 독립 변경인지도 다르다.

카운터를 두 사본이 모두 10에서 11로 바꾸고 최댓값만 취하면 실제 두 번 증가가 한 번으로 줄 수 있다. 노드별 증가량을 따로 저장해 합치는 등 연산의 의미를 보존하는 병합이 필요하다. 수렴한다는 사실만으로 모든 변경의 의도가 보존되는 것은 아니다.

read-your-writes를 추가하면 자기 변경 뒤에 이전 값을 보는 경험을 줄일 수 있다. 단조 읽기는 세션에서 버전이 뒤로 가지 않도록 한다. 이런 보완은 최종 일관성과 함께 제공할 수 있지만 자동으로 따라오지는 않는다.

일부 캐시, 검색 인덱스, 집계 화면은 오래된 값이 잠시 보여도 괜찮을 수 있다. 반면 재고 수량, 권한 변경, 중복 결제 같은 요구에는 잘못된 관찰이 실제 불변식을 깨뜨릴 수 있다. 데이터 종류와 작업별로 허용 가능한 지연과 충돌을 정해야 한다.

운영에서는 복제 지연 분포, 오래된 읽기 비율, 병합 충돌, 복구 진행을 측정한다. 이론적 수렴 보장은 몇 초 안에 최신이라는 서비스 목표를 대신하지 않는다. 어떤 상황에 최신성이 필요한지와 무엇이 수렴해야 하는지를 구체적으로 정의할 때 모델의 장점을 활용할 수 있다.

삭제도 하나의 갱신으로 전파해야 한다. 오래된 사본의 값이 나중에 도착해 지운 데이터가 되살아나지 않도록 삭제 표식이나 버전 규칙을 사용할 수 있다. 표식을 정리하는 시점도 뒤처진 사본의 복구 가능성과 연결된다. 수렴 대상에는 새 값뿐 아니라 삭제의 의미도 포함된다.

### 참고 자료

- [MIT · Distributed Systems](https://pdos.csail.mit.edu/6.824/)
