카카오 Observability 도입 여정: OpenTelemetry와 ClickHouse 기반의 새로운 표준
- 카카오톡의 복잡한 서비스와 팀별 상이한 모니터링 시스템으로 인해 장애 발생 시 전체 상황 파악 및 신속한 문제 해결에 어려움을 겪어 옵저버빌리티 도입이 필수적이었습니다. 🚨
- 카카오 옵저버빌리티 팀은 모든 텔레메트리 데이터를 OpenTelemetry 파이프라인으로 수집하고 ClickHouse에 통합 저장하여, 문제 해결 속도 향상 및 리소스 절감을 목표로 하는 표준화된 플랫폼을 구축합니다. 🎯
- OpenTelemetry는 텔레메트리 데이터 처리의 표준화된 방식, 광범위한 업계 채택, 활발한 커뮤니티 지원으로 유연하고 확장 가능한 데이터 수집 기반을 제공하여 선택되었습니다. 🌐
- ClickHouse는 대용량 텔레메트리 데이터 저장을 위한 칼럼 기반 분산 OLAP 데이터베이스로, 뛰어난 압축률 (ES 대비 85% 절감), 빠른 쿼리 속도, 높은 확장성, S3/Iceberg 연동 가능성 등이 주요 선택 요인입니다. ⚡
- K8S 클러스터에 OpenTelemetry 에이전트를 자동 설치하고, 게이트웨이를 통해 K8S, PM, VM, DB, 네트워크 장비 등 모든 인프라의 텔레메트리 데이터를 ClickHouse로 통합 저장하는 아키텍처를 구현했습니다. 🏗️
- 기존 시스템 대비 K8S 생성 시 OpenTelemetry 자동 설치, 분리된 매트릭 및 로그 스토리지를 ClickHouse로 통합, K8S별 Grafana를 서비스별 통합 Grafana로 전환하여 전체 가시성을 확보했습니다. ✨
- OpenTelemetry 운영 과정에서 빠른 스펙 변화로 인한 버전 관리, Kafka 연동 문제, 플러그인 호환성, ClickHouse 성능을 위한 배치 사이즈 최적화 등 다양한 기술적 난관을 해결했습니다. 🛠️
- ClickHouse 칼럼 타입 선택 시, JSON 타입의 성능 향상에도 불구하고 비정형 JSON 프로퍼티로 인한 성능 저하와 도구 지원 미흡으로 최종적으로 Map 칼럼 타입을 선택하는 딜레마를 겪었습니다. ⚖️
- OpenTelemetry 익스포터의 고정된 스키마 문제를 해결하기 위해 ClickHouse의
Null 엔진과 Materialized View 기능을 활용하여 유연하게 스키마를 변경하고 관리할 수 있는 구조를 마련했습니다. 🧩
- 데이터 안정성 및 보안 강화를 위해 ClickHouse
MergeTree 엔진의 TooManyParts 에러 방지를 위한 배치 사이즈 최적화와, 단일 테이블에 여러 서비스 로그를 저장하는 환경에서 롤 및 정책 기반의 권한 체계를 구축했습니다. 🛡️
- 향후 전사 적용 확대, 오픈소스 커뮤니티 기여, Iceberg를 통한 장기 분석 강화, 잘 정리된 텔레메트리 데이터를 기반으로 AI 활용 (예: RCA 에이전트 구축)을 통해 문제 해결 역량을 고도화할 계획입니다. 🔭