
핵심요약
쏘카 데이터엔지니어링팀은 기존 로그 파이프라인의 비효율적인 분류 작업, 낮은 데이터 신선도, 스키마 관리 부재 문제를 해결하기 위해 데이터 컨트랙트 기반의 실시간 스트리밍 아키텍처를 도입하여 데이터 처리 효율성과 신뢰성을 크게 향상시켰습니다.
쏘카 로그 파이프라인 개선: 데이터 컨트랙트와 실시간 처리 도입
기존 로그 파이프라인 문제점 분석
- 비효율적인 분류 작업: 하나의 로그 파일에 여러 유형의 데이터가 혼재되어 S3 적재 후 Airflow 배치로 분류, GCS로 재적재하는 과정에서 중복 데이터 및 단일 장애점 발생.
- 데이터 신선도 부족: Airflow 배치 스케줄링 방식으로는 즉각적인 비즈니스 전략 수립을 위한 실시간 로그 데이터 수요를 충족하지 못함.
- 스키마 관리 부재: 데이터 생산자와 소비자 간 Schema Registry 부재로 스키마 변경 이력 관리 체계가 미흡하여 수동 BigQuery 스키마 업데이트 및 유지보수 오버헤드가 컸음.
새로운 아키텍처 및 해결 방안
- 기술 스택 전환: 기존 KDS를 **MSK (Managed Streaming for Apache Kafka)**로 전환하고, Protobuf를 표준 스키마 포맷으로 채택하여 데이터 일관성을 확보.
- 스키마 통합 관리: Buf를 사용하여 Protobuf 스키마를 중앙에서 관리하고, Kafka Schema Registry를 통해 스키마 호환성 검증 및 변경 관리 프로세스를 강화.
- 실시간 분류 및 적재: 파이썬 기반 커스텀 Kafka Consumer를 개발하여 MSK에서 데이터를 실시간으로 읽어와 비즈니스 로직에 따라 분류, 가공 후 GCS에 파티셔닝하여 직접 적재.
- 준실시간 데이터 활용: GCS에 적재된 데이터를 BigQuery External Table로 연동하고, 일 배치 작업을 통해 BigQuery 내부 테이블로 통합하여 사용자에게 View Table을 통한 준실시간 데이터 접근 제공.
구현 과정 및 기술적 고려사항
- 커스텀 Consumer 개발: Firehose의 MSK 소스 사용 시 Dynamic Partitioning 불가 및 Kafka-Connect의 복잡한 Protobuf oneof 파싱 문제로 인해 유연한 처리를 위한 파이썬
confluent-kafka기반 Consumer 자체 개발. - Protobuf 메시지 검증 한계:
confluent-kafka파이썬 **ProtobufDeserializer**가 Schema Registry와의 Writer/Reader 스키마 교차 검증을 지원하지 않아 데이터 정합성 확인에 제약이 있으며, 이는 향후 개선 과제로 논의 중. - 성과 및 향후 계획: 데이터 신선도를 1~2시간에서 약 3분으로 단축하고 안정성을 향상시켰으며, Schema Registry 검증 로직 보완과 모니터링 시스템 강화를 통해 파이프라인 신뢰성을 지속적으로 높일 계획이다.