Cloudflare SRE팀이 초당 45M HTTP 요청을 처리하는 ELK 스택 로그 시스템을 Clickhouse로 교체한 썰
Cloudflare 플랫폼은 초당 45,000,000개 이상의 HTTP 요청을 처리한다 🤯
모든 HTTP 요청마다 하나씩 뽑히는 로그를 처리하는 대규모 서비스의 로그 분석 시스템은 어떻게 운영될까?
Cloudflare는 오래동안 Elasticsearch-Logstash-Kibana (ELK) 스택을 이용해 로그 분석 시스템을 구축해왔다. 하지만 엄청 큰 Elasticsearch 클러스터를 관리하면서 다음과 같은 문제들을 겪었다고 하는데:
→ 로그 데이터처럼 고정된 스키마를 지정하기 어려운 비정형 데이터를 Elasticsearch에 저장할 때 클러스터의 메모리 사용량과 쿼리 성능 중 하나는 피해를 입게 된다. Cloudflare이 요구한 스케일에서 이 문제는 심각했다.
→ Elasticsearch는 멀티테넌시 (multi-tenancy)를 지원하지 않아서, 로깅 시스템을 악용하는 한 사용자가 모든 사용자의 경험을 해칠 수 있었다. 이를 방지하기 위해 상당한 노력이 필요했다.
→ 대형 Elasticsearch 클러스터를 운영하는 것은 (당연히!) 매우 힘들다. 특히 불안정한 클러스터를 복구하는 작업은 정말 복잡하다. JVM 위에서 실행되는 Elasticsearch는 가비지 컬렉션 튜닝이 필수적이다 (이런 튜닝은 사실상 흑마법과 같다... 🪄)
2022년, Cloudflare의 SRE 팀은 이런 문제들로 인해 운영하기 어려운 Elasticsearch를 컬럼 지향 DBMS인 Clickhouse로 교체하기로 결정했다. Clickhouse로 전환된 새로운 파이프라인은:
→ 특별한 튜닝 없이도 훌륭한 성능을 보여주었고
→ 운영은 Clickhouse의 스케일링 모델 덕분에 훨씬 간단해졌고
→ 새로운 데이터 모델과 압축 도입으로 인해 디스크 사용량이 90% 감소했다!
Clickhouse를 글을 자주 보인다고 느꼈는데, 이미 Cloudflare같은 큰 기업에서 성공적으로 도입한 기술인지는 몰랐다. 꼭 한번 써볼 기회가 있으면 싶다!

Log analytics using ClickHouse
When a request at Cloudflare throws an error, information gets logged in our requests_error pipeline. The error logs are used to help troubleshoot customer-specific or network-wide issues
https://blog.cloudflare.com/log-analytics-using-clickhouse/
댓글
로그인 후 댓글을 남길 수 있습니다.
아직 댓글이 없습니다.