4.1.3 데이터 일관성 유지: 사가 패턴
사가는 마이크로서비스 아키텍처에서 분산 트랜잭션 없이 데이터 일관성을 유지하는 메커니즘입니다. 여러 서비스의 데이터를 업데이트하는 시스템 커맨드마다 사가를 하나씩 정의합니다. 사가는 일련의 로컬 트랜잭션입니다. 각 로컬 트랜잭션은 앞서 언급한 ACID 트랜잭션 프레임워크/라이브러리를 이용하여 서비스별 데이터를 업데이트합니다.
Note≡ 패턴: 사가
사가는 비동기 메시징을 이용하여 편성한 일련의 로컬 트랜잭션이다. 서비스 간 데이터 일관성은 사가로 유지한다.7
시스템 작업은 사가의 첫 번째 단계를 시작합니다. 어느 로컬 트랜잭션이 완료되면 이어서 그다음 로컬 트랜잭션이 실행됩니다. 비동기 메시징으로 단계를 편성하는 방법은 잠시 후 4.2절에서 설명하겠지만, 비동기 메시징은 하나 이상의 사가 참여자가 일시 불능 상태인 경우에도 사가의 전체 단계를 확실히 실행시킬 수 있는 중요한 장점이 있습니다.
사가와 ACID 트랜잭션은 두 가지 중요한 차이점이 있습니다. 첫째, ACID 트랜잭션에 있는 격리성(I)이 사가에는 없습니다(4.3절). 둘째, 사가는 로컬 트랜잭션마다 변경분을 커밋하므로 보상 트랜잭션을 걸어 롤백해야 합니다. 먼저 예제를 봅시다.