본문 바로가기

Study

[내일배움캠프 TIL] 27일차 - Saga pattern(사가 패턴)

728x90
반응형

MSA에서 중요한 Saga 패턴에 대해 정리해보았습니다.

 

🏗️ 사가 패턴 (Saga Pattern) 이란?

사가 패턴은 마이크로서비스 아키텍처(MSA)처럼 데이터베이스가 분산되어 있는 환경에서 데이터 일관성(Data Consistency)을 유지하기 위해 사용하는 핵심 디자인 패턴입니다.

  • 문제 상황: 서비스마다 DB가 따로 있어서, 기존의 단일 DB 방식인 ACID 트랜잭션을 사용할 수 없음. (주문은 성공했는데 결제가 실패하면? 난감하죠.)

-> ACID가 뭐야?

  • 원자성 (Atomicity): 다 성공하거나, 아니면 다 취소하거나 (중간은 없다).
  • 일관성 (Consistency): 데이터베이스 규칙은 어떤 상황에서도 꼭 지킨다.
  • 격리성 (Isolation): 여러 작업이 동시에 돌아가도 서로 간섭하지 않는다.
  • 지속성 (Durability): 한번 저장된 데이터는 절대 사라지지 않는다 (정전돼도 안심).

 

  • 해결책: 비즈니스 로직을 여러 개의 로컬 트랜잭션으로 쪼개고, 이를 순차적으로 실행하며 관리함.

🔄 핵심 작동 원리: 보상 트랜잭션 (Compensating Transaction)

사가 패턴의 가장 큰 특징은 "실패했을 때 되돌리는 방법"입니다.

보상 트랜잭션이란?

어떤 단계에서 오류가 발생했을 때, 그 이전에 성공했던 단계들을 취소하기 위해 실행하는 '반대 작업'입니다. (예: 결제 실패 시 -> 주문 상태를 '취소'로 변경)


 

반응형