Cloud Architecture

SAGA 패턴

백셀건전지 2022. 6. 14. 23:22

Transaction이란

  • 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위
  • 4가지의 특성
    1. 원자성
    2. 일관성
    3. 독립성
    4. 지속성

 

Transaction 처리

  • 기존 Monolithic Architecture 에서는 DBMS의 transaction 기능으로 데이터 commit이나 rollback을 일관적으로 처리
  • 첫 번째 대안 : Two Phase Commit
    • 한 서비스에서 장애가 발생하거나 각 서비스에서 Lock이 걸리면 성능 이슈 있어 비효율적
    • 서비스 별 인스턴스가 분리되어 관리에 어려움이 있음

https://azderica.github.io/01-architecture-msa/

SAGA 패턴

  • 마이크로 서비스 아키텍처에서 서비스들끼리 이벤트를 주고 받아 특정 서비스에서 작업이 실패하면 이전까지의 작업이 완료된 서비스에게 보상(complimentary) 이벤트를 소싱하여 분산 환경에서 원자성(atomicity)를 보장하는 패턴
  • 트랜잭션 성공 시

 

  • 트랜잭션 실패 시

  • 트랜잭션 관리 주체가 DBMS가 아닌 Application에 있음.

SAGA 패턴의 종류

  1. Choreography based SAGA pattern
    • 각각의 로컬 트랜잭션이 다른 microservice를 이벤트로 소싱하는 방식
    • 구현이 쉽고 간단하고, 도메인간 종속성이 낮은 것이 장점
    • 어떤 서비스가 어떤 이벤트를 수신하는지 추측이 어렵고, 트랜잭션이 많은 서비스의 경우 문제상활 발생 시 추적이 어려운 것이 단점
  2. Orchestration based SAGA pattern
  • 분산 트랜잭션을 관리하는 orchestrator가 존재하여 여러 트랜잭션을 관리하는 형태
  • 트랜잭션을 한눈에 관리할 수 있고, 순서가 있는 트랜잭션을 구현 가능하며 보상 트랜잭션을 쉽게 관리 가능한 것이 장점
  • 중앙집중적 형태이므로 도메인 커플링이 높아지고, 모든 트랜잭션을 orchestrator가 관리하기 때문에 로직이 복잡해지는 것이 단점

Choreography based SAGA pattern

 

Orchestration based SAGA Pattern

Reference

 

 

'Cloud Architecture' 카테고리의 다른 글

Proxy / Forward Proxy / Reverse Proxy  (0) 2022.06.15
TCP, UDP, TCP Window Size  (0) 2022.06.15
TDD, BDD, DDD  (0) 2022.06.14
Circuit Breaking  (0) 2022.06.14
Micro Service Architecture  (0) 2022.06.14