대책: 버전 파일
버전 파일(version file)은 레코드에 수행한 작업을 하나하나 기록하는 대책입니다. 즉, 비교환적(noncommutative) 작업을 교환적(commutative) 작업으로 변환하는 방법입니다. 가령 주문 생성 사가와 주문 취소 사가가 동시 실행된다고 합시다. 시맨틱 락 대책을 쓰지 않으면 주문 생성 사가가 소비자 신용카드를 승인하기 전에 주문 취소 사가가 해당 신용카드를 승인 취소하는 말도 안 되는 상황이 벌어질 수 있습니다.
순서가 안 맞는 요청을 회계 서비스가 받아 처리하려면, 작업이 도착하면 기록해 두었다가 정확한 순서대로 실행하면 됩니다. 방금 전 경우라면, 회계 서비스는 일단 승인 취소 요청을 기록하고 나중에 신용카드 승인 요청이 도착하면 이미 승인 취소 요청이 접수된 상태이니 승인 작업은 생략해도 되겠구나라고 인지하는 것입니다.