수수께끼연구소

Cloudflare가 RAM 100TB를 줄인 방법: 해시 개수보다 중요한 운영 설계

수수께끼 고양이 2026. 9. 20. 15:05
728x90
반응형
반응형

Cloudflare는 2026년 9월 18일 Pingora Backend Router의 메모리 사용량을 줄인 과정을 공개했습니다. 핵심은 무작정 장비를 늘리거나 코드를 전면 재작성한 것이 아니라, 일관성 해시가 서버 부하를 나누는 방식을 수학적으로 다시 계산하고 자료구조와 배포 순서를 함께 바꾼 것입니다.

이 사례는 대규모 시스템에서 작은 메모리 최적화가 어떻게 운영 비용과 안정성으로 이어지는지 보여줍니다.

3줄 핵심 요약
  • Cloudflare는 Pingora 기반 서비스의 일관성 해시 구조를 수학과 Rust 최적화로 다시 설계했습니다.
  • 해시 저장 형식을 압축하고 노드당 해시 수를 90% 줄여 전 세계 메모리 100TB를 회수했다고 설명했습니다.
  • 캐시 경로 변경은 지역별 단계 배포와 즉시 롤백 구조로 진행해 원본 서버 트래픽 급증을 피했습니다.

문제는 ‘해시 링이 많아진 것’이었다

Pingora Backend Router는 URL 기반 캐시 요청을 특정 서버로 안정적으로 보내기 위해 일관성 해시를 사용합니다. 기능 조합과 서버별 저장공간 가중치를 지원하는 과정에서 여러 해시 링이 필요해졌고, Cloudflare는 일부 환경에서 관련 구조가 약 6GB까지 메모리를 사용했다고 설명합니다.

서버 하나당 해시를 많이 두면 부하 분산 오차가 줄지만, 기능 조합이 늘어나면 저장해야 할 점과 링의 수가 함께 커지는 문제가 생깁니다.

저장 형식과 수학을 함께 손봤다

Cloudflare는 해시와 인덱스를 각각 큰 구조체로 저장하는 대신 6바이트 원시 배열에 담아 자료구조 메모리를 25% 줄였습니다. 이어 서버당 해시 수를 계속 늘리는 방식의 효율을 계산해, 160개 해시를 기준으로 이미 충분히 작은 오차를 얻고 있다는 점을 확인했습니다.

32비트 해시 충돌 가능성까지 고려한 결과 노드당 해시 수를 약 90% 줄여도 눈에 띄는 오류 증가가 없다고 판단했습니다.

캐시가 깨지지 않도록 두 버전을 함께 운영했다

해시 링을 한 번에 바꾸면 거의 모든 캐시 요청의 목적지가 달라져 원본 서버로 트래픽이 몰릴 수 있습니다. 그래서 기존 링과 새 링을 일정 기간 동시에 메모리에 유지하고, 요청 해시별로 어느 링을 사용할지 선택하는 마이그레이션 프레임워크를 적용했습니다.

작은 검증 지역에서 시작해 데이터센터 그룹을 점점 넓혔고, 문제가 생기면 재배포 없이 기존 링으로 되돌릴 수 있게 했습니다.

대규모 최적화에서 배울 5가지

첫째, 직관보다 부하 분포와 오차를 수식·측정으로 확인합니다. 둘째, 자료구조의 바이트 단위 크기를 점검합니다.

셋째, 성능 개선과 캐시 무효화 같은 운영 위험을 함께 계산합니다. 넷째, 트래픽 비율과 지역 범위를 분리해 단계적으로 배포합니다.

다섯째, 메모리·시작 시간·연결 오류·원본 트래픽을 동시에 관찰해 최적화가 실제 사용자 경험을 해치지 않는지 확인합니다.

사용자와 업계에 미치는 영향

대규모 서비스를 운영하지 않더라도 메모리 최적화는 단순한 코드 골프가 아니라 비용·안정성·배포 전략의 문제라는 점을 확인할 수 있습니다. 팀은 자료구조를 줄이기 전에 분포 품질을 측정하고, 캐시나 라우팅처럼 상태가 남는 시스템은 롤백 가능한 점진 배포를 설계해야 합니다.

확인할 점

100TB라는 회수량과 해시 수 90% 감소는 Cloudflare의 Pingora Backend Router와 전 세계 운영 환경에 대한 자체 결과입니다. 다른 시스템의 서버 수, 해시 폭, 캐시 정책, 트래픽 패턴에 그대로 적용할 수 없습니다.

저장 형식을 바꾸면 호환성과 디버깅 방식도 달라질 수 있으므로, 실제 적용 전에는 부하 테스트와 장애 복구 훈련이 필요합니다.

출처

함께 읽을 글

728x90

 

728x90
반응형