Spring과 Kafka를 활용한 트랜잭셔널 아웃박스 패턴 구현
개발/Spring2024. 11. 21. 22:50Spring과 Kafka를 활용한 트랜잭셔널 아웃박스 패턴 구현

트랜잭셔널 아웃박스 패턴이란?마이크로서비스 환경에서는 데이터베이스와 메시지 브로커를 함께 사용하는 경우가 많습니다. 예를 들어 콘서트 예매 시스템에서 결제가완료되면 사용자에게 알림을 보내야 하는데, 이 과정에서 데이터베이스 트랜잭션과 메시지 발행이 원자성을 가져야 합니다.트랜잭셔널 아웃박스 패턴은 이벤트를 바로 메시지 브로커로 보내지 않고, 먼저 데이터베이스의 아웃박스 테이블에 저장한 후 별도의프로세스가 이를 읽어서 메시지 브로커로 전송하는 방식입니다. 1. 기존 구현의 문제점기존 시스템은 결제 처리와 동시에 카프카로 메시지를 직접 전송했습니다@Transactionalpublic PaymentResult processPayment(PaymentCommand command) { Payment paym..

트랜잭션을 위한 SAGA 패턴
개발/Java2024. 11. 21. 17:23트랜잭션을 위한 SAGA 패턴

개요SAGA 패턴은 마이크로서비스 아키텍처에서 분산 트랜잭션을 관리하기 위한 패턴입니다. 각 서비스의 로컬 트랜잭션을 순차적으로 처리하고, 문제 발생 시 보상 트랜잭션을 통해 일관성을 유지하는 방식으로 동작합니다. 1. 왜 SAGA 패턴이 필요한가?1.1 분산 트랜잭션의 문제점마이크로서비스 아키텍처에서는 하나의 작업이 여러 서비스에 걸쳐 발생하며, 각 서비스는 독립적인 데이터베이스를 가지므로 전통적인 ACID 트랜잭션을 적용하기 어렵습니다. 이로 인해 데이터 일관성을 보장하기 위한 새로운 방법이 필요합니다.1.2 SAGA 패턴의 장점장애 격리 (Failure Isolation): 각 서비스의 로컬 트랜잭션 실패가 전체 시스템에 영향을 최소화.서비스 간 느슨한 결합: 각 서비스는 이벤트나 중앙 오케스트레이..

카프카, 카프카, 카프카.... 왜들 그렇게 카프카를 찾을까....
서버2024. 11. 19. 18:46카프카, 카프카, 카프카.... 왜들 그렇게 카프카를 찾을까....

개요도대체 카프카가 무엇이고 이걸 왜 쓰는걸까요..? 여기서도 카프카 저기서도 카프카.. 그래서 카프카카 뭔데??대규모 실시간 데이터 스트리밍을 하기위한 분산 메시징 시스템 이라고 하는데..오늘 같이 공부하며 카프카를 왜 사용해야 하는지에 대한 이해 및 간단하게 적용을 한번 해보고자 합니다...  1. 카프카의 탄생배경카프카는 비즈니스 소셜 네트워크 서비스인 링크드인 (linked-in) 에서 개발했다고 합니다..(그런의미에서 제 링크드인 http://www.linkedin.com/in/dongmin-cheon-9967352a2) 링크드인 초기에는 파편화 된 데이터 수집 및 분배를 처리하기 위해 데이터를 생성하는 source Application과데이터가 최종 적재되는 target Application..

MSA 아키텍처로의 전환을 고려한 트랜잭션 처리 및 이벤트 기반 설계
개발/Spring2024. 11. 15. 01:38MSA 아키텍처로의 전환을 고려한 트랜잭션 처리 및 이벤트 기반 설계

1. 기존 시스템의 문제점 분석1.1 강결합된 도메인 구조@Transactionalpublic PaymentConcertResult paymentConcert(String token, long reservationId) { long userId = Users.extractUserIdFromJwt(token); Users user = userRepository.findById(userId); Queue queue = queueRepository.findByToken(token); queue.tokenReserveCheck(); Reservation reservation = reservationRepository.findById(reservationId); user.check..

image