Notification Events Explained – with Spring Cloud Stream & Kafka
- 알림 이벤트 패턴 정의: 프로듀서가 최소한의 정보(메타데이터)만 담은 메시지를 발행하고, 컨슈머는 필요시 프로듀서에게 전체 정보를 요청하는 이벤트 기반 아키텍처 패턴입니다. 🔔
- 메타데이터 포함: 이벤트 메시지에는 이벤트 유형, 상관관계 ID, 고유 식별자, 발생 시각 등 핵심 메타데이터만 포함됩니다. 🏷️
- 전체 정보 요청 메커니즘: 컨슈머는 이벤트에서 받은
source URI나 ID를 활용하여 프로듀서 마이크로서비스를 호출해 전체 데이터를 가져옵니다. 📞
- 트랜잭션 아웃박스 패턴 적용: 고객 생성 및 이벤트 발행(아웃박스 메시지 저장)을 동일한 데이터베이스 트랜잭션 내에서 처리하여 데이터 일관성을 보장합니다. 📦
- 스케줄러를 통한 이벤트 발행: 아웃박스 테이블에 저장된 이벤트는 스케줄러(또는 크론 잡)에 의해 주기적으로 읽혀 Kafka로 발행됩니다. ⏰
- REST API 응답 최적화: 새로운 리소스 생성 시
201 Created 상태 코드와 함께 Location 헤더에 리소스 URI를 반환하여 효율적인 API 상호작용을 지원합니다. 📍
- Spring Cloud Stream 및 Kafka 활용: Spring Cloud Stream을 사용하여 Kafka와의 통합을 간소화하고, 이벤트 기반 통신을 구현합니다. ⚙️
- AKHQ를 통한 Kafka 모니터링: AKHQ와 같은 GUI 도구를 사용하여 Kafka 토픽, 메시지, 이벤트 헤더 등을 시각적으로 확인하고 모니터링합니다. 📊
- 풍부한 도메인 모델 (DDD): 비즈니스 로직을 엔티티와 값 객체에 집중시켜 도메인 모델의 견고성과 재사용성을 높입니다. 🧠
- Java 21 및 Spring Boot 3: 최신 Java 및 Spring Boot 버전을 활용하여 애플리케이션을 구축하며, Java 17의 Sealed Interface와 같은 기능을 사용합니다. 🚀