AI Briefing

카카오, 사내 TSDB 'TSCoke' 개발기 공개… ART와 LSS로 성능 최적화

·2022.08.09 00:00

핵심 내용

2022년 8월 기준 3억 개 이상의 Series를 저장하며 운영 중인 내부 TSDB의 개발 과정과 기술적 해결책을 소개했다.

1 / 14

자세히 보기

카카오 분산기술셀은 기존 모니터링 지표 관리의 복잡성을 해결하고 통합된 분석 환경을 제공하기 위해 사내 TSDB 서비스 TSCoke를 개발했습니다. 초기에는 남는 저장공간을 활용하기 위해 분산 Key-value 스토어 Redicoke 위에 지표를 저장하는 프로토타입을 구축했으나, 실제 운영 환경에서는 Out-of-memory와 Timestamp 역전 현상이라는 두 가지 심각한 문제에 직면했습니다.

메모리 효율성 극대화

Label 검색을 위한 Index가 방대해져 메모리 부족이 발생하자, **Adaptive Radix Tree(ART)**와 Dictionary coding을 도입했습니다. 문자열 Label을 정수(Integer)로 매핑하는 Dictionary coding을 적용해 ART의 Key 분포를 촘촘하게 만들었고, 이를 통해 메모리 효율성을 크게 높였습니다. 10만 건의 실데이터 테스트 결과, 기존 sync.Map 대비 메모리 효율과 성능이 모두 향상됨을 확인했습니다.

I/O 병목 현상 해결

Master-Master Replication 구조에서 발생하는 Timestamp 역전 현상은 압축 데이터 중간 삽입을 유발해 I/O 부하를 급증시켰습니다. 이를 해결하기 위해 Bolt나 Badger 같은 무거운 Embedded KV Store 대신, NAND I/O 특성에 맞춘 **Log-structured Segment Store(LSS)**를 자체 구현했습니다. LSS는 만료 시간이 비슷한 Slot을 Chunking하여 Append Only 방식으로 기록함으로써 IOPS를 수십 배 증가시키고 메모리 소모량을 대폭 줄였습니다.

서비스 현황

2022년 6월 9일 카카오의 Kubernetes 서비스인 DKOS 기반으로 베타 오픈한 TSCoke는, 2022년 8월 4일 기준 3억 개가 넘는 Series를 저장하며 활발히 운영되고 있습니다. 현재는 분산 쿼리 기능과 Label 추출 성능이 추가되었으며, 향후 Prometheus의 Alarm, Recording rule 및 외부 스토리지 연동 기능 등을 개발할 예정입니다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.