ネットサービス

CloudflareがCDNキャッシュを平均3分の1に圧縮、数PB級の容量を生み出す「Cache Transcoding」を試作


CloudflareがCDNのキャッシュに保存するデータを圧縮し、既存のストレージを実質的に大容量化する仕組み「Cache Transcoding」を試作していることを明らかにしました。初期テストでは圧縮対象となるデータの保存サイズが平均で元の約3分の1となり、CPU負荷を数%程度増やすだけで数PB(ペタバイト)規模の実効キャッシュ容量を生み出せる可能性があるとのことです。

How we could save petabytes of cache storage with Zstandard and Pingora | Cloudflare Blog
https://blog.cloudflare.com/cache-transcoding/


CDN(Content Delivery Network)はウェブサイトのHTMLやJavaScriptなどを利用者に近いサーバーへ一時保存し、元データを置いているオリジンサーバーへのアクセスを減らす仕組みです。利用者は近くのキャッシュからデータを取得できるため通信時間を短縮できますが、Cloudflareほど大規模なネットワークになるとキャッシュを保存するストレージ容量も大きな問題になります。CloudflareによるとRAMやHDDの価格は直近1年間で大幅に上昇しており、導入済みのハードウェアをより効率的に使う必要性が高まっているとのこと。

従来のCloudflareのキャッシュはオリジンサーバーから送られてきたデータの圧縮方式を基本的に引き継いで保存します。オリジンサーバーが圧縮していないHTMLなどを返した場合、未圧縮のデータがディスクに保存され、Cloudflareのデータセンター間を移動する際にも未圧縮のまま転送されます。保存領域とデータセンター間の通信量には削減の余地が残っていたというわけです。


そこでCloudflareのインターンとして開発に参加したアーシ・パテル氏が試作したのがCache Transcodingです。Cache TranscodingはCloudflareがHTTP通信やキャッシュ処理に利用しているRust製プロキシ基盤「Pingora」に圧縮処理を追加する仕組み。圧縮対象となるデータでキャッシュミスが発生すると、オリジンサーバーから受け取ったデータをZstandard(zstd)で圧縮してからディスクへ保存します。

Zstandardはデータを復元した際に元のデータと完全に同じ内容へ戻せる可逆圧縮アルゴリズムです。圧縮率と処理速度のバランスを重視して設計されており、Cache Transcodingの試作版では圧縮レベル3を採用。Cloudflareは過去のテストでZstandardについて、Brotliとほぼ同じファイルサイズを保ちながら42%高速に圧縮でき、gzipと同程度の速度ではファイルサイズを11.3%小さくできたと報告しています。

圧縮されたデータはディスク上でも圧縮状態が維持されます。Cloudflareの「Tiered Cache」は複数のキャッシュサーバーを階層化してオリジンサーバーへのアクセスを減らす仕組みですが、Cache Transcodingでは上位キャッシュから下位キャッシュへデータを送る際にもZstandard形式のまま転送します。利用者へデータを返す最後の段階で展開するため、ディスク容量だけでなくCloudflareのデータセンター間を流れる通信量も削減できるというわけ。圧縮処理はデータが初めてキャッシュへ入る際に1回だけ行われ、その後はキャッシュが再利用されるたびに容量削減の効果が続きます。


Cloudflareのテストでは圧縮対象となるデータのサイズが約2.8分の1となり、保存に必要な容量はおおむね3分の1まで減少しました。圧縮レベル3を使用したモデルでは追加のCPU負荷も数%程度に収まったとのこと。ディスクへ保存するデータ量が減れば同じサーバーにより多くのコンテンツを保持でき、容量不足によって有用なキャッシュが追い出される頻度も下げられます。Cloudflare全体の規模では数PB分の実効キャッシュ容量につながる可能性があるとしています。

ただし、テストでは10台のキャッシュサーバーへ100万件を超えるリクエストが送られましたが、使用された約195KiBと約272KiBの2つのデータは意図的に圧縮しやすい内容でした。今後はより幅広いコンテンツやファイルサイズを使った検証に加え、より高いZstandard圧縮レベルや圧縮済みのオリジンレスポンス、部分取得を行うRangeリクエストなどについても調査する予定だとCloudflareは述べています。

・関連記事
Cloudflareが1.1.1.1のDNSキャッシュを数十バイト単位で削り込んで100TBのメモリを節約 - GIGAZINE

Cloudflareがコードの最適化を行うことで毎秒3500万回動作する処理のCPU使用率を1%削減できたと発表 - GIGAZINE

Cloudflareが大型AIモデルの高速推論サービスを展開するための効率化手法を公開 - GIGAZINE

月間500万PV&転送量80TBのサイトをたった4万円で維持する方法 - GIGAZINE

Googleが高品質なJPEG画像の圧縮率を35%向上させる新たなコーディングライブラリ「Jpegli」を発表 - GIGAZINE

in ネットサービス, Posted by log1d_ts

You can read the machine translated English article Cloudflare prototypes 'Cache Transcoding….