프로젝트/kafka

Kafka Binder란 무엇인가?

Junuuu 2023. 11. 21. 00:01
728x90

 

개요

Kafka를 Spring Cloud Stream과 함께 사용하다 보면 Kafka Binder라는 개념이 등장하게 됩니다.

Kafka Binder란 무엇인가? 를 정리해 보면서 Kafka Binder에 대해서 개념을 잡아보고자 합니다.

 

Spring Cloud란?

Spring Clloud 핵심 아키텍처

Spring Cloud는 분산 시스템에서 필요한 다양한 기능들을 추상화하여 제공합니다.

보통 마이크로서비스 아키텍처(MSA)를 구축할 때 유용한 도구를 제공하는 프레임워크입니다.

 

주요 기능으로는 서비스 디스커버리, 로드밸런싱, Config 관리, 회로 차단, 분산 추적 등이 있습니다.

 

Spring Cloud Stream이란?

Spring Cloud Stream Application

이벤트 중심 마이크로 서비스를 구축하기 위한 프레임워크입니다.

Spring Cloud Stream은 외부 미들웨어와의 통신을 하기 위한 통합 컴포넌트를 제공합니다.

 

여기에는 Binder와 Binding이라는 개념이 존재합니다.

Binder는 사전적으로 느슨한 용지를 함께 묶을 수 있는 고리 등을 뜻합니다.

Binding은 무언가를 묶는다는 뜻입니다.

 

위의 그림을 요약해보자면 Spring Application과 Kafka와 같은 Middleware를 Binder가 통합합니다.

Binder는 input output binding을 설정하여 Binder를 통해 미들웨어와 Application Core가 통신할 수 있게 처리합니다.

 

Kafka 이외에도 RabbitMQ를 활용도 가능합니다.

 

매우 간단하게 설명하자면 다음과 같습니다.

  • Binder를 통해 kafka broker의 주소를 설정한다.
  • Binding을 통해 kafka consumer, producer를 설정한다.

 

spring-kafka vs spring-cloud-starter-stream-kafka

Spring Application에서 kafka를 사용하여 producer, consumer를 구현하는 2가지 방법이 있습니다.

 

심플하게 사용하기에는 spring-kafka가 적당하며, spring-cloud-starter-stream-kafka의 경우에는 캡슐화가 되어 있어 범용으로 사용되기에는 좋지만 구현이 살짝 더 복잡합니다.

 

이런 차이점 때문에 spring-cloud-starter-stream-kafka를 활용하면 kafka 이외의 RabbitMQ와 같은 다른 메시지큐도 사용할 수 있습니다.

 

 

참고자료

https://spring.io/cloud

https://docs.spring.io/spring-cloud-stream/docs/current/reference/html/spring-cloud-stream.html#spring-cloud-stream-reference

https://www.daddyprogrammer.org/post/14097/springboot-kafka-producer-consumer/

https://stackoverflow.com/questions/47312542/spring-kafka-vs-spring-cloud-stream-kafka