마이크로서비스 환경이나 외부 API를 사용해야 하는 상황을 생각해 보자. 일반적으로 마이크로서비스 아키텍처에서는 각 서비스가 자신만의 데이터베이스를 가지고 있다. 그런데 하나의 비즈니스 작업을 처리하기 위해 여러 서비스를 호출해야 한다면 어떻게 될까? 예를 들어 주문을 처리하기 위해 주문 서비스, 고객 서비스, 결제 서비스를 차례대로 호출해야 한다고 가정해 보자. 우리는 이 모든 작업이 하나의 트랜잭션처럼 동작하기를 원한다. 그렇다면 이런 환경에서도 ACID 원칙을 쉽게 적용할 수 있을까? 정답은 쉽지 않다는 것이다. 각 서비스가 독립적인 데이터베이스를 관리하고 있기 때문에, 하나의 트랜잭션으로 모든 데이터베이스를 제어하기에는 여러 제약이 존재한다. 특히 외부 API까지 포함된다면 더욱 어려워진다. 하지..