RabbitMQ에서 Kafka로 Migration

모두·2025년 3월 21일

오늘은 RabbitMQ를 사용하다 더 사용자가 늘어나고 서비스가 고도화 되어 Kafka를 도입하게 되면 Mifrationd을 해야하는데 하는 방법론에 대해서 살펴보려 한다.

RabbitMQ에서 Kafka로 Migration

  1. Consumer를 RabbitMQ, Kafka에 모두 할당

  2. Publisher(API서버)에서 메시지 전송 타겟을
    RabbitMQ -> Kafak로 변경

  3. RabbitMQ에 잔여 메시지 확인 후
    RabbitMQ와 Consumer 삭제

  4. API 서버에서 RabbitMQ를 바라보고 있었을 텐데

  5. kafka를 먼저 만들고

  6. API가 Kafka를 바라보게 하면 된다.

RabbitMQ에서 Kafka로 Migration - 주의사항

RabbitMQ에서 Kafka로 Migration

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

0개의 댓글