15장. 대사는 분산시스템의 마지막 방어선이다
실시간 흐름이 모두 성공해도 누락과 중복을 완전히 배제하기 어렵다. source count·sum과 결과 count·sum, 상태별 건수, 오래된 pending, receipt 없는 결과를 주기적으로 비교한다. 차이를 자동 수정하기 전에 원인과 영향 범위를 고정한다.
select r.id
from reservation r
left join payment p on p.reservation_id=r.id and p.status='captured'
where r.status='paid' and p.id is null;
대사 결과에는 기준 시각, query version, 입력 snapshot, 차이 목록, 승인자, 수정 명령과 재검증 결과가 남아야 한다. 수량이 맞는지 확인하지 않고 “worker 재시작 성공”으로 복구를 끝내지 않는다.