더북(TheBook)

4.1.3 데이터 일관성 유지: 사가 패턴

사가는 마이크로서비스 아키텍처에서 분산 트랜잭션 없이 데이터 일관성을 유지하는 메커니즘입니다. 여러 서비스의 데이터를 업데이트하는 시스템 커맨드마다 사가를 하나씩 정의합니다. 사가는 일련의 로컬 트랜잭션입니다. 각 로컬 트랜잭션은 앞서 언급한 ACID 트랜잭션 프레임워크/라이브러리를 이용하여 서비스별 데이터를 업데이트합니다.

Note≡ 패턴: 사가

사가는 비동기 메시징을 이용하여 편성한 일련의 로컬 트랜잭션이다. 서비스 간 데이터 일관성은 사가로 유지한다.7

시스템 작업은 사가의 첫 번째 단계를 시작합니다. 어느 로컬 트랜잭션이 완료되면 이어서 그다음 로컬 트랜잭션이 실행됩니다. 비동기 메시징으로 단계를 편성하는 방법은 잠시 후 4.2절에서 설명하겠지만, 비동기 메시징은 하나 이상의 사가 참여자가 일시 불능 상태인 경우에도 사가의 전체 단계를 확실히 실행시킬 수 있는 중요한 장점이 있습니다.

사가와 ACID 트랜잭션은 두 가지 중요한 차이점이 있습니다. 첫째, ACID 트랜잭션에 있는 격리성(I)이 사가에는 없습니다(4.3절). 둘째, 사가는 로컬 트랜잭션마다 변경분을 커밋하므로 보상 트랜잭션을 걸어 롤백해야 합니다. 먼저 예제를 봅시다.

 

 


신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.