클라우드 컴퓨팅 및 데이터 센터

Cloudflare, Zstandard와 Pingora를 사용해 캐시 콘텐츠를 압축하여 실질 용량을 확대하는 방안 테스트

Cloudflare는 Zstandard를 사용해 압축 가능한 텍스트 파일을 캐시 내부에서 압축하는 프로토타입을 테스트했으며, 테스트에서 적격 자산의 크기를 약 3분의 1로 줄였습니다. 그 대가로 제한적인 추가 CPU 사용량이 발생하지만, 페타바이트 단위의 스토리지 용량을 절약하고 데이터센터 간 데이터 전송을 줄일 수 있을 것으로 기대됩니다.

2026-09-01
4 분 읽기
5 조회수
فريق تحرير certi.news
Cloudflare, Zstandard와 Pingora를 사용해 캐시 콘텐츠를 압축하여 실질 용량을 확대하는 방안 테스트

Cloudflare는 새로운 하드웨어를 추가하지 않고 캐시 네트워크의 실질 용량을 늘리는 방법을 테스트하고 있습니다. Pingora 기반 인프라 내부에서 Zstandard 알고리즘을 사용해 일부 텍스트 자산을 압축하는 방식입니다. 회사가 Cache Transcoding이라고 명명한 이 프로토타입은 디스크에서 데이터가 차지하는 공간과 캐시 계층 및 데이터센터 간에 전송되는 데이터의 양을 줄이는 것을 목표로 합니다.

적격 응답이 캐시에 들어오면, 디스크에 기록하기 전에 해당 데이터가 zstd를 사용한 압축 표현으로 변환됩니다. 자산은 캐시에 저장되어 있는 동안과 Tiered Cache를 통해 이동하는 동안 이 상태로 유지되며, 클라이언트에 전송되기 전에 압축이 해제됩니다. 따라서 파일 자체의 내용은 변경되지 않습니다. Zstandard는 무손실 압축 알고리즘이므로 압축을 해제하면 모든 바이트가 원래 상태로 돌아갑니다.

제한적인 처리 비용으로 얻는 큰 결과

초기 테스트에서 적격 자산의 디스크상 크기는 평균적으로 원래 크기의 약 3분의 1로 감소했습니다. 통제된 테스트 그룹에서 압축 비율은 2.834배였습니다. 인코딩 비용은 바이트당 4.31나노초, 즉 약 232MB/s였으며 캐시를 채울 때 한 번만 발생했습니다. 반면 압축 해제 비용은 바이트당 1.56나노초, 즉 약 641MB/s였으며 제공할 때마다 발생했습니다.

이 실험에서는 실행 속도와 결과물 크기 사이의 균형점으로 Zstandard의 레벨 3을 사용했습니다. Cloudflare의 모델에 따르면 회사가 테스트한 트래픽 및 재사용 가정에서는 CPU 사용량 증가가 몇 퍼센트 수준에 머물렀습니다. 또한 데이터 크기가 줄어들면 각 서버가 더 많은 항목을 저장할 수 있고, 불필요하게 큰 공간을 차지하는 콘텐츠 때문에 유용한 콘텐츠가 캐시에서 제거될 가능성도 줄어듭니다.

Cloudflare는 왜 모든 것을 압축하지 않는가?

이 메커니즘은 모든 유형의 콘텐츠를 대상으로 하지 않습니다. 이미지, 동영상, 글꼴은 일반적으로 이미 압축되어 있으며, 트래픽 샘플에서 요청의 21.4%를 차지했지만 전체 바이트의 63.3%를 차지했습니다. 이러한 데이터를 다시 압축하면 실질적인 절약 없이 CPU만 사용할 수 있습니다.

반면 HTML, JSON, CSS, JavaScript는 요청의 약 67.3%, 바이트의 22.3%를 차지했습니다. 이 텍스트 응답의 약 71%는 Content-Encoding 없이 원본에서 도착했기 때문에 압축 대상이 될 수 있었습니다. 프로토타입은 Content-Encoding을 지정하지 않고, 압축 가능한 텍스트 콘텐츠 유형을 보유하며, 길이가 알려져 있고 4KiB 이상인 200 OK 응답으로 제한됩니다.

부분 범위 요청, 원본에서 이미 압축한 응답, 범위 요청, 길이를 알 수 없는 본문, 바이너리 콘텐츠는 변경하지 않습니다. Cloudflare는 4KiB 기준이 많은 소규모 요청을 제외하지만, 그 외 조건을 충족했던 바이트 중 제외되는 양은 약 1%에 불과하다는 사실을 확인했습니다.

캐시 계층 간 메커니즘은 어떻게 작동하는가?

캐시에서 완전한 미스가 발생하면 상위 계층은 원본에서 압축되지 않은 데이터를 가져온 뒤 한 번 압축하고 zstd 형식으로 저장합니다. 이 압축 형식은 하위 계층으로 전달되며, 하위 계층은 이를 보관하고 클라이언트로 향하는 요청 경로에서만 압축을 해제합니다. 항목이 상위 계층에만 존재하는 경우에는 원본으로 다시 이동하지 않고 하위 계층으로 전달할 수 있습니다.

항목이 하위 계층에 존재하면 네트워크 전송이나 새로운 인코딩이 필요하지 않습니다. 디스크에서 zstd 데이터를 읽고 압축을 해제한 다음 응답 경로로 전달합니다. 시스템은 메타데이터에 항목이 압축 형식으로 저장되어 있음을 기록하여, 캐시 계층 간에 이동할 때 다시 압축하지 않도록 합니다.

certi.news의 분석: 이 실험이 실제로 입증하는 것은 무엇인가?

이 실험은 캐시를 채우는 과정만 개선하는 것보다 캐시 계층 자체에서 데이터 크기를 줄이는 것이 더 큰 누적 효과를 낼 수 있음을 보여줍니다. 압축 비용은 항목이 들어올 때 발생하지만, 저장 공간과 대역폭 절감 효과는 항목이 재사용될 때마다 반복됩니다. 이는 특히 대규모 콘텐츠 배포 네트워크 운영자에게 중요합니다. 로컬 용량은 보관할 수 있는 콘텐츠의 양과 연결되고, 계층 간 데이터 전송은 내부 네트워크 사용량과 연결되기 때문입니다.

그러나 결과가 2.8배라는 비율이 인터넷의 모든 콘텐츠나 Cloudflare의 전체 인프라를 대표한다는 의미는 아닙니다. 성능 테스트는 10개의 캐시 서버에서 100만 건이 넘는 요청을 대상으로 했지만, 약 195KiB와 272KiB 크기의 두 가지 실험용 항목을 사용했으며, 두 항목 모두 압축 가능성이 뚜렷했습니다. 회사는 이 비율이 전체 서버 집합을 대표한다고 판단하기 전에 더 다양한 콘텐츠 유형과 크기를 대상으로 한 테스트가 필요하다고 인정합니다.

Cloudflare는 더 높은 zstd 레벨을 테스트하고, 콘텐츠와 크기의 범위를 확대하며, 적격 조건을 조정하고, 범위 요청과 사전 압축된 응답을 연구할 계획입니다. 따라서 현재 자료에서 Cache Transcoding은 특정 조건에서 성공한 프로토타입으로 남아 있으며, 모든 Cloudflare 트래픽에 최종적으로 적용한다고 발표한 것은 아닙니다.

뉴스 출처
Cloudflare Blog
원문 보기 ↗
ف
작성자

فريق تحرير certi.news

같은 카테고리

추천 기사

모든 뉴스 보기