본문 바로가기
[개발] Infrastructure/Deployment

사가 패턴

by Devsong26 2023. 11. 27.

사가 패턴(Saga Pattern)은 마이크로서비스 아키텍처에서 사용되며, 분산 시스템에서의 긴 트랜잭션을 관리하는 방법을 제공합니다. 이 패턴의 핵심은 각 마이크로서비스가 독립적인 트랜잭션을 실행하고, 트랜잭션 간의 일관성을 유지하는 것입니다.

 

이를 위해 다음과 같은 세부 사항들이 중요합니다:

 


사가의 구성

  • 로컬 트랜잭션
    • 각 마이크로서비스는 자체 데이터베이스에 대해 로컬 트랜잭션을 실행합니다. 이 트랜잭션은 독립적으로 완료되며, 다른 서비스의 트랜잭션과는 직접적인 연결이 없습니다.
  • 컴펜세이션 트랜잭션
    • 이는 기본 트랜잭션이 실패했을 때, 이전에 성공한 트랜잭션을 취소하거나 수정하는 역할을 합니다. 각 로컬 트랜잭션에는 해당 컴펜세이션 트랜잭션이 연결되어 있어야 합니다.

 


통신 방식

  • 비동기 메시징
    • 사가는 일반적으로 비동기 메시징 시스템을 통해 구현됩니다. 각 서비스는 이벤트를 발행하고, 다른 서비스는 이 이벤트를 수신하여 필요한 트랜잭션을 수행합니다.
  • 이벤트 기반 트랜잭션
    • 사가 내의 각 단계는 특정 이벤트에 의해 트리거됩니다. 이벤트는 서비스 간의 결합을 최소화하면서 통신을 가능하게 합니다.

 


구현 방식

  • 오케스트레이션
    • 중앙 조정자(예: 서비스 또는 프로세스)가 각 서비스의 트랜잭션을 조정하고 관리합니다. 이 방식은 모든 단계를 명확하게 통제할 수 있지만, 중앙 조정자가 병목 지점이 될 수 있습니다.
  • 코레오그래피
    • 각 서비스가 자체 로직에 따라 독립적으로 트랜잭션을 관리합니다. 코레오그래피 방식은 유연성이 뛰어나지만, 전체 트랜잭션의 흐름을 추적하기 어려울 수 있습니다.

 

 

장단점

  • 장점
    • 높은 결함 허용성, 서비스 간의 느슨한 결합, 분산 시스템에서의 데이터 일관성 유지
  • 단점
    • 복잡성 증가, 디버깅과 모니터링의 어려움, 트랜잭션 관리의 오버헤드 증가

 


사가 패턴은 분산 시스템에서 데이터 일관성을 유지하고 서비스 간의 결합을 최소화하는 데 매우 유용합니다. 그러나 이 패턴을 적용하기 전에 시스템의 복잡성, 오버헤드, 관리 측면을 충분

'[개발] Infrastructure > Deployment' 카테고리의 다른 글

Flagger  (0) 2023.12.05
Hystrix  (0) 2023.11.30
카나리아 배포  (0) 2023.11.17
Docker 블루-그린 배포  (0) 2023.11.17
MSA 통신 패턴 (동기, 비동기)과 Apache Kafka, Zookeeper  (0) 2022.02.27