
233
6
장
워크플로
이전 두 장에서는 한 마이크로서비스가 다른 마이크로서비스와 통신하는 방식에 관련된 마이
크로서비스의 측면을 살펴봤다. 하지만 비즈니스 프로세스를 구현하기 위해 여러 마이크로서
비스가 협업하고 싶을 때는 어떻게 해야 할까? 분산 시스템에서 이러한 종류의 워크플로를 모
델링하고 구현하는 방법은 제대로 수행하기가 까다로울 수 있다.
이 장에서는 이 문제를 해결하기 위해 분산 트랜잭션을 사용하는 것과 관련된 함정을 살펴보
고, 훨씬 더 만족스러운 방식으로 마이크로서비스 워크플로를 모델링할 수 있는 개념인 사가
saga
도 살펴본다.
6.16.1
데이터베이스 트랜잭션데이터베이스 트랜잭션
일반적으로 컴퓨팅의 맥락에서 트랜잭션을 생각할 때는 단일 단위로 취급하고 싶은 하나 이상
의 작업을 떠올린다. 동일한 전체 작업의 일부가 되는 여러 변경 사항을 적용할 때는 모든 변경
사항이 적용됐는지 확인하길 원한다. 또한 이러한 변경이 진행되는 동안 오류가 발생하면 스스
로 정리할 수 있는 방법이 필요하다. 일반적으로는 데이터베이스 트랜잭션과 같은 것을 사용하
게 된다.
데이터베이스에서는 트랜잭션을 사용해 하나 이상의 상태 변경이 성공적으로 수행됐는지 확인
한다. 여기에는 데이터 삭제, 추가, 변경이 포함된다. 관계형 데이터베이스에서는 하나의 트랜
워크플로
CHAPTER