-
#3. Event-Driven - Kafka와 RabbitMQ를 함께 사용하는 하이브리드 이벤트 시스템 구축개발노트/Architecture 2025. 2. 11. 14:12반응형
Kafka와 RabbitMQ를 함께 사용하는 하이브리드 이벤트 시스템 구축 가능 여부
Kafka와 RabbitMQ는 서로 다른 목적을 가진 메시징 시스템이지만, 상호 보완적인 역할을 수행할 수 있습니다. 따라서 Kafka와 RabbitMQ를 함께 사용하는 하이브리드 이벤트 시스템 구축은 충분히 가능합니다.
✔ 핵심 아이디어:
- Kafka는 대용량 스트리밍 데이터 처리 및 이벤트 로그 저장을 담당
- RabbitMQ는 빠른 요청/응답 및 트랜잭션 메시지 처리를 담당
1. Kafka + RabbitMQ 하이브리드 아키텍처 개념
Kafka와 RabbitMQ를 함께 사용하는 대표적인 패턴은 다음과 같습니다.
✅ 패턴 1: RabbitMQ → Kafka (단기 메시지 처리 후 로그 저장)
- RabbitMQ에서 즉시 응답이 필요한 요청을 처리
- 처리된 이벤트를 Kafka로 전송하여 장기 저장 및 스트리밍
- 예제: 실시간 거래 시스템
- RabbitMQ: 결제 요청을 처리하고, 트랜잭션을 즉시 응답
- Kafka: 결제 로그를 저장하여 분석 시스템에서 활용
📌 구현 방식
- 서비스가 RabbitMQ에서 메시지를 소비하여 요청을 처리
- 처리된 결과를 Kafka Producer를 통해 Kafka에 저장
- Kafka Consumer가 로그를 분석하거나 빅데이터 시스템과 연계
✅ 패턴 2: Kafka → RabbitMQ (이벤트 필터링 후 전달)
- Kafka는 모든 이벤트를 저장 및 스트리밍
- RabbitMQ는 특정 서비스에 필요한 메시지만 필터링하여 전달
- 예제: 알람 및 알림 시스템
- Kafka: 전체 사용자 이벤트를 스트리밍 (로그인, 주문, 결제, 리뷰 등)
- RabbitMQ: 특정 알림을 필터링하여 사용자에게 전달 (결제 실패 알람 등)
📌 구현 방식
- Kafka Consumer가 특정 조건의 메시지를 필터링
- RabbitMQ Producer를 통해 RabbitMQ로 메시지를 전송
- RabbitMQ Consumer가 메시지를 소비하여 알람 전송
✅ 패턴 3: Kafka와 RabbitMQ를 병렬로 활용
- 일부 서비스는 Kafka에서 직접 데이터를 가져가고,
- 일부 서비스는 RabbitMQ를 통해 메시지를 가져감
- 예제: 마이크로서비스 이벤트 처리
- Kafka: 실시간 분석 서비스 (데이터 레이크, 로그 저장)
- RabbitMQ: 동기적인 업무 로직 처리 (사용자 인증, 결제 승인)
📌 구현 방식
- 이벤트가 발생하면 Kafka에 저장
- Kafka Consumer 중 일부는 데이터를 직접 사용
- 일부 Kafka Consumer는 RabbitMQ로 메시지를 전송하여 빠른 응답을 요구하는 서비스에 전달
2. Kafka와 RabbitMQ를 연결하는 방법
Kafka와 RabbitMQ를 함께 사용할 때, 두 시스템을 연결하는 방식이 중요합니다.
✔ Kafka와 RabbitMQ 연결 방식
- Kafka Connect + RabbitMQ Connector 사용
- Kafka Connect를 활용하여 RabbitMQ로부터 데이터를 Kafka로 전송 가능
- 반대로 Kafka에서 특정 데이터를 RabbitMQ로 전달 가능
- Kafka Producer/Consumer + RabbitMQ Producer/Consumer 직접 구현
- Kafka Consumer가 특정 메시지를 RabbitMQ로 전달
- RabbitMQ Consumer가 특정 요청을 Kafka로 전달
- Spring Cloud Stream 사용
- Spring Cloud Stream을 사용하여 Kafka 및 RabbitMQ를 손쉽게 연결 가능
3. Kafka + RabbitMQ 하이브리드 시스템 사용 사례
1️⃣ 금융 시스템 (거래 처리 및 로그 분석)
- RabbitMQ: 트랜잭션 요청을 빠르게 처리 (결제 승인, 계좌 이체)
- Kafka: 모든 거래 로그를 저장하고, 이상 탐지 및 분석
2️⃣ 전자상거래 플랫폼 (주문 처리 및 추천 시스템)
- RabbitMQ: 주문 요청을 처리하고 재고 관리
- Kafka: 주문 이력을 저장하고 실시간 추천 시스템에 활용
3️⃣ IoT 시스템 (센서 데이터 처리)
- RabbitMQ: 특정 IoT 장치의 상태 메시지를 빠르게 전달
- Kafka: 전체 IoT 데이터를 수집하여 분석 및 머신러닝 적용
4. Kafka + RabbitMQ 하이브리드 시스템의 장단점
✅ 장점
- 각자의 강점을 최대한 활용 가능
- Kafka는 대량의 데이터를 저장하고 분석
- RabbitMQ는 빠른 메시지 처리를 담당
- 유연한 아키텍처 구성
- Kafka를 중심으로 데이터를 저장하면서
- RabbitMQ를 통해 실시간 요청 처리가 가능
- 분산 시스템에서 높은 확장성 제공
- Kafka는 분산 환경에서 수평 확장이 가능
- RabbitMQ는 동적 라우팅을 활용해 메시지 처리를 최적화 가능
❌ 단점
- 운영 및 유지보수가 복잡
- Kafka와 RabbitMQ를 함께 운영하려면 두 시스템의 설정 및 모니터링이 필요
- 데이터 중복 가능성
- 동일한 이벤트가 Kafka와 RabbitMQ에 동시에 존재할 수 있어 중복 데이터 처리 필요
- 트랜잭션 보장이 어려움
- Kafka와 RabbitMQ 간 트랜잭션을 완벽하게 동기화하기 어려움
- Exactly Once Processing을 위해 추가적인 작업이 필요
5. 결론: Kafka와 RabbitMQ, 언제 함께 사용할까?
✔ 대량의 데이터를 저장하고 분석하면서, 빠른 요청 처리가 필요할 때
✔ 마이크로서비스에서 이벤트 기반 메시징을 유연하게 사용하고 싶을 때
✔ 실시간 스트리밍과 비동기 작업 처리를 분리해야 할 때📌 추천되는 조합:
- Kafka → 빅데이터 분석, 이벤트 로그, 실시간 스트리밍
- RabbitMQ → 요청/응답 처리, 트랜잭션 메시징, Task Queue
반응형'개발노트 > Architecture' 카테고리의 다른 글
#2. Event-driven - Kafka vs RabbitMQ 차이점과 장단점 (0) 2025.02.11 #1. Event-driven 방식이란? (0) 2025.02.11