여러 마이크로서비스가 한 DB를 이용할 경우, DB변경으로 인한 혼란을 야기할 수 있음
이러한 기본 원칙을 지키기 위해 1MS, 1DB로 구현할 경우
ACID를 지키기 어렵게 됨
분산 트랜잭션이 발생함에 따라, 여러 데이테베이스에 걸쳐 있는 마이크로서비스의 일관성 문제는
어떻게 해결해야 할까?
이러한 문제(분산 트랜잭션에서의 일관성 확보) 해결 위해 Saga 패턴 등장
Saga 패턴 : 마이크로서비스들끼리 이벤트를 주고 받아 특정 마이크로서비스에서의 작업이 실패하면 이전까지의 작업이 완료된 마이크서비스들에게 보상 (complemetary) 이벤트를 소싱함으로써 분산 환경에서 원자성(atomicity)을 보장
(즉 지금까지 각 마이크로서비스가 수행한 작업을 전부 rollback)
이를 통해, Saga패턴은 MSA에서 데이터의 일관성 관리에 도움을다!
사가패턴을 구현하는 방법 -> 앞서 배웠던 두 패턴을 응용해서 가능