더북(TheBook)

대책: 교환적 업데이트

업데이트를 교환적(commutative)으로, 즉 어떤 순서로도 실행 가능하게 설계하면 소실된 업데이트 문제를 방지할 수 있습니다. 이를테면 (마이너스 통장(overdraft checks)은 없다고 가정하면) Accountdebit()credit()은 서로 교환적인 작업입니다.

보상 가능 트랜잭션이 계좌를 인출(debit)(또는 입금(credit)) 후 사가를 롤백시켜야 하는 상황이라면 보상 트랜잭션은 단순히 계좌를 입금(또는 인출)해서 업데이트를 언두하면 됩니다. 다른 사가의 업데이트를 덮어 쓸 일은 전혀 없죠.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.