개발 일지

Kafka Connect 사용성 검토

북극곰은콜라 2023. 5. 24. 18:50
반응형


개요

 - 데이터 파이프라인 생성 시  반복 작업을 줄이고 효율적인 전송을 이루기 위한 애플리케이션
 - 반복작업에 대해서 매번 Producer, Consumer 애플리케이션의 배포/운영해야 하는 비효율 보완
 - Connect 를 이용하면 특정한 작업 형태를 템플릿으로 만들어 놓은 Connector 를 실행함으로써 반복작업을 줄일 수 있음.
 - Kafka 브로커와 별도의 클러스터를 구성하며 Connector 가 실행되는 환경을 제공

 


장단점

장점 단점
  • 관리 용이
  • 모니터링 가능
  • 개발 생산성
  • 최적화 및 유지보수되는 pre-build connector
  • 시스템 복잡성 증가
  • 보안 문제 가능성 증가 (타 시스템 연동 때문)
  • 제한된 기능

 


Confluent Platform 소개

Confluent Platform은 여러 소스 데이터를 이용하는 실시간 데이터 파이프라인과 스트리밍 애플리케이션을 쉽게 구축할 수 있는 Kafka 기반 플랫폼
Kafka를 창시한 Jay Kreps는 핵심 멤버들과 함께 Kafka 개발에 집중하기 위해 2014년에 Confluent라는 회사를 창업
Kafka를 Enterpise에서 SaaS 형태로 제공하는 솔루션

Java 뿐 아니라 다양한 랭귀지(C, .Net, Python)로 개발 가능
REST Proxy, MQTT Proxy 통해 Kafka 연결성 확보
100+ Pre-built Connectors 이용 가능하고, 표준 Schema 통한 개발로 운영 복잡성 제거
익숙한 SQL Syntax (ksqlDB) 사용하여 개발이 용이하고, 아키텍처를 단순화

 


License 검토

구분 Desc
Community License Pre-built Connectors (Free)
Confluent REST Proxy
ksqlDB
Confluent Schema Registry
Confluent Admin REST API
Enterprise License Confluent Server (kafka)
Schema Linking
Pre-builtConnectors (Premium, Commercial)
Confluent Control Center
Confluent for Kubernetes
Confluent Replicator
MQTT Proxy
Developer License Confluent Platform features for free
single broker per cluster
여러 single broker cluster 사용은 가능

 


Confluent Platform Overview

cluster 선택 페이지


메인 overview 페이지


토픽 상세 페이지 중 일부

 


Pre-built Connectors

Kafka 생태계에 참여하는 각 회사에서 Connector 제공
Confluent Platform에서 요구사항에 맞춰 개발한 Connector 제공 (대부분 유료)

종류

  • Source Connector: 소스로부터 데이터를 토픽으로 발행하는 커넥터
  • Sink Connector: 토픽으로부터 데이터를 소스에 적재하는 커넥터
  • Transform Connector: source / sink 커넥터로 데이터가 가기 전 컨버팅을 수행하는 커넥터

Free Connectors (23년 상반기 기준)

구분 Connectors 종류 Desc
DB Connector JDBC Connector (Source and Sink) Source, Sink  
Redis Connector (Source and Sink) by Redis Source, Sink  
MongoDB Connector (Source and Sink) Source, Sink  
각종 CDC Connector Source, Sink CDC
converter Kafka Connect Protobuf Converter Transform kafka schema registry 대상 컨버터
Kafka Connect Avro Converter Transform  
Kafka Connect JSON Schema Converter Transform  
Kafka Connect Common Transformations Transform  
Kafka Connect JSON Schema Transformations Transform validation, filter, ket,value convert
External System Connector Snowflake Sink Connector Sink  
HDFS 2 Sink Connector Sink  
ElasticSearch Source / Sink Connector Source, Sink  
Amazon S3 Sink Connector Sink  
Google BigQuery Sink Connector Sink  
Spooldir Source Connector Source  
FilePulse Source Connector Source  
Datadog Logs Sink Connector Sink  
Twitter Source Connector Source  
AWS Lambda Sink Connector Sink  
Shell Sink/Source Connector Source, Sink  
IRC Source Connector Source  
RSS Source Connector Source  
기타 Datagen Source Connector Source MockData generator (for develop)

 


Connector 사용 예시 (with Confluent Platform)

Ex: MongoSinkConnector

각종 설정은 각 Connector 제작자의 document를 따른다
Mongo 커넥터의 경우 MongoDB 단체에서 제작 및 배포
옵션 Desc
Topic 관련 어느 토픽에서 데이터를 가져올 것인가
Common kafka에서 가져온 데이터 가져오는 방법
binary data → connector input
Transform transform connector 설정
Error Handling 에러 처리 관련
에러가 발생했을 때 핸들링하는 방법 설정
Errors 커넥터 자체의 에러에 대한 설정 (기동할 때 등)
Connection MongoDB connection
Overrides 기존 설정에 대해서 override
Namespace Sink 할 대상 database, collection 지정
Writes DB에 write 할 때의 설정
timeout, retry 정책 등
Post Processing key, value filtering, field rename
Id Strategies
생성할 record의 id 정책 (_id 관련)
Change Data Capture CDC 관련 핸들링

 


Conclusion

 - 비즈니스 로직이 없는 단순 ETL에 경우 활용 가능
 - 관리의 편의성이 목적인데, Confluent Platform 같은 솔루션이 없으면 편의성 크게 상실
 - Connector 설정이 생각보다 복잡 (Connector vendor에 따라서 속성이 너무 많음)
 - 현 상황에서는 ElasticSearch를 kafka에 붙이는 용도, 테스트 데이터 발행하는 용도로 사용 가능

 


REFERENCE

https://docs.confluent.io/platform/current/connect/index.html

https://docs.confluent.io/platform/7.4/overview.html

 

 

반응형

'개발 일지' 카테고리의 다른 글

Webclient 동작 원리 및 Configuration  (0) 2023.05.30
HttpClient (Netty) Configuration 정리  (0) 2023.05.25
Kafka Schema Registry  (0) 2023.05.23
Apache Avro 란  (2) 2023.05.22
브라우저와 Redirect (feat. XMLHttpRequest)  (0) 2023.05.19