서비스에 카프카 도입 후, 적절한 모니터링 툴을 찾아보다가 KaDeck free버전 설치 시 professional 7일 평가판을 사용할 수 있어 클러스터를 적용해 보았다.
설치 및 적용이 매우 간단하고 모니터링까지 너무 괜찮았지만, free버전으로 전환된 후 확인해보니 실제로 사용할 수 있는 기능이 매우 적어 결국 서비스에 적용하진 못했다.
설치 및 클러스터 등록
설치 링크 : https://www.getkadeck.com/#/thankyoudesktop
KaDeck Support : https://support.xeotek.com/hc/en-us
-
설치 후 약관동의
-
초기화면
-
카프카 클러스터 등록
-
등록 시 초기화면
connect/disconnect로 클러스터 연결/해제
UI
Manage Connection
- 카프카 커넥션 리스트 조회
- 특정 카프카 연결 시
- 현재 브로커/토픽/컨슈머 그룹 확인
- 노드 상세정보 확인
Data Browser
Data Browser 가이드 : https://support.xeotek.com/hc/en-us/articles/360013603520-Topic-Browser?ci=a10339922b1188b11b11c124488a1099
기본 UI
상세 기능
참고
-
스키마 레지스트리
- 카프카와 별도로 구성된 독립적 애플리케이션으로, 프로듀서/컨슈머와 직접 통신 (HTTP 기반)
- 장점
- 데이터 트러블슈팅 감소
- 용이한 데이터 포맷 확인
- 데이터 스키마 관련 커뮤니케이션 감소
- 데이터 처리 시 유연성 확보
- 동작 원리
- 프로듀서는 스키마 레지스트리에 스키마 등록
- 스키마 레지스트리는 등록된 스키마 정보를 카프카 내부 토픽에 저장
- 프로듀서는 스키마 레지스트리에 등록된 스키마의 ID와 메시지를 카프카로 전송
- 마 ID를 스키마 레지스트리로부터 읽어온 후 프로듀서가 전송한 스키마 ID와 조합해 메시지를 읽어옴
- 레지스트리가 지원하는 포맷을 사용해야 함
- Avro
- 시스템, 프로그래밍 언어, 프로세싱 프레임워크 사이에서 데이터 교환을 도와주는 오픈소스 직렬화 시스템
- 빠른 바이너리 데이터 포맷을 지원하며 JSON형태의 스키마를 정의할 수 있는 매우 간결한 데이터 포맷
- 데이터 필드마다 데이터 타입 정의 가능, doc을 이용해 각 필드의 의미를 정확하게 전달 가능
- JSON
- 메시지마다 필드 네임들이 포함되어 전송되므로 효율이 떨어짐
- 프로토콜 버퍼
- 운영 환경에서 스키마 레지스트리는 카프카와 분리된 별도의 서버에서 실행하는 것이 일반적임, 또한 이중화(m/s) 구성 추천
- 스키마 레지스트리 옵션
- kafkastore.topic : 스키마 레지스트리에서 스키마 저장과 관리 목적으로 카프카의 토픽 사용
- 순서가 중요하기 때문에 토픽의 파티션 수는 항상 1
- schema.compatibility.level : 스키마 호환성 레벨 (BACKWARD/FORWARD/FULL)
-
카프카 커넥트
- 아파치 카프카의 오픈소스 중 하나로, 데이터베이스 같은 외부 시스템과 카프카를 손쉽게 연결하기 위한 프레임워크
- 효율적이고 빠르게 클라이언트를 구성하고 적용 가능
- 장점
- 데이터 중심 파이프라인 : 커넥트를 이용해 카프카로 데이터를 보내거나 카프카로부터 데이터를 가져옴
- 유연성과 확장성 : 단독/분산 모드 실행 가능
- 재사용성과 기능 확장 : 기존 커넥터 활용 가능, 빠른 확장이 가능해 운영 오버헤드를 감소시킬 수 있음
- 장애 및 복구 : 분산 모드로 실행 시 워커 노드의 장애 상황에도 유연하게 대응가능하므로 고가용성 보장
- 소스 → 소스 커넥트 → 카프카 → 싱크 커넥트 → 싱크
- 커넥트 구성
- 워커 : 카프카 커넥트 프로세스가 실행되는 서버 또는 인스턴스 등을 의미, 커넥터나 태스크들이 워커에서 실행됨
- 커넥터 : 직접 데이터 복사 X, 데이터를 복사 경로 정의 및 관리, 각 태스크들을 워커에 분산
- 태스크 : 커넥터가 정의한 작업을 직접 수행하는 역할