회사에서 MSA 구조로 운영되는 서버들을 겪다 보면, 분산 트랜잭션이라는 주제를 자연스럽게 마주하게 된다. 나도 처음엔 그냥 각 서비스가 알아서 처리하면 되는 거 아닌가? 싶었는데, 서비스 간 데이터 정합성 문제가 생기면서 이게 그렇게 단순한 문제가 아니라는 걸 깨달았다.SAGA 패턴이란 걸 인지하게 된 건, Elixir의 Exq라는 백그라운드 잡 처리 라이브러리를 살펴보면서였다. Exq에서 실패한 작업을 재시도하고, 보상 처리하는 구조를 보다 보니 "이거 분산 트랜잭션에서 쓰는 SAGA 패턴이랑 비슷한데?" 싶었고, 그때부터 본격적으로 파보게 됐다. 그래서 이번에 한번 정리해보려고 한다.* 참고로 Elixir는 함수형 언어이고, Exq는 Elixir에서 지원하는 메시지 큐 라이브러리 중 하나다 (red..