데이터 이해와 활용 · DATA-06

주문은 확정됐지만 마지막 재고는 그대로였다

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

핵심노트 개념: 트랜잭션의 ACID — 함께 바뀔 데이터를 묶는다

이 글에서 배우는 교훈

트랜잭션의 원자성은 정한 범위의 데이터 변경을 모두 확정하거나 모두 취소하도록 합니다.

핵심노트를 바탕으로 만든 가상 이야기입니다. 실제 사건이나 검증된 성과가 아닙니다.
근거: 트랜잭션의 ACID — 함께 바뀔 데이터를 묶는다 · 핵심노트 6

구체적으로는 같은 데이터베이스의 재고 확보와 주문 저장을 함께 처리하고, 외부 결제의 확인·취소는 별도 절차로 관리했습니다.

관련 교재 내용

데이터 이해와 활용 · XI. 동시성제어 · 트랜잭션과 ACID

트랜잭션은 하나의 업무로 묶어 처리할 데이터 작업입니다. 함께 성공하거나 취소되고, 정해진 규칙과 동시 실행 조건을 지키며, 확정한 결과를 유지하도록 관리합니다.

이 사례에 적용한 내용: 같은 데이터베이스의 재고 확보와 주문 저장을 함께 처리하고, 외부 결제의 확인·취소는 별도 절차로 관리했습니다.

교재 121쪽 확인 →

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

본문

창고에 상품이 한 개 남았습니다. 주문 저장은 성공했지만 재고를 줄이기 전에 프로그램 오류가 나서 다음 고객에게도 한 개가 남았다고 표시됐습니다. 두 고객의 주문을 받고 나서야 한 명에게 취소를 안내해야 했습니다.

팀은 같은 데이터베이스의 재고 확보와 주문 저장을 하나의 트랜잭션으로 묶고, 재고 확보에 실패하면 주문도 확정하지 않게 했습니다. 중간 오류를 일부러 발생시켜 둘 다 되돌아가는지 확인했습니다. 외부 결제까지 진행된 경우는 데이터베이스의 취소만으로 환불되지 않으므로 결제 확인·취소 절차를 별도로 두었습니다.

결론

함께 확정할 작업과 바깥 시스템의 작업을 구분하자 실패 후 남는 상태를 설명할 수 있었습니다. ACID라는 이름을 붙이는 것보다 어느 변경을 한 트랜잭션으로 묶었는지 분명히 해야 합니다.