서론 단일 서버와 DB 로 구성되는 Monolithic 서버에서는 하나의 API 로직 내부에서 특정 부분에서 실패가 발생 한다면, DB 의 rollback 을 이용해서 commit 전에 작업하던 모든 데이터를 처리하기 전 상태로 돌려놓을수가 있다. 하지만 서비스의 규모가 커지다 보면 성능이나 관리적 이슈로 인해 MSA(Micro Service Achitecture)로 넘어가게 되는데, MSA 에서는 API 서버와 DB가 서비스별로 나누어져 있다. 서버와 DB 가 나누어져 있기 때문에 Monolithic 에서처럼 DB rollback 만으로는 실패한 트랜잭션의 원복이 어렵게 된다. 이렇게 여러 리소스가 나누어져 있을 때의 트랜잭션을 "분산 트랜잭션" 이라고 하고, 분산 트랜잭션에서 실패가 발생했을 때 ..