MSA를 구성하기 어려운 이유 중 하나는 트랜잭션의 문제이다.
기존의 모놀릭 환경에서는 DBMS가 기본적으로 제공해주는 트랜잭션 기능을 통해서 데이터 Commit이나 Rollback을 통해서 일관성있게 관리한다. 그러나 Application과 DB가 분산되며 해당 트랜잭션 처리를 단일 DBMS에서 제공하는 기능으로는 해결할 수 없다.
여러 서비스 간에 데이터 일관성을 유지하기 위해서 전통적인 방법인 Two - Phase Commit과 같은 방법을 사용했다.

다만 이 방법은 하나의 서비스가 장애가 있는 경우나 각각의 서비스에 동시에 Locking이 걸리게되면 성능의 문제가 발생하기 때문에 비효율적이다. 더 나아가 각각의 서비스가 다른 Instance에 있기 때문에 이를 통제하는데 어려움이 있다.
트랜잭션이란?
트랜잭션이란 DB 상태를 변화시키기 위해 수행하는 작업의 단위를 의미한다.
트랜잭션은 4가지 특성(원자성, 일관성, 독립성, 지속성)을 지켜야한다.