Kafka Connect Architecture
코드너리 | 2022. 11. 30
데이터 인프라
사용된 기술:
요약:
모든 인프라는 EKS에서 동작하고 있으며, 안정적인 운영 및 리소스 최소화를 목표로 아래와 같이 작업했습니다.
- 모든 인프라는 Helm 차트 이용
- Confluent에서는 이미 kafka eco system에 대한 helm을 제공하고 있으며, 이를 마이리얼트립 요구 사항에 맞춰서 아래와 같이 수정해 사용하고 있습니다.에서 동작하고 있으며, 안정적인 운영 및 리소스 최소화를 목표로 작업했습니다.
- kowl을 이용한 클러스터 관리
- Confluent helm에서 제공하는 ui 툴인 Confluent Control Center은 굉장히 많은 기능을 제공하는 훌륭한 툴이지만 ,사용상의 제약이 있어 오픈소스로 제공되는 kowl을 이용해서 커넥터 클러스터를 관리하고 있습니다.
- Schema registry를 이용한 스키마 관리
- 마이리얼트립 CDC의 1차 목표는 서비스 DB와 분석용 DB를 완전히 분리하는 것이기 때문에, 실 서비스 DB의 데이터를 bigquery로 전송하는 것을 최우선으로 하고 있습니다. 이러한 이기종 간 데이터 전송 시 스키마 관리가 정확하게 되지 않으면 소스의 뒷단까지 에러가 전파될 수 있기 때문에 schema registry를 이용해 잘못된 데이터가 들어오지 않도록 관리합니다.
- 커넥트 클러스터 모니터링
- Kafka Connect 특성상 커넥터에서 N개의 task를 생성해 데이터를 전송하게 됩니다. 하지만 각 task의 실패가 커넥터로 전파되지 않기 때문에, 커넥터 상태는 정상이지만, 하위 task의 상태가 failed인 경우가 종종 발생하게 됩니다. 이러한 이슈 때문에 에러 발생을 파악하기 위해서는 커넥터와 task의 상태를 모두 모니터링해야 합니다.
- Fargate를 이용한 serverless 운영
- AWS 에서 제공해주는 EKS 환경은 EC2와 동일하게 직접 서버를 관리해주어야 합니다. (AMI, 노드 수, ..) 이러한 단순 작업 또한 운영 리소스가 들어가기 때문에 fargate를 이용해 CDC 플랫폼을 배포 및 운영 하고 있습니다.