Monolithic 의 경우에는 데이터베이스의 ACID 특성을 활용하여 각 로직을 처리하면 DB에서 자체적으로 보장해준다.
하지만 Microservice의 경우, 각 서비스마다 별도의 DB를 가지고 있다.
→ 따라서, DB에 의존하는 방식으론 이러한 트랜잭션을 일관적으로 처리할 수 없다. 즉, 분산 트랜잭션을 구현하여 이를 해결해야한다.
MSA ( MicroService Architecture ) 에서 분산 트랜잭션을 구현하는 방식이 대표적으로 2가지가 있다.
분산 시스템에서는 가용성과 일관성 모두 만족하는 방식은 존재하지 않는다.
Two-Phase는 가용성이 떨어지지만, 일관성은 만족할 수 있고,
Saga Pattern은 가용성은 만족하지만, 일관성은 떨어진다.
https://www.s-core.co.kr/insight/view/msa-환경에서-데이터-관리를-위한-필수-사항-고가용성과/