Apache Kafka 공부

#3 카프카 생태계 25.02.10

박태정 입니다. 2025. 2. 14. 17:40
반응형

🌍 카프카 생태계

최근에 카프카(Kafka)에 대해 공부하면서 흥미로운 개념들을 정리해보았다. 처음에는 단순한 메시지 브로커 정도로만 생각했는데, 공부할수록 훨씬 강력한 생태계를 가지고 있다는 걸 알게 되었다. 이번 글에서는 카프카의 주요 개념들을 하나씩 정리해보려고 한다.


🚀 프로듀서(Producer)

프로듀서는 데이터를 보내는 역할을 한다. 쉽게 말하면 카프카에 데이터를 생산해내는 주체라고 볼 수 있다.

그렇다면 프로듀서는 데이터를 어디로 보낼까? 바로 토픽(Topic) 이라는 개념이 등장한다.


🏢 카프카 클러스터와 토픽(Topic)

카프카는 하나의 클러스터로 운영된다. 그리고 이 클러스터 안에는 여러 개의 토픽(Topic) 이 존재한다.

이때, 토픽은 일종의 데이터 스트림이라고 볼 수 있는데, 프로듀서가 데이터를 특정 토픽으로 전송하면, 컨슈머가 그 토픽에서 데이터를 읽어가는 방식이다.

그런데 여기서 궁금한 점이 생긴다. 토픽은 단순한 데이터 저장소일까? 아니면 뭔가 더 있는 걸까? 🤔


📥 컨슈머(Consumer)

컨슈머는 데이터를 처리하는 역할을 한다.

프로듀서가 토픽에 데이터를 보내면, 컨슈머는 해당 토픽에서 데이터를 읽어가면서 원하는 방식으로 처리할 수 있다.

그런데 컨슈머가 여러 개라면? 데이터를 어떻게 나눠 가져갈까? 이 부분은 조금 더 깊게 공부해봐야겠다.


🔄 스트림즈(Streams)

카프카 스트림즈는 프로세싱을 통해 토픽에 있는 데이터를 처리하고, 다시 새로운 토픽으로 데이터를 넣는 역할을 한다. 즉, 데이터를 변형하거나 가공하는 과정을 담당한다고 볼 수 있다.

예를 들어, 실시간 데이터 분석이 필요한 경우 스트림즈를 활용하면 편리할 것 같다. 그런데 여기서 궁금한 점이 있다. 스트림즈는 단순한 컨슈머와 어떤 차이가 있을까?🤔


🔗 커넥트(Kafka Connect)

카프카에서 데이터 파이프라인을 운영하는 가장 핵심적인 툴이 바로 Kafka Connect 이다.

커넥트에는 소스 커넥트(Source Connector)싱크 커넥트(Sink Connector) 두 가지가 있다.

🟢 소스 커넥트(Source Connector)

  • 프로듀서 역할을 한다.
  • 특정 데이터베이스나 애플리케이션에서 데이터를 가져와서 카프카 토픽에 데이터를 넣는다.

🔵 싱크 커넥트(Sink Connector)

  • 컨슈머 역할을 한다.
  • 카프카에서 데이터를 가져와서 특정 타겟 시스템(예: 데이터베이스, 파일 저장소 등)에 데이터를 전송한다.

이런 식으로 커넥트를 사용하면 직접 프로듀서나 컨슈머를 구현하는 것보다 훨씬 효율적으로 데이터를 처리할 수 있다.

REST API를 활용하면 동일한 데이터 파이프라인을 반복적으로 만들 수도 있다.

그런데 모든 언어에서 동일하게 지원될까? 🤔


💻 언어 지원 범위

Kafka는 공식적으로 Java 기반에서 모든 기능을 지원하지만, Go, JavaScript 같은 서드파티 라이브러리에서는 모든 기능을 완벽하게 제공하지 않을 수도 있다.

이 말인즉, 카프카를 활용한 개발을 할 때는 언어 선택도 신중하게 해야 한다는 뜻이다.


🔍 마무리하며

카프카는 단순한 메시지 브로커가 아니라 강력한 데이터 스트리밍 플랫폼이라는 걸 다시금 깨달았다.

이번 정리에서 다룬 개념들은 비교적 기본적인 부분인데, 아직도 궁금한 점이 많다.

  • 카프카에서 데이터가 손실될 가능성은 없을까?
  • 컨슈머 그룹이 여러 개일 때, 데이터는 어떻게 분배될까?
  • 스트림즈와 일반 컨슈머의 차이는 정확히 뭘까?

앞으로 더 깊이 공부하면서 하나씩 답을 찾아봐야겠다!

반응형