본문 바로가기
Kotlin Spring/Kotlin Spring 강의 내용

9) Kafka 기반 도메인 분리 (3) Saga 패턴이란?

by Bill Lab 2025. 9. 5.
728x90

1. Saga 패턴이란?

       : Saga 패턴은 분산 트랜잭션을 여러 개의 로컬 트랜잭션(Local Transaction) 시퀀스로 나누어 처리하고,

        만약 실패 시 보상(Compensation) 작업을 통해 전체 일관성을 맞추는 패턴.

출처: https://microservices.io/patterns/data/saga.html

2. 동작 방식

    1) 하나의 비즈니스 프로세스 = N개의 로컬 트랜잭션

    2) 각 로컬 트랜잭션은 자신의 DB에서 커밋됨 → 분산 락 불필요
    3) 중간에 실패하면, 이미 완료된 트랜잭션을 보상 트랜잭션으로 되돌림

 

3. 구현 방식

    1) Choreography (코레오그래피)
        - 이벤트 기반

        - 각 서비스가 이벤트를 발행하고, 다른 서비스가 그 이벤트를 구독하여 다음 트랜잭션 실행
        - 장점: 단순, 중앙 오케스트레이터 불필요  
        - 단점: 서비스 수 많아지면 이벤트 플로우 복잡 → 관리 어려움 

출처: https://www.geeksforgeeks.org/system-design/saga-design-pattern/



    2) Orchestration (오케스트레이션)
        - 중앙 Saga Orchestrator 가 전체 흐름 제어
        - 각 서비스에 명령(Command) 요청, 성공/실패 이벤트를 수신하며 Saga 진행
        - 장점: 흐름 명확, 관리 용이
        - 단점: 오케스트레이터가 단일 장애 지점(SPOF)이 될 수 있음

출처: https://www.geeksforgeeks.org/system-design/saga-design-pattern/





728x90