오늘은 RabbitMQ를 사용하다 더 사용자가 늘어나고 서비스가 고도화 되어 Kafka를 도입하게 되면 Mifrationd을 해야하는데 하는 방법론에 대해서 살펴보려 한다.
RabbitMQ에서 Kafka로 Migration
-
Consumer를 RabbitMQ, Kafka에 모두 할당
-
Publisher(API서버)에서 메시지 전송 타겟을
RabbitMQ -> Kafak로 변경
-
RabbitMQ에 잔여 메시지 확인 후
RabbitMQ와 Consumer 삭제

-
API 서버에서 RabbitMQ를 바라보고 있었을 텐데
-
kafka를 먼저 만들고
-
API가 Kafka를 바라보게 하면 된다.
RabbitMQ에서 Kafka로 Migration - 주의사항
RabbitMQ에서 Kafka로 Migration
- Consumer 로직 변경
- RabbitMQ: 큐에서 메시지를 읽고 큐에서 메시지를 제거하는 방식
- Kafka: Consumer가 특정 오프셋(offset)을 따라가며 데이터를 읽음
- Publisher 로직 변경
- 어려운 kafka 설정
- consumer를 무작위로 추가 X. 파티션 단위로 병렬 처리가 가능함
(파티션 내의 메시지는 순서가 보장)
- consumer가 더 많다면 할당된 파티션이 없어서 대기 상태
- 파티션이 더 많다면 consumer간에 고르게 분배됨
- consumer가 너무 많다면 리소스가 과도하게 사용되여 성능 저하가 우려됨
- consumer를 추가/제거할때 리밸런싱(rebalancing)과정을 거쳐 파티션이 재할당됨
(데이터 처리에 중단 및 지연 발생)