카프카 커넥트

카프카 커넥트는 카프카에서 공식적으로 제공하는 컴포넌트 중 하나로 카프카에서 데이터 파이프라인을 반복적으로 만들어내고 개발하고 운영할 때 효과적

카프카 커넥트는 커넥트와 커넥터로 이루어져 있음

커넥트는 커넥터를 동작하도록 실행해주는 프로세스

파이프라인으로 동작하는 커넥터를 동작하기 위해서는 커넥트를 실행시켜야 함

커넥터

커넥터는 실질적으로 데이터를 처리하는 코드가 담긴 jar 패키지로, 일련의 템플릿과 같은 특정 동작을 하는 코드 뭉치라고 보면 됨

커넥터 안에는 파이프라인에 필요한 여러가지 동작들과 설정, 그리고 실행하는 메서드들이 포함되어 있음

토픽에서 특정 DB에 데이터를 저장하고 싶다면 커넥터에 insert 메서드를 구현하고 커넥터를 실행하는 방식으로 운영하야 함

커넥터는 크게 싱크 커넥터(Sink Connector), 소스 커넥터(Source Connector) 두 가지로 이루어져 있음

싱크 커넥터는 특정 토픽에 있는 데이터를 Oracle, mySQL, ES 등의 특정 저장소에 저장을 하는 역할을 함(컨슈머와 같은 역할)

소스 커넥터는 DB로부터 데이터를 가져와서 토픽에 넣는 역할을 함(프로듀서와 같은 역할)

예를들어 토픽의 데이터를 오라클의 특정 테이블에 넣고 싶다면 싱크 커넥터를 만들어야 하며, 보통 싱크 커넥터 글자 앞에 어떤 데이터베이스에 넣을 것인지 선언하는데, 오라클의 테이블에 데이터를 저장한다면 OracleSinkConnector 라고 지칭

커넥트

커넥트는 크게 단일 실행모드 커넥트, 분산 모드 커넥트 두 가지로 이루어져 있음

단일 모드 커넥트는 간단한 데이터 파이프라인을 구성하거나 개발용으로 주로 사용

실질적으로 상용에 활용하고 싶다면 분산 모드 커넥트로 구성을 해서 운영을 함

분산모드 커넥트는 이름에서 알 수 있다시피 여러개의 프로세스를 한 개의 클러스터로 묶어서 운영하는 방식

Untitled

이렇게 클러스터로 묶은 커넥트는 일부 커넥트에 장애가 발생하더라도 파이프라인을 자연스럽게 failover를 해서 나머지 실행중인 커넥트에서 데이터를 지속적으로 처리할 수 있도록 도와줌

커넥터와 커넥트의 관계와 동작방식

커넥트를 실행할 때 커넥터 jar패키지가 어디에 위치하는지 config파일에 위치를 지정해야 함

Untitled

그리고 나서 커넥트를 실행하게 되면 이 jar파일의 커넥터들을 함께 모아서 커넥터를 실행할 수 있도록 준비상태에 돌입

실행중인 커넥트에서 커넥터를 실행하려면 REST API를 통해서 커넥터를 실행할 수 있음

커넥터를 활용하면 파이프라인을 만들 때 추가로 개발을 하고 배포를 하는 과정 없이 REST API를 통해서 커넥터를 통한 파이프라인들이 분산해서 생김

예를들어 오라클DB에 데이터를 저장하는 OracleSinkConnecror가 있다고 가정했을 때, 특정 토픽에 있는 데이터를 특정 테이블로 보낼 때는 JSON으로 설정을 만듦

Untitled

그리고 이 body를 REST API를 통해서 커넥트에 파이프라인을 만들어달라고 명령을 내리고, 커넥트에 파이프라인이 생성됨

만약 동일한 토픽에 대해서 또 다른 테이블에 데이터를 넣고 싶다면 똑같이 설정 JSON을 만들되, 타겟 되는 토픽과 싱크하는 테이블 이름을 지정하면 됨

Untitled

REST API를 통해서 다시 요청을 하면 파이프라인 한 개가 더 생성이 됨

이렇게 카프카 커넥트를 이용하면 간단하게 반복적으로 파이프라인을 생성할 수 있음


참고 강의 : https://www.inflearn.com/course/아파치-카프카-입문/dashboard