시스템아키텍처 이해와 활용 · ARCH-05

취소됐다는 화면과 출고됐다는 상자가 엇갈렸다

가상 이야기 · 핵심노트 기반

핵심노트 개념: 분산 데이터의 일관성 — 여러 시스템의 값이 다를 때 다시 맞춘다

이 글에서 배우는 교훈

분산 데이터가 나중에 일치해도 이미 수행한 현실의 행동은 되돌아가지 않으므로 확정 단계의 조정이 필요합니다.

핵심노트를 바탕으로 만든 가상 이야기입니다. 실제 사건이나 검증된 성과가 아닙니다.
근거: 분산 데이터의 일관성 — 여러 시스템의 값이 다를 때 다시 맞춘다 · 핵심노트 5

구체적으로는 취소 승인과 출고 확정을 주문별로 조정하고, 확인 경로가 끊기면 출고를 보류하도록 정했습니다.

관련 교재 내용

데이터 이해와 활용 · XIV. 빅데이터와 NoSQL · BASE와 최종 일관성

데이터 교재의 최종 일관성은 여러 곳의 데이터가 일시적으로 다르더라도 결국 일치하는 성질입니다. 이 노트는 그 지연이 업무에 미치는 영향을 생각하는 적용 예입니다.

이 사례에 적용한 내용: 취소 승인과 출고 확정을 주문별로 조정하고, 확인 경로가 끊기면 출고를 보류하도록 정했습니다.

교재 147쪽 확인 →

교재 원리의 실무 적용 · 교재 원문 인용이 아닌 자체 설명입니다.

본문

고객이 주문을 취소하고 환불받았지만 창고 서버에는 취소 정보가 도착하지 않았습니다. 직원은 이전 포장 대기 목록을 보고 물건을 보냈습니다. 나중에 두 시스템의 상태가 같아져도 이미 출발한 택배를 자동으로 되돌릴 수는 없었습니다.

팀은 주문별로 출고 확정과 취소 승인이 충돌하지 않도록 조정할 기준을 정했습니다. 출고가 확정되기 전에는 취소를 반영하고, 출고 확정 후 요청은 즉시 환불하지 않고 반품 절차로 안내했습니다. 최종 확인 경로가 끊기면 이전 목록만 믿고 출고하지 않고 보류했습니다. 보류 주문은 담당자가 확인하며 늦게 도착한 변경도 재반영했습니다.

결론

배송은 늦어질 수 있지만 환불한 물건을 보내는 모순을 무조건 허용하지 않기로 선택한 것입니다. 분산 시스템에서는 나중에 데이터를 맞추는 방법과 돌이키기 어려운 행동을 통제하는 방법을 함께 정해야 합니다.