본문 바로가기
Kafka

Kafka - Kafka Connect 개요

by sinabeuro 2024. 11. 26.
728x90

 

 

Kafka Connect 의 용어 정리와 확장성

  • AWS MSK Connect 와 Kafka Connect 는 기능적으로는 같은 것이며, 다만 AWS MSK Connect 는 AWS 에서 제공해주는 완전 관리 시스템이라는 점에서 차이가 있습니다.
  • AWS MSK Connect 가 Kafka Connect 기반으로 만들어진 것이라 Kafka Connect 에서 사용할 수 있는 플로그인은 전부 사용가능합니다.

Kafka Connect 용어 정리 - 커넥트? 커넥터? 소스 커넥터? 싱크 커넥터?

  • 커넥트는 서비스명이며, 커넥트에서 실제 기능을 담당하는 플로그인(또는 인스턴스)을 커넥터라고 합니다.
  • 커넥터로 생성된 인스턴스를 worker 라고 부르며, 커넥터 하나 당 worker 하나를 가지면 한 곳의 topic 에 데이터를 적재합니다.

 

 

Kafka Connect 분류 - Source Connector 와 Sink Connector

 

 

Kafka connect 서비스는 Source Connector 와 Sink Connector 로 분류할 수 있습니다.

위의 이미지 대표적인 Connector 플러그인이며 Source Connector 와 Sink Connector 로 분류해보았습니다.

Kafka Connect 가 지원하는 Connector 플러그인은 200 여개가 넘습니다.

때문에 확장성과 호환성이 좋으며, 플러그인을 잘 활용하면 다른 AWS 자원이나 외부 시스템과 쉽게 연동할 수 있습니다.(유료 플러그인이 종종 존재하니 유의해서 사용 바람...)

 

Source Connector 와 Sink Connector 의 역할은 정반대이며, 플러그인 마다 지원해주는 Connector(Source? or Sink?) 가 다릅니다.

  • Source Connector: DB 로부터 data 추출 → 데이터 직렬화 →transform → data converter → Kafka 브로커(topic)로 데이터 적재
  • Sink Connector: Kafka 브로커(topic) 로부터 data 추출 → data converter → transform → 데이터 역직렬화 → target source 에 데이터 적재

 

Kafka Source Connector 비교 - JDBC Source Connector vs Debezium Source Connector

 

JDBC Source Connector 와 Debezium Source Connector 둘 다 POC 를 진행했으며, 결과는 임시적으로 JDBC Source Connector 를 우선 도입하기로 결정했습니다.

JDBC Source Connector 로 운영을 하고 안정성이 어느 정도 확보되면 Debezium Source Connector 로 전환하기를 논의할 예정입니다.

 

JDBC Source Connector 와 Debezium Source Connector 특징

JDBC Source Connector 와 Debezium Source Connector 은 둘 다 CDC 기반으로 데이터베이스의 데이터를 추출하는 기능을 합니다.

하지만 둘의 동작 방식과 데이터 추출 방식에 큰 차이점이 있습니다.

 


JDBC Source ConnectorDebezium Source Connector
데이터 추출 방식 증분 쿼리 방식으로 데이터 추출
일정 시간 간격으로 특정 데이터의 추가, 수정된 정보를 식별하고 추출합니다.
logminer 로그 기반으로 데이터 추출
logminer 가 로그파일(Redo 로그)을 분석하여 데이터의 추가, 변경, 삭제 상태의 전후를 식별하고 추출합니다.
특징 Source DB의 데이터 삭제(Delete) 이벤트를 Kafka로 전송할 수 없음.
table 조회 방식이라서 Debezium Source Connector 보다 성능이 떨어짐.
사용 시 (오라클 기준으로) logminer 계정이 필요함.
logminer 계정에 TABLESPACE 에 접근하여 플래시 테이블이 만드는 권한이 필요함.
대표적인 logminer 계정 권한
FLASHBACK ANY TABLE (스냅샷 방식을 커넥터 적용 이후 데이터에만 적용하는 정책을 사용하면 부하와 스탭샷 데이터를 최소화할 수 있다.)
SELECT_CATALOG_ROLE
EXECUTE_CATALOG_ROLE
SELECT ANY TRANSACTION
LOCK ANY TABLE (필수 권한은 아닌 것 같습니다.)
CREATE TABLE
CREATE SEQUENCE
EXECUTE ON DBMS_LOGMNR
 
데이터 변경 시 로그 파일을 읽으므로 데이터 삭제 이벤트로 감지 가능.
로그 파일을 읽는 방식이라 table 에 직접 접근하지 않고, sql 방식으로 데이터 추출하는 것이 아니기 때문에 JDBC Source Connector 보다 성능이 좋고 cpu 사용량도 낮음.

 

 


데이터 포맷터 - Avro 포맷 + AWS Glue Schema Registry 도입

  • MSK Connect 와 같은 데이터 파이프라인을 도입할 때 근본적으로 가장 중요한 포인트는 데이터를 잘 주고 받는 것입니다.
  • B2B 물류 스쿼드에서는 Connector → 브로커(topic) →  컨슈머 등 모든 플로우에서 데이터를 원활하게 주고 받기 위해 Avro 데이터 포맷을 도입했습니다.
  • 데이터 베이스에서 추출한 데이터는 필드 마다 Meta 정보를 가지며, 메타 정보도 데이터 value 와 함께 저장되기 때문에 데이터 총 용량이 커집니다.
  • 이러한 문제를 해결하기 위해, 데이터 Meta 정보를 따로 선언하고 스키마 정보를 저장하기 위해 Schema Registry 를 활용했습니다. 
  • Avro 와 Schema Registry 를 활용하면 데이터 압축효과를 극대화할 수 있습니다.

Avro 데이터 포맷의 특징

  • 미리 정해 놓은 스키마 정보를 바탕으로 데이터를 저장하기 때문에, 데이터 주고 받는 것이 용이하다.
  • Json 포맷보다 데이터 용량이 적다.(compact 기능 지원)
  • 데이터 용량이 적어서 전송 속도가 빠르다.

 

 

728x90

'Kafka' 카테고리의 다른 글

Kafka - consumer 구현체 비교  (0) 2024.11.26
Kafka - Avro 포맷  (0) 2024.11.21
Kafka - Kafka Producing 성능 비교와 멱등성 조건  (0) 2024.06.02
MSK Cluster 간단 소개  (0) 2024.02.21
kafka - Datadog Metrics Sink Connector  (0) 2023.08.10

댓글