🌍 카프카 생태계
최근에 카프카(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 같은 서드파티 라이브러리에서는 모든 기능을 완벽하게 제공하지 않을 수도 있다.
이 말인즉, 카프카를 활용한 개발을 할 때는 언어 선택도 신중하게 해야 한다는 뜻이다.
🔍 마무리하며
카프카는 단순한 메시지 브로커가 아니라 강력한 데이터 스트리밍 플랫폼이라는 걸 다시금 깨달았다.
이번 정리에서 다룬 개념들은 비교적 기본적인 부분인데, 아직도 궁금한 점이 많다.
- 카프카에서 데이터가 손실될 가능성은 없을까?
- 컨슈머 그룹이 여러 개일 때, 데이터는 어떻게 분배될까?
- 스트림즈와 일반 컨슈머의 차이는 정확히 뭘까?
앞으로 더 깊이 공부하면서 하나씩 답을 찾아봐야겠다!
'Apache Kafka 공부' 카테고리의 다른 글
#4-1 Zookeeper란? (0) | 2025.02.14 |
---|---|
#4-2 리더 파티션과 팔로워 파티션 (0) | 2025.02.14 |
#4 카프카 브로커와 클러스터 (0) | 2025.02.14 |
#2 카프카가 데이터 파이프라인으로 적합한 이유 25.02.10 (0) | 2025.02.14 |
#1 Apache Kafka의 역사와 기본 구조 25.02.10 (0) | 2025.02.14 |