🔥 FREE PRO OFFER OnlyLink.click Pro Version is 100% Free of Cost till 31 December, 2026! Claim Free Pro

Kafka

사가 패턴: 마이크로서비스 아키텍처의 분산 트랜잭션

사가 패턴: 마이크로서비스 아키텍처의 분산 트랜잭션

기존의 모놀리식 애플리케이션에서는 여러 엔터티에서 데이터 일관성을 유지하는 것이 간단합니다. 관계형 데이터베이스 엔진은 로컬 SQL 트랜잭션 내에 포함된 ACID(원자성, 일관성, 격리, 내구성) 보장을 제공합니다. 주문, 지불 공제 또는 재고 예약이 중간에 실패하는 경우 ROLLBACK을 호출하면 모든 데이터베이스 수정 사항이 즉시 되돌려집니다. 그러나 최신 마이크로서비스 아키텍처로 마이그레이션하면 데이터 관리가 근본적으로 변화합니다. 도메인 자율성과 독립적인 확장성을 보장하기 위해 각 마이크로서비스는 전용 데이터베이스를 소유합니다. 전자상거래 결제 처리와 같은 단일 비즈니스 작업은 이제 여러 서비스 경계와 데이터베이스 엔진(예: 주문용 PostgreSQL, 결제용 DynamoDB, 재고용 Redis)에 걸쳐 있습니다.
Microservices Saga Pattern Distributed Transactions Event-Driven Architecture Kafka Orchestration Choreography System Design
Transactional Outbox 패턴: 마이크로서비스에서 신뢰성 있는 이벤트 발행하기

Transactional Outbox 패턴: 마이크로서비스에서 신뢰성 있는 이벤트 발행하기

현대 이벤트 기반 마이크로서비스 아키텍처(Event-Driven Architecture)에서 서비스 간 상태 변경을 알리기 위해 OrderCreated나 PaymentProcessed 같은 도메인 이벤트를 발행합니다. 하지만 이벤트 발행 시 심각한 문제가 발생할 수 있습니다: 데이터베이스 업데이트와 이벤트 발행이 모두 성공하거나 모두 실패하도록 보장하는 방법은 무엇일까요? 마이크로서비스가 로컬 데이터베이스(PostgreSQL, MySQL)를 업데이트한 직후 네트워크를 통해 메시지 브로커(Apache Kafka, RabbitMQ)로 이벤트를 전송할 때 네트워크 장애나 타임아웃이 발생하면 데이터 불일치가 발생합니다.
Microservices Outbox Pattern Distributed Systems Kafka Debezium Event-Driven Architecture System Design