243
6
장
워크플로
여기서 주문 처리 프로세스는 하나의 사가로 표현되며, 이 흐름의 각 단계는 서로 다른 서비
스에서 수행할 수 있는 작업을 나타낸다. 각 서비스 내부의 모든 상태 변경은 로컬
ACID
트
랜잭션 내에서 처리될 수 있다. 예를 들어 우리가 창고 (
Warehouse
) 서비스를 사용해 재
고를 확인하고 예약하는 경우, 창고 서비스는 내부적으로 예약 상황을 기록하는 로컬 예약
(
Reservation
) 테이블에 행을 생성할 수 있다. 이러한 변경은 일반 트랜잭션 내에서 처리될
것이다.
6.4.16.4.1
사가 실패 모드 사가 실패 모드
사가를 개별 트랜잭션으로 분해하려면, 실패 처리 방법(더 구체적으로는 실패 발생 시의 복구
방법 )을 고려해둬야 한다. 앞서 기술한 사가에 대한 첫 논문에는 역방향 복구
backward
recovery
와
순방향 복구
forward
recovery
라는 두 가지 복구 유형이 기술돼 있다.
역방향 복구역방향 복구
에는 실패 복구와 이후에 일어나는 정리 작업인 롤백이 포함된다. 이 작업을 수행하
려면 이전에 커밋된 트랜잭션을 취소하는 보상 조치를 정의해둬야 한다.
정방향 복구정방향 복구
는 실패가
발생한 지점에서 데이터를 가져와 계속 처리할 수 있다. 이 작업을 수행하려면 트랜잭션을 재
시도할 필요가 있으며, 이는 우리의 시스템이 재시도를 위한 충분한 정보를 보유하고 있음을
의미한다.
모델링할 비즈니스 프로세스의 특성에 따라 여러분은 실패 모드에서 역방향 복구나 정방향 복
구, 또는 이 두 가지를 혼합하는 상황을 ...