PaaS/MQ

kafka 커넥트

armyost 2022. 7. 8. 18:12
728x90

kafka 커넥트는 아파치 kafka의 오픈소스 프로젝트 중 하나로 데이터 베이스 같은 외부 시스템과 kafka를 손쉽게 연결하기 위한 프레임워크 입니다. kafka 사용자들은 kafka 커넥트 프레임워크를 이용해 대용량의 데이터를 kafka 안팎으로 손수비게 이동시킬 수 있으며, 코드를 작성하지 않고도 간단히 사용할 수 있습니다. 물론 프로듀서와 컨슈머를 직접 개발해 원하는 동작을 실행하고 처리할 수 있지만, 때로는 애플리케이션을 개발하고 운영하는데 들어가는 리소스나 비용이 부담되는 경우가 있습니다. 이런 경우 kafka 커넥트를 이용하면 좀더 효율적이고 빠르게 클라이언트를 구성하고 적용할 수 있습니다. 

  • 데이터 중심 파이프라인 : 커넥트를 이용해 kafka로 데이터를 보내거나, kafka로부터 데이터를 가져옵니다. 
  • 유연성과 확장성 : 커넥트는 테스트 및 일회성 작업을 위한 단독 모드로 실행할 수 있고, 대규모 운영 환경을 위한 분산모드로 실행할 수 있습니다. 
  • 재사용성과 기능 확장 : 커넥트는 이미 만들어진 기존 커넥터들을 활용할 수도 있고 운영 환경에서의 요구사항에 맞춰 빠르게 확장이 가능합니다. 커넥트의 이러한 손쉬운 확장 기능을 통해 운영 오버헤드를 낮출 수 있습니다. 
  • 장애 및 복구 : kafka 커넥트를 분산 모드로 실행하면 워커 노드의 장애 상황에도 유연하게 대응 가능하므로 고가용성이 보장됩니다. 

 

kafka 커넥트의 내부 동작

  • 워커 : kafka 커넥트 프로세스가 실행되는 서버 또는 인스턴스
  • 커넥터 : 직접 데이터를 복사하지 않고 데이터를 어디에서 어디로 복사해야 하는지의 작업을 정의하고 관리하는 역할
  • 태스크 : 커넥터가 정의한 작업을 직접 수행하는 역할

분산 배치된 각 태스크들은 메시지들을 소스에서 kafka로 혹은 kafka에서 싱크로 이동시킵니다. 이때 커넥트는 파티셔닝 개념을 적용해 데이터들을 하위 집합으로 나눕니다. kafka에서도 병렬 처리를 위해 토픽을 파티션으로 나누는데 커넥트도 이와 동일합니다. 다만 커넥트에서 나눈 파티션과 토픽의 파티션은 용어만 같을 뿐 서로 아무 관계가 없습니다. 여기에서 나뉜 파티션들에는 오프셋과 같이 순차적으로 레코드들이 정렬됩니다. 

 

커넥터에서 복사왜야 하는 데이터들은 레코드들의 순서에 맞추어 파티셔닝 되어야 하며, 스트림 영역으로 표시된 부분이 바로 데이터가 파티셔닝된 것을 나타냅니다. 스트림에서 나뉜 각 파티션들은 태스크에 할당되고 태스크들은 실제로 데이터를 이동하는 동작을 처리합니다. 각 파티션들에는 오프셋도 함께 포함되어 있어서 커넥트의 장애나 실패가 발생할 경우 지정된 위치부터 데이터를 이동할 수 있습니다. 커넥터에 따라 오프셋의 기준이 달라질 수 잇는데, 일반적인 파일을 전송하는 커넥터일 경우에는 오프셋이 파일의 위치를 나타내며 데이터베이스의 경우에는 타임스탬프나 시퀀스ID를 나타냅니다. 

'PaaS > MQ' 카테고리의 다른 글

kafka 클러스터 만들기  (0) 2022.07.13
엔터프라이즈용 kafka의 환경구성  (0) 2022.07.08
kafka 스키마 레지스트리  (0) 2022.07.08
kafka systemctl 등록  (0) 2022.07.08
kafka와 보안 - 권한(ACL)  (0) 2022.07.08