• 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

 

+ Recent posts