Spring Kafka (2) - Transactional Outbox로 CQRS 이벤트 안전하게 발행하기
Spring Kafka (1)에서는 KafkaTemplate 으로 메시지를 보내고 @KafkaListener 로 받는 가장 기본적인 흐름을 정리했다. 하지만 실제 서비스에서 "DB에 데이터를 저장하고, 그 사실을 Kafka로 알린다"는 요구사항을 곧이곧대로 구현하면 문…
TAG
6개의 글
Spring Kafka (1)에서는 KafkaTemplate 으로 메시지를 보내고 @KafkaListener 로 받는 가장 기본적인 흐름을 정리했다. 하지만 실제 서비스에서 "DB에 데이터를 저장하고, 그 사실을 Kafka로 알린다"는 요구사항을 곧이곧대로 구현하면 문…
Kafka를 애플리케이션에 연결하려면 Producer와 Consumer의 클라이언트 설정, 직렬화 방식, 리스너 실행 등을 준비해야 한다. Spring Kafka는 이 과정을 Spring의 빈과 애노테이션으로 구성할 수 있게 해 주는 프로젝트다. 이번 글에서는 Spri…
Kafka를 처음 접하면 Producer, Consumer, Broker, Topic, Partition 같은 용어가 한꺼번에 등장해 복잡하게 느껴진다. 이번 글에서는 주문 생성 이벤트를 예로 들어 각 개념이 어떻게 연결되는지 정리한다. 또한 Kafka 클러스터 내부의…
1. 개요 여러 애플리케이션이 서로 직접 데이터를 주고받는 구조에서는 파이프라인 개수가 늘어날수록 소스 코드와 버전 관리가 복잡해지고, 타깃 애플리케이션 하나에 장애가 나면 그 영향이 소스 애플리케이션까지 그대로 전파되는 문제가 생긴다. Kafka는 이런 문제를 해결하…
1. 개요 CQRS(Command and Query Responsibility Segregation) 는 데이터 저장소로부터 읽기와 업데이트 작업을 분리하는 아키텍처 패턴이다. 이름 그대로 상태를 변경하는 Command 와 상태를 조회하는 Query 의 책임을 나눠서,…
1. 개요 앞선 글에서 CQRS의 개념과 Kafka의 기초를 정리했으니, 이번 글에서는 Spring Boot로 실제 쓰기(Command)/읽기(Query) 서비스를 나눠 만들고 Kafka로 두 서비스를 연결하는 예제를 구현한다. 쓰기 서비스( cqrs write )는…