<aside>
👨💻
학번: 20212812
학과: 컴퓨터학부
이름: 윤여찬
</aside>
saga 패턴이 나오게 된 배경이 무엇이었을까?
즉 aga 패턴 이전에 어떠한 패턴으로 사용되었는지, 기존 패턴의 문제가 무엇인지 알아보도록 하자
Distributed Transaction
Transaction in Monolithic
- 모놀리식 아키텍처에서는 사용자가 요청을 보내면 단일 데이터베이스에서 트랜잭션을 생성하여 상태 확인 및 요청 처리가 진행된다.
- 단일 서비스 환경이기 때문에 트랜잭션 하나로 모든 작업의 처리가 가능하다.
- 만약 트랜잭션이 실패한다면 해당 트랜잭션은 롤백된다.

Transaction in Microservice
- Microservice기반의 분산 아키텍처에서는 각 서비스마다 별도의 데이터베이스를 구성한다.
- 사용자가 요청을 보내면 1개 이상의 서비스가 호출될 수 있고 각 데이터베이스에 변경 사항을 처리하게 된다.

- Microservice 기반 분산된 아키텍처에서는 각 서비스가 서로 다른 데이터베이스를 가지고 있어 단순하게게 트랜잭션을 유지하기 어렵다.
- 즉 정확히 어느 DB의 트랜잭션은 성공했는데 다른 DB에서는 실패했으면 이거를 하나의 트랜잭션으로 모두 묶어서 취소하기가 어렵다는 것이다.
- 아래 문제를 포함하여 Microservice 기반 애플리케이션을 설계/구축하는 동안 여러 문제들을 해결해야 했다.
- 만약 InventoryMicroservice가 실패하면, OrderMicroservice는 어떻게 처리할까?
- 서로 다른 서비스가 동일한 데이터에 접근할 때 요청은 어떻게 처리할까?
Solution & Pattern
위의 msa의 문제에 대한 패턴으로 2pc, saga 패턴을 살펴보자.
2PC (Two-Phase Commit)