[운송장 정보보호 서비스] EKS - kafka 연동

신현식·2023년 6월 1일
0

캡스톤디자인

목록 보기
7/7
post-thumbnail

kafka란

Kafka는 Apache에서 채택한 오픈 소스 이벤트 스트리밍 플랫폼으로 실시간 데이터 처리가 가능하며 메시지 브로커로 사용할 수 있는 효과적인 도구로 잘 알려져 있다.

메시지가 소비된 후 삭제하는 기존 메시지 브로커와 달리 Kafka에서는 이러한 메시지가 유지되므로 오류가 있거나 새 서비스를 통합할 때 재생할 수 있다.
Kafka의 최신 릴리스는 새로운 Quorum 컨트롤러를 활용하여 Kafka의 메타데이터를 관리하는 프로토콜인 Kafka Raft(KRaft)를 지원한다. KRaft를 사용하면 더 이상 Zookeeper에 의존할 필요가 없다는 것이다.

💡 zookeeper 없는 kafka

최신 버전의 Kafka는 Zookeeper에 대한 종속성을 제거하는 Raft 프로토콜(KRaft)을 도입했다. KRaft를 사용하면 Zookeeper용으로 다른 인스턴스를 배포할 필요가 없으므로 Kafka 배포가 더 간단하고 가벼우며 비용이 적게 든다. KRaft는 Zookeeper와 달리 상대적으로 새롭기 때문에 프로덕션에 사용할 때 신중한 고려를 권장하지만 우리는 무겁게 kafka를 사용하지 않을 것임으로 kafka만 배포하기로 하였다.

Kubernetes에 Kafka를 배포해야 하는 이유

Kafka는 상태 저장 애플리케이션이므로 Kafka는 데이터를 유지하고 저장하며 상태를 유지해야 한다. 상태 저장 애플리케이션을 배포하는 것은 그 복잡성 때문에 상당히 어려운 일이다. 하지만 Kubernetes는 상태 저장 애플리케이션 및 추상화를 지원하므로 복잡성을 줄이면서 유연성과 확장성을 유지한다. 즉, 하나의 구성으로 모든 곳에서 실행할 수 있다.

  • Kubernetes 클러스터에서 Kafka는 재시작 후 포드의 고유성, 스토리지 식별자 및 이름을 유지하기를 원하기 때문에 Statefulset에 배포된다.

Helm으로 kafka 설치

  • Helm repo 추가 및 helm으로 설치
    Helm Repository에 Bitnami가 없는 경우 아래 명령어로 repository를 추가한다. helm install 명령어로 kafka를 설치하면 간단하게 설치가 끝난다.
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

  • 이후 백엔드에서 kafka의 DNS 주소인 my-kafka.kafka.svc.cluster.local 주소를 통해 eks cluster 내부에서 통신을 진행하면 된다.
profile
전공 소개

0개의 댓글