1. Kafka Connect란
- kafka와 다른 시스템과의 데이터 연계에 사용되며, kafka에 데이터를 넣거나, kafka에서 데이터를 추출하는 과정을 간단히 하기 위해 만들어짐.
- producer와 consumer 양쪽 모두 구성할 수 있음.
- Kafka Connect와 다른 시스템을 연결하는 부분을 Connector라는 플러그인으로 구현하는 방식, 'Kafka Connect 본체 + 플러그인' 구성으로 동작함.
- kafka에 데이터를 넣는 producer 쪽 커넥터를 source라고 하고, kafka에서 데이터를 추출하는 consumer 쪽 커넥터를 sink라고 함.
- 많은 플러그인이 공개되어 있어서 연결할 곳에 맞는 커넥터가 있으면 직접 코딩하지 않아도 데이터 입출력을 실행할 수 있음.
- Kafka Connect는 데이터를 kafka에 입출력하기 위해 확장 가능한 아키텍처를 가지고 있으며, 여러 서버로 클러스터를 구성할 수 있음.
- Kafka Connect 클러스터에서 소스나 싱크의 플러그인으로 데이터를 입출력할 때는 커넥터 인스턴스에서 논리적인 작업을 실행함.
- Standalone: Kafka Connect가 1개만 움직이는 모드, 개발 환경에서 사용하거나 1개의 서버만 연계할 때 사용.
- Distributed: Kafka Connect가 여러 개의 서버에서 동작하는 모드, 상업용 환경에서 여러 개의 서버에서 동작할 때 사용.
2. Connect 사용 비교
MySQL의 데이터를 Kafka topic에 저장하는 프로세스를 가정.
2-1. Connect를 사용하지 않고 진행
- consumer는 MySQL 서버에 연결하고, 쿼리를 날려 검색한 데이터를 기반으로 kafka 메시지를 생성하는 로직을 구현해야 함.
- 이 경우 consumer는 연결 관리, 오류 처리 및 데이터 전처리 등의 과정을 수동적으로 처리해야 함.
2-2. Connect를 사용하여 진행
- Kafka Connect는 MySQL 데이터베이스용으로 설계된, 사전 구축된 connector를 제공.
- Connector는 MySQL과 Kafka 간의 브리지 역할을 함.
- 데이터 검색, 메시지 생성 및 오류 처리를 위한 코드를 작성할 필요가 없음.
- Connector는 MySQL 데이터베이스의 변경 사항을 자동으로 캡처하도록 구성되어, Kafka와 실시간 데이터 동기화를 보장할 수 있음.
3. Connect와 Connector의 차이
- Connect는 프레임워크이지만, 실행되는 프로세스 및 서버라고 생각할 수 있음.
- 분산 환경에서 실행될 수 있음. 즉 Connect가 여러 서버를 둔 클러스터 환경으로 운용될 수 있음.
- Connector는 Connect에서 돌아가는 인스턴스라고 생각할 수 있음.
- 하나의 Connect에서 여러 Connector가 돌아갈 수 있음.
- Connect에서 제공하는 REST API를 사용해서 쉽게 connect를 운영할 수 있음(connector 생성, connector 리스트 확인 등).
- Connect는 대규모 운영 환경을 위한 분산(클러스터링) 환경을 제공하기 때문에, 워커 노드 장애 상황에서도 메타 데이터를 백업함으로써 대응 가능하며, 고가용성을 보장함.
- producer 역할을 하는 connector를 Source라고 하고, consumer 역할을 하는 connector를 sink라고 함.
출처
https://minkwon4.tistory.com/319
https://www.youtube.com/watch?v=UURmOj6Eaoo
사사키 도루, 『실전 아파치 카프카』, 정인식, 한빛미디어(2020)