Kafka Connect

김석·2023년 6월 18일
0

Kafka

목록 보기
9/11

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)

profile
handsome

0개의 댓글