Kafka-S3 실시간 데이터 파이프라인 구축 노하우 공개

by DD
6개월 전
조회수 27

MariaDB Trigger 기반 로그 테이블의 한계를 극복하고자 KafkaS3 기반의 실시간 파이프라인을 구축

S3 Sink Connector 대신, Parquet 변환 및 세부 제어를 위해 직접 컨슈머 애플리케이션 개발

At-least-once 전략과 오프셋 메타데이터 관리를 통해 데이터 누락 없는 안정적인 운영 환경 구축

컨슈머 직접 개발의 기술적 배경

기존 S3 Sink ConnectorParquet 포맷 지원에 제약이 있었고, 세부적인 비즈니스 로직 반영이 어려웠다. 따라서 Kafka Consumer를 직접 개발하여 Parquet 변환S3 저장을 제어했다. 구체적으로, 메시지 누락 방지를 위해 At-least-once 전략을 채택했다.

데이터 안정성을 위한 설계

At-least-once 전략을 통해 데이터 누락을 방지하고, 오프셋 커밋을 수동으로 제어했다. 리밸런스 발생 시 on_revoke 로직을 추가하여 중복 처리를 방지했다. 따라서 데이터 무결성을 확보하고, 서비스 안정성을 높였다. S3 업로드 실패 시 재시도 정책을 적용했다.

운영 모니터링 및 향후 계획

컨슈머의 안정적인 운영을 위해 로그, 오프셋 메타데이터, 인프라 리소스를 모니터링했다. Slack 알림을 통해 오류를 즉시 감지하고, Airflow DAG를 활용하여 데이터 적재 상태를 확인했다. Apache Iceberg 도입을 검토하여 데이터 일관성을 강화하고, 스키마 변경에 유연하게 대응할 예정이다.

Kafka에서 S3로 실시간 데이터 수집 파이프라인 설계와 구축기