- SAGA 패턴 : 보상 트랜잭션을 사용한 해결방법
-
이벤트 드리븐 방식 :
- 각 서비스의 트랜잭션에서 이벤트를 발생시킴.
-
이벤트가 성공이면 다른 서비스의 트랜잭션을 수행시킨다. .
-
이벤트가 실패면 다른 서비스에게 보상 트랜잭션을 수행시킨다.
- 각 서비스들은 어떤 이벤트를 받아야하는지 알기가 쉽지않아..
-
Orderchestration 방식
- 하나의 Orchstration 서비스에서 트랜잭션을 관리한다.
-
결제 완료 프로세스 ( pg사 결제완료(pay) -> 포인트/쿠폰 소멸(member))
- 이 결제 완료 서비스를 총괄하는 하나의 서비스가 있어야함. 그 어느 한서비스에서 뻑나면 롤백 프로세스를 태우면됨
- 서비스간 종속이 없어져서 좋긴한데, orchestration 서비스 생성 리소스가 크게듬
- TCC( Try-cancle-comfirm ) : rest호출로 해결방법
- staging repository와 실제 repository를 나눠 놓는것이 핵심 포인트!
- try 단계에서는 staging repository에 작업을 함.
- 한 프로세스가 문제없이 끝나면 그제서야, 실제 repository에 작업을함.
- 한 프로세스에서 문제가 생기면 cancle api를 호출하여 staging repository에 저장된 data 상태를 "cancle"이나 지워놓으면 그만
REST 기반의 간단한 분산 트랜잭션 구현 - 1편 | Popit
REST 기반의 간단한 분산 트랜잭션 구현 -1편 TCC 개관 REST 기반의 간단한 분산 트랜잭션 구현 - 2편 TCC Cancel, Timeout REST 기반의 간단한 분산 트랜잭션 구현 - 3편 TCC Confirm(Eventual Consistency) REST 기반의
www.popit.kr