MSA 환경에서의 트랜잭션을 처리할 때 사용하는 패턴 중 하나가 Saga 패턴이다. Saga 패턴은 보상 트랜잭션을 활용해 ‘여러 작업을 하나의 트랜잭션으로 묶은 것’처럼 작동시키는 방식이다.
✅ 보상 트랜잭션이란?
보상 트랜잭션이란 수동으로 트랜잭션의 롤백(Rollback) 효과를 내는 방법이다. 아래 예시를 바로 보자.
‘주문 생성 → 금액 출금 → 재고 차감 → 배송 준비’의 작업을 하던 중 ‘배송 준비’ 과정에서 에러가 났다면 지금까지 해왔던 작업을 다 취소시켜야 한다. 기존에 수행했던 작업을 취소하기 위해 기존 작업을 원래대로 돌릴 수 있는 반대되는 작업을 수행하면 된다. 즉, 재고 차감을 했으니 다시 재고 증감을 하면 되고, 금액 출금을 했으니 다시 금액 입금을 하면 되고, 주문을 생성했으니 주문을 삭제하면 된다.
여기서 기존에 수행했던 작업을 취소하기 위해 행하는 ‘재고 증감, 금액 입금, 주문 생성 취소’와 같은 취소 작업을 보고 보상 트랜잭션이라고 한다. 그리고 위 예시처럼 보상 트랜잭션을 활용해 여러 작업을 하나의 트랜잭션으로 묶은 것처럼 연결해주는 처리 방식이 Saga 패턴이다.
👨🏻🏫
Saga 패턴에 대한 이론은 이 정도면 충분하다. 이론을 더 자세히 설명하는 것보다 실제 프로젝트에서 코드를 짜보는 게 훨씬 이해가 빠르다. 다음 강의에서 Saga 패턴을 활용해 코드를 작성해보자.