트랜잭션은 어디에서 끝나야 하는가? 분산 Java 시스템에서 일관성 경계를 설계하기
마이크로서비스는 트랜잭션을 제거하지 않습니다. 대신 아키텍트에게 트랜잭션이 어디에서 끝나야 하는지 결정하도록 강요합니다.그 결정은 생각보다 어렵습니다. 한때 단일 데이터베이스 트랜잭션 내에서 처리되었던 비즈니스 작업이 분해 후 여러 서비스에 걸쳐 있을 수 있습니다. 주문은 재고, 결제, 가격 책정, 고객 한도, 감사 기록 및 알림을 포함할 수 있습니다. 아키텍처는 이러한 책임을 명확하게 분할할 수 있지만, 비즈니스는 여전히 하나의 작업, 즉 주문을 배치하는 것으로 인식합니다.