원자성 질문
같이 성공하지 않으면 불변식이 깨지는가?
안쪽: 재고 차감 + 주문 저장
둘 중 하나만 커밋되면 업무 상태가 틀어진다.
바깥: 이메일/푸시 알림
실패해도 DB 결과는 보존 가능하다.
경계를 넓히면 정합성은 쉬워지지만 락 시간과 실패 영향도 같이 커진다. 각 업무를 원자성, 시간, 복구 가능성으로 나눠 본다.
같이 성공하지 않으면 불변식이 깨지는가?
둘 중 하나만 커밋되면 업무 상태가 틀어진다.
실패해도 DB 결과는 보존 가능하다.
대기 시간이 DB 락으로 번지는가?
커넥션을 오래 잡지 않는 작업만 둔다.
외부 지연이 전체 트랜잭션을 붙잡는다.
실패 후 다시 시도하거나 보상할 수 있는가?
원자성이 더 중요하면 트랜잭션 안쪽에 둔다.
커밋된 이벤트를 별도 작업자가 처리한다.