복제 동기화의 핵심

ACK를 어디까지 기다린 뒤 COMMIT 하느냐가 차이입니다

세 방식 모두 쓰기는 먼저 Master에 들어옵니다. 이후 Replica 확인을 얼마나 기다린 뒤 COMMIT을 열어 주는지가 데이터 보장 수준과 쓰기 지연을 함께 결정합니다.

공통 시작점
Client 쓰기 요청
→
Master 반영
→
Replica ACK 대기 여부 결정
비교 기준
동기 복제
모든 Replica ACK 뒤에 COMMIT
반동기 복제
최소 1개 ACK를 확인하고 COMMIT
비동기 복제
Master가 먼저 COMMIT, 복제는 나중
COMMIT 시점
가장 늦게 확정
모든 Replica가 받았다는 응답이 온 뒤에만 트랜잭션을 끝냅니다.
일부 확인 후 확정
최소 한 곳에 복제됐다는 보장을 확보한 뒤 COMMIT 합니다.
즉시 확정
Master 기준으로 먼저 성공을 돌려주고, Replica는 뒤따라옵니다.
Master 장애 직후
COMMIT 데이터 유실 위험이 가장 낮음
확정된 변경은 이미 Replica에도 반영돼 있어 RPO 0에 가깝습니다.
최소 1개 Replica는 따라옴
장애 시 바로 승격 가능한 복제본이 남을 가능성이 높지만, 전체 무손실은 아닙니다.
미복제 구간이 남을 수 있음
COMMIT 직후 Master가 죽으면 아직 전달되지 않은 변경분은 사라질 수 있습니다.
운영 trade-off
일관성 최우선
가장 안전하지만 ACK를 오래 기다려야 해서 쓰기 지연과 장애 영향이 큽니다.
실무형 절충안
동기보다 빠르고 비동기보다 안전해, 운영 현장에서 자주 선택되는 균형점입니다.
성능 최우선
가장 빠르지만 replication lag와 장애 시 유실 가능성을 감수해야 합니다.
일관성 강함
쓰기 성능 높음

요약: ACK를 더 오래 기다릴수록 데이터 보장은 강해지고, 기다림을 줄일수록 응답 속도는 좋아집니다. 다음 절의 Replication Lag은 이 축에서 비동기 복제가 특히 드러내는 문제입니다.