03. MicroService(Outer)

MSA에서 보상트랜잭션

카이저일공 2024. 1. 19. 15:36
SAGA 및 Event Driven 패턴 상세 정보

SAGA 및 Event Driven 패턴 상세 정보

가. SAGA 패턴

1. 개요

SAGA 패턴은 분산 시스템에서 긴 트랜잭션을 관리하기 위한 패턴으로, 각 서비스의 트랜잭션을 로컬 트랜잭션으로 분할하고, 실패 시 보상 트랜잭션을 실행합니다.

2. 장단점

  • 장점: 분산 시스템에서 트랜잭션 간 의존성을 줄이며, 시스템 전체의 다운타임 없이 부분적인 오류를 관리할 수 있습니다. 또한, 복잡한 비즈니스 프로세스에 대한 효율적인 관리가 가능합니다.
  • 단점: 트랜잭션 간의 의존성과 보상 로직에 대한 복잡성이 증가합니다. 또한, 전체 프로세스의 성능 저하와 보상 로직 구현에 대한 추가적인 노력이 필요합니다.

3. 사례

예를 들어, 전자 상거래 시스템에서 고객의 주문 처리를 위해 재고 확인, 결제 처리, 배송 준비의 각 단계를 독립적인 서비스로 관리하며, 어느 하나의 단계에서 오류가 발생하면 이전 단계의 트랜잭션을 보상하는 방식으로 처리합니다.

4. 구축시 고려사항

  • 보상 로직의 정확성: 각 트랜잭션의 보상 로직을 정확하게 설계하여, 실패 시 안전하게 복원할 수 있어야 합니다.
  • 트랜잭션 관리: 각 서비스 간의 트랜잭션을 효율적으로 관리하고, 오류 발생 시 적절한 대응이 가능해야 합니다.
  • 모니터링 및 로깅: 시스템의 각 부분에서 발생하는 이벤트와 오류를 모니터링하고 로깅하여, 문제 해결 및 성능 분석에 활용합니다.

나. Event Driven 패턴

1. 개요

Event Driven 패턴은 이벤트를 기반으로 서비스가 트랜잭션을 처리하는 방식입니다. 서비스는 이벤트를 발행하고 구독하여 반응합니다.

2. 장단점

  • 장점: 서비스 간의 결합도를 낮추고, 시스템의 확장성 및 유연성을 향상시킵니다. 비동기 처리를 통해 시스템의 전체적인 성능과 가용성이 향상됩니다.
  • 단점: 이벤트 기반 아키텍처는 이벤트의 추적 및 모니터링이 어렵고, 복잡한 비즈니스 로직에서의 이벤트 일관성을 유지하는 것이 도전적일 수 있습니다.

3. 사례

예를 들어, 금융 시스템에서 고객의 계좌 거래 이벤트가 발생하면, 이를 다른 시스템이 구독하여 실시간으로 계좌의 잔액을 갱신하거나 부정 거래 감지 작업을 수행합니다.

4. 구축시 고려사항

  • 이벤트 설계: 이벤트의 구조와 유형을 명확하게 정의하여, 시스템 간에 효과적인 통신이 가능하도록 합니다.
  • 이벤트 모니터링: 이벤트의 발행 및 소비를 모니터링하여 시스템의 상태를 파악하고 문제를 신속하게 해결합니다.
  • 메시지 브로커 선택: Kafka, RabbitMQ 등과 같은 메시지 브로커를 선택하여 이벤트의 신뢰성 있는 전송을 보장합니다.

다. 결론 및 보상 트랜잭션 처리시 고려사항

SAGA 패턴과 Event Driven 패턴은 Kafka를 활용한 분산 시스템에서 보상 트랜잭션을 관리하는 데 효과적입니다. 각 패턴은 고유의 장단점을 가지며, 시스템의 요구사항과 특성에 따라 적절한 패턴을 선택하여 구현해야 합니다.

  • 시스템의 복잡성: 복잡한 시스템에서는 Saga 패턴이 오류 관리와 복원력 면에서 유리합니다.
  • 데이터베이스의 복원성: 강력한 복원력을 가진 데이터베이스 시스템에서는 Event Driven 패턴이 데이터의 일관성을 유지하는 데 도움이 됩니다.
  • 성능: Saga 패턴은 보상 로직으로 인해 성능 저하가 발생할 수 있으나, Event Driven 패턴은 비동기 처리로 인해 전체 시스템 성능이 향상될 수 있습니다.