Cloudflare, Zstandard와 Pingora로 캐시 저장 공간을 페타바이트 단위로 절약할 수 있는 방법

We could save petabytes of cache storage with Zstandard and Pingora

Cloudflare, Zstandard와 Pingora로 캐시 저장 공간을 페타바이트 단위로 절약할 수 있는 방법

Cloudflare는 인턴십 프로젝트로 Cache Transcoding 시스템을 프로토타이핑했습니다. 이 시스템은 Pingora 프록시에서 Zstandard(zstd) 압축을 사용하여 캐시에 저장되는 자산을 인코딩합니다. 초기 테스트에서 적격 자산의 평균 디스크 크기가 1/3로 줄었고, CPU 비용은 소폭 증가했지만 저장 공간과 데이터 센터 간 대역폭을 크게 절약할 수 있었습니다. 이 기사는 zstd의 선택 이유, 압축 대상 선정 기준, 캐시 계층 간 압축 전송 방식, 그리고 100만 건 이상의 요청을 통한 성능 테스트 결과를 자세히 설명합니다.

인코딩 비용은 자산이 캐시에 들어올 때 한 번만 지불되지만, 저장 공간 및 대역폭 절약 효과는 자산이 재사용될 때마다 계속해서 발생합니다.
  1. r3trohack3r

    주제와 약간 벗어나지만, 저도 몇 년 전에 비슷한 접근 방식으로 npm 레지스트리를 디스크에서 90% 이상 압축한 적이 있습니다. 패키지의 대부분 버전은 서로 비슷하기 때문에, 먼저 델타 인코딩을 적용한 다음 압축할 수 있습니다. 델타는 작고 원본 소스 파일과 함께 모아서 압축하면 잘 압축됩니다.

    또 다른 사용 사례로, 압축하기 전에 롤링 해시를 적용하여 파일을 결정적으로 분할했습니다. 그런 다음 청크를 압축하고 CID 파일 시스템에 저장했습니다. 그 결과, 대체로 유사한 파일들은 압축된 청크를 공유하게 됩니다.

    우리가 가진 컴퓨터를 훨씬 더 효율적으로 사용하기 위해 할 수 있는 일이 많지만, 엔지니어는 종종 하드웨어보다 비용이 더 듭니다. 최근 공급망 제약으로 그 계산이 바뀌고 있습니다!

  2. thinkindie

    클라이언트가 압축을 지원한다면, 원본이 압축되지 않은 파일을 제공하더라도 파일을 압축하여 제공하지 않는 이유는 무엇인가요?

  3. CodesInChaos

    이것이 범위 요청에 어떤 영향을 미치는지 혼란스럽습니다. 압축하지 않으면 캐시된 전체 파일의 관련 부분을 읽어 쉽게 충족할 수 있습니다. 그런데 지금은 어떻게 처리되나요? 기사에서는 "범위 요청은 변경되지 않습니다"라고 주장하지만, 캐시가 더 이상 압축되지 않은 데이터를 저장하지 않는다면 어떻게 가능한지 이해가 되지 않습니다.

이 날의 다른 글

2026-09-02