Kafka는 Apache에서 채택한 오픈 소스 이벤트 스트리밍 플랫폼으로 실시간 데이터 처리가 가능하며 메시지 브로커로 사용할 수 있는 효과적인 도구로 잘 알려져 있다.
메시지가 소비된 후 삭제하는 기존 메시지 브로커와 달리 Kafka에서는 이러한 메시지가 유지되므로 오류가 있거나 새 서비스를 통합할 때 재생할 수 있다.
Kafka의 최신 릴리스는 새로운 Quorum 컨트롤러를 활용하여 Kafka의 메타데이터를 관리하는 프로토콜인 Kafka Raft(KRaft)를 지원한다. KRaft를 사용하면 더 이상 Zookeeper에 의존할 필요가 없다는 것이다.
💡 zookeeper 없는 kafka
최신 버전의 Kafka는 Zookeeper에 대한 종속성을 제거하는 Raft 프로토콜(KRaft)을 도입했다. KRaft를 사용하면 Zookeeper용으로 다른 인스턴스를 배포할 필요가 없으므로 Kafka 배포가 더 간단하고 가벼우며 비용이 적게 든다. KRaft는 Zookeeper와 달리 상대적으로 새롭기 때문에 프로덕션에 사용할 때 신중한 고려를 권장하지만 우리는 무겁게 kafka를 사용하지 않을 것임으로 kafka만 배포하기로 하였다.
Kafka는 상태 저장 애플리케이션이므로 Kafka는 데이터를 유지하고 저장하며 상태를 유지해야 한다. 상태 저장 애플리케이션을 배포하는 것은 그 복잡성 때문에 상당히 어려운 일이다. 하지만 Kubernetes는 상태 저장 애플리케이션 및 추상화를 지원하므로 복잡성을 줄이면서 유연성과 확장성을 유지한다. 즉, 하나의 구성으로 모든 곳에서 실행할 수 있다.
kubectl create ns kafka
helm repo add bitnami https://charts.bitnami.com/bitnami
# kafka 설치하기
helm install my-kafka bitnami/kafka -n kafka
# kafka 설치 확인
kubectl get all -n kafka