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 기능 지원)
- 데이터 용량이 적어서 전송 속도가 빠르다.
'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 |
댓글