IT/DesignPattern

[DesignPattern] SAGA 패턴

어린이개발자 2024. 12. 10. 21:34

이번엔 SAGA 패턴에 대해 정리하고자 한다.

 

1. 개념

- 분산 시스템에서 장기 실행 트랜잭션을 처리하며 데이터의 (최종) 일관성을 보장하기 위한 설계 패턴

- 하나의 비즈니스 프로세스를 여러 단계의 트랜잭션으로 분할하고, 각 단계를 독립적으로 실행하도록 설계

 

2. 구현 방식

- 조정 기반

  > 중앙에서 조정자가 각 단계의 트랜잭션 실행 제어

  > 중앙 컨트롤러가 명시적으로 다음 작업을 호출하거나 롤백

  > 구현이 비교적 간단하지만, 조정자의 단일 장애점(SPOF)의 발생 가능

- 중재 기반

  > 각 서비스가 이벤트 기반으로 서로 통신하며 SAGA의 단계를 독립적으로 진행

  > 한 단계가 완료되면 이벤트를 발행하여 다음 단계 트리거

  > 분산 시스템 특성에 더 적합하지만, 설계 복잡 및 디버깅 어려움

 

3. 장점

- 각 서비스가 독립적으로 트랜잭션을 처리하므로 서비스 간 결합도가 낮아지며 분산 환경에 적합

- 분산 트랜잭션 관리 없이 개별 서비스의 독립적인 확장 가능

- 데이터 일관성 보장 

 

4. 단점

- 보상 트랜잭션 설계와 장애 시의 복구 로직 추가 필요

- 지연 발생 가능성

- 이벤트 기반 시스템에서 실패 원인 추적 어려움

'IT > DesignPattern' 카테고리의 다른 글

[DesignPattern] CQRS 패턴  (1) 2024.12.10