들어가기 앞서..

MSA를 구성하기 어려운 이유 중 하나는 트랜잭션의 문제이다.

기존의 모놀릭 환경에서는 DBMS가 기본적으로 제공해주는 트랜잭션 기능을 통해서 데이터 Commit이나 Rollback을 통해서 일관성있게 관리한다. 그러나 Application과 DB가 분산되며 해당 트랜잭션 처리를 단일 DBMS에서 제공하는 기능으로는 해결할 수 없다.

대안 → Two - Phase Commit..?

여러 서비스 간에 데이터 일관성을 유지하기 위해서 전통적인 방법인 Two - Phase Commit과 같은 방법을 사용했다.

Untitled

다만 이 방법은 하나의 서비스가 장애가 있는 경우나 각각의 서비스에 동시에 Locking이 걸리게되면 성능의 문제가 발생하기 때문에 비효율적이다. 더 나아가 각각의 서비스가 다른 Instance에 있기 때문에 이를 통제하는데 어려움이 있다.

트랜잭션이란?

트랜잭션이란 DB 상태를 변화시키기 위해 수행하는 작업의 단위를 의미한다.

트랜잭션은 4가지 특성(원자성, 일관성, 독립성, 지속성)을 지켜야한다.

SAGA 패턴의 정의