분산 시스템에서 트랜잭션을 관리하기 위한 설계 패턴
트랜잭션 분할: 각 서비스는 자신의 트랜잭션을 수행하고, 결과를 다른 서비스와 공유함.
보상 작업: 만약 어떤 트랜잭션이 실패하면, 이전에 성공한 트랜잭션에 대해 보상 작업(compensation)을 실행하여 시스템의 상태를 원래대로 롤백
오케스트레이션(Orchestration): 중앙 조정자가 모든 서비스의 흐름을 관리하며, 각 단계의 성공 여부에 따라 다음 단계를 결정
중앙 조정자: 모든 서비스를 관리하고 조정하는 역할을 하는 컴포넌트 또는 시스템을 의미
신뢰성: 트랜잭션에서 실패시 이전 상태로 되돌려 시스템의 신뢰성을 높이고, 데이터 일관성을 유지 가능
유연성: 각 서비스가 독립적으로 트랜잭션을 처리할 수 있게 하여, 시스템의 확장성과 유지 보수성을 향상
비동기 처리: 각 서비스가 독립적으로 작업을 수행하므로, 전체 프로세스가 비동기적으로 진행
복잡성 감소: 큰 트랜잭션을 여러 개의 작은 트랜잭션으로 나누어 처리하므로, 시스템의 복잡성을 줄이고 관리 용이
서비스 자율성: 각 서비스가 자신의 트랜잭션을 관리하게 되어, 서비스 간의 결합도가 낮아짐
비즈니스 로직 표현 용이: 복잡한 비즈니스 로직을 여러 단계로 나누어 표현할 수 있음