
카프카 커넥트

- 카프카 오픈소스에 포함된 툴 중 하나로 데이터 파이프라인 생성 시 반복 작업을 줄이고 효율적인 전송을 이루기 위한 애플리케이션이다.
- 커넥트는 특정한 작업 형태를 템플릿으로 만들어놓은 커넥터(connector)를 실행함으로써 반복 작업을 줄일 수 있다.
- 카프카 커넥트는 한번에 모니터링 할 수 있다. (소스커넥터 + 싱크 커넥터)
- Connectors : Task를 관리하여 데이터 스트리밍을 조정하는 Plugin(jar), Java class/Instance
- Tasks : Kafka와 다른 시스템간의 데이터를 전송하는 방법의 구현체 (Java class/Instance)
- Workers : Connector 및 Task를 실행하는 실행중인 프로세스 (Process)
- Converters : Connect와 데이터를 보내거나 받는 시스템 간에 데이터를 변환하는 데 사용되는 Components(Java Class)
- Transforms : Connector에 의해 생성되거나 Connector로 전송되는 각 메시지를 변경하는 간단한 Components(Java Class)
- Dead Letter Queue : 전송 오류 메시지를 따로 넣어 처리
커넥트 내부 구조

- 커넥트에 커넥터 생성 명령을 내리면 커넥트는 내부에 커넥터와 태스크를 생성함
- 커넥터는 태스크들을 관리하는 설정이 담긴 오케스트레이션 스레드에서 돌아간다.
- 태스크는 커넥터에 종속되는 개념으로 실질적인 데이터 처리를 담당한다.
- 데이터 처리를 정상적으로 하는지 확인하기 위해서는 각 태스크의 상태를 확인해야 한다.
소스 커넥터
- 외부 데이터를 카프카 토픽으로 전송하는 프로듀서 역할을 함
- 대표적으로 MySQL, S3, MongoDB 등과 같은 저장소가 싱크 애플리케이션, 소스애플리케이션이라 볼 수 있다.
- 카프카로 보낼때 JDBC 커넥터를 사용하여 파이프라인을 생성할 수 있다.
싱크 커넥터
- 토픽의 데이터를 컨슘하여 외부로 보내는 컨슈머 역할을 함
- 대표적으로 MySQL, S3, MongoDB 등과 같은 저장소가 싱크 애플리케이션, 소스애플리케이션이라 볼 수 있다.
- MySQL에 저장할 때 JDBC 커넥터를 사용하여 파이프라인을 생성할 수 있다.
커넥터 플러그인

- 오픈소스 커넥터 또는 직적 개발한 커넥터를 jar 파일 형식으로 플러그인을 만들어 실행할 수 있다.
오픈소스 커넥터
- 직접 커넥터를 만들 필요가 없으며 커넥터 jar 파일을 다운로드하여 사용할 수 있다는 장점이 있다.
- HDFS 커넥터, AWS S3 커넥터, JDBC 커넥터, 엘라스틱 서치 커넥터등 100개가 넘는 커넥터들이 이미 공개되어 있다.
- 커넥터의 종류를 컨플루언트 허브에서 검색할 수 있다.
분산 모드 커넥트

Rest API 인터페이스
- 현재 실행중인 커넥트의 커넥터 플러그인 종류, 태스크 상태, 커넥터 상태 등을 조회할 수 있다.
- 커넥트는 8083 포트로 호출할 수 있으며, HTTP 메서드 기반 API를 제공한다.
