CDN Optimization for Faster ファイル転送s
Leverage CDN networks to accelerate ファイル転送s globally. Edge caching, geographic routing, and performance tuning strategies.
CDNはファイル転送を高速化する。受信者の近くにあるPoPからバイトを提供することで、遠くのオリジンからではなく。ニューヨークのバケットからシンガポールのクライアントへの5GBのダウンロードなら、S3に直接ヒットする場合(RTT約180ms、持続スループット30〜80Mbps)とシンガポールのCloudflareエッジにヒットする場合(RTT 5ms、400Mbps以上)の差は、ダウンロード時間を10分から2分以下に短縮する。難しいのは、キャッシング、ルーティング、オリジンシールド戦略を設計して転送が実際にエッジPoPにヒットするようにすることだ。NISCのガイドラインが推奨するレジリエンスのある転送インフラの観点からも、CDNの多重冗長性は重要な意味を持つ。
転送ワークロードに適したCDNプロバイダー
Cloudflareは120カ国以上に330以上のPoPを持ち、寛大な無料帯域幅とBackblaze B2やWasabiからのエグレスを無償化するBandwidth Allianceパートナーシップがある。CloudFront(AWS)は600以上のPoPとOrigin Access IdentityによるS3とのタイトな統合がある。FastlyはPoP数は少ないが高パフォーマンスで、ストリーミングやニュースで人気だ。Bunny.netはメディアとファイル配信に注力し積極的な価格設定(北米と欧州で$0.005/GB)がある。Akamaiはエンタープライズで優勢でSureRouteなどの機能がある。ファイル転送サービスでは、CloudflareとCloudFrontがユースケースの90%をカバーする。
キャッシュキーと実際にキャッシュされるもの
CDNはレスポンスを完全なURL(多くの場合Varyヘッダーも)でキャッシュする。ファイルダウンロードでは、キャッシュキーがクエリ文字列の署名を無視するか、パスベースの署名を使う場合に限り、署名付きURLへのGETリクエストがキャッシュ可能になる。CloudflareのCache RulesとCloudFrontのキャッシュキーポリシーにより、キーに含めるクエリパラメータを指定できる。署名付きS3 URLについては、時間に依存しない識別子やキーでオブジェクトをキャッシュすることで、同じファイルを多くの受信者がエッジから提供される。POSTやPATCHのアップロードはキャッシュしない——GETのダウンロードのみだ。
短命な転送のキャッシュ生存期間
転送ファイルはしばしば7日後に期限切れになる。CDNのTTLを適切に設定する:エッジに24時間のCache-Control max-age=86400、ミス時にオリジンと再検証し、転送が早期に期限切れになったときはAPIでパージする。Cloudflareの「Cache Everything」ページルールと「Edge Cache TTL: 1ヶ月」「Browser Cache TTL: 30分」はエッジの永続性とブラウザキャッシュを分離する。受信者が複数のデバイスで大きなファイルをストリーミングする場合、エッジキャッシングは帯域幅を大幅に節約する:最初のダウンロードはオリジンから取得し、次の10回はエッジから1msのレイテンシで提供される。
オリジンシールドと階層キャッシング
多くのPoPが同時にミスすると、オリジンに殺到する。オリジンシールド(Cloudflare Argo Tiered Cache、CloudFront Origin Shield)は中間キャッシュ層を指定する:エッジのPoPはリージョナル層にミスし、リージョナル層は最大1回だけオリジンにミスする。バイラルな転送リンクで10,000人のダウンローダーがいる場合、オリジンは300回(エッジPoP 1つあたり1回)ではなく1回のリクエストしか受けない。これによりオリジンのエグレスコストが95%以上削減できる。幅広い配布の転送にはシールドを有効にし、プライベートな1対1の転送ではキャッシュヒット率がほぼゼロの可能性が高いためスキップする。
再開可能なダウンロードのための範囲リクエスト
HTTPの範囲リクエスト(RFC 7233)により、クライアントはファイル全体の代わりにバイト範囲をダウンロードできる。これはネットワーク中断後の再開可能なダウンロードに不可欠だ。ブラウザとダウンロードマネージャーは特定のチャンクを取得するためにRange: bytes=100000000-199999999を発行する。CDNはキャッシュされたコンテンツの範囲リクエストを処理し、ミス時はオリジンから範囲を取得する必要がある。すべての主要CDNがこれをサポートしているが、curlテストで確認する:curl -H "Range: bytes=0-1023" https://cdn.example.com/file.binは最初の1KBを持つ206 Partial Contentを返すべきだ。範囲サポートがなければ、5GBのファイルでモバイルのダウンロードが途切れるたびにゼロから再開しなければならなくなる。
TLS終端と証明書管理
CDNはエッジでTLSを終端し、オリジンへの別のTLS接続を開く。つまりクライアントは(Cloudflareが無料で提供するSNI共有証明書など)自分のドメインの証明書にヒットし、オリジンが何をサポートしているかに関わらずTLS 1.3とモダンな暗号スイートが使われる。Let's EncryptやZeroSSLによるACME自動化で証明書の更新を処理する。高スループットのファイル転送サービスでは、CDNがモダンな輻輳制御(BBR、CUBIC)を使い、HTTP/2とHTTP/3を有効にし、リピートクライアントに0-RTTをサポートしているか確認する。これらの設定は1つの大きなダウンロードよりも多くの小さなファイルで積み重なって効いてくるが、すべてのユーザーにわたって積み上がる。
地理的ルーティングとエニーキャスト
CDNはエニーキャストBGPを使ってクライアントを最寄りのPoPにルーティングする:すべてのPoPから1つのIPアドレスを広告し、BGPがトポロジー的に最も近いものを選択する。これがうまく機能すると驚くほど効果的で、失敗すると不可解だ——ブラジルのクライアントが米国のPoPに送られたり、トルコのクライアントがフランクフルトに送られたりする。curlとPoP固有のヘッダー(CloudflareのCF-Ray、CloudFrontのX-Amz-Cf-Pop)でルーティングを監視する。特定のリージョンでルーティングが一貫して誤作動する場合はCDNサポートに連絡して再調整を依頼する。
帯域幅コストとエグレスの罠
CDNのエグレスコストは大きく異なる。CloudFrontは最初の10TBで北米向け約$0.085/GBを請求し、量に応じて下がる。Cloudflareはギガバイトではなくプランティアで課金するため、大規模では予測可能だ。Bunny.netはリージョン別に$0.005〜$0.06/GBで価格設定している。Backblaze B2プラスCloudflareはB2からCloudflareへのエグレスが$0で、CloudflareからエンドユーザーへはCloudflareのレート。月100TBを転送するファイル転送サービスでは、CloudFrontとCloudflare Proの違いがトラフィックミックスによって$8,500対$200プラス超過分になることがある。選択する前に帯域幅をモデル化する。
期限切れ転送のパージ戦略
転送が期限切れになるか送信者がアクセスを取り消した場合、古いダウンロードを防ぐためすぐにCDNキャッシュをパージする。CloudflareのPurge APIは単一URLパージ(無料、即時)とタグベースのパージ(エンタープライズのみ)をサポートする。CloudFrontのCreateInvalidationは月1,000パス無料の後1パスあたり$0.005が請求される。期限切れのチャーンが高いサービスでは、URL単位の無効化よりも転送IDによるタグベースのパージが安い。代替手段として、短命な署名付きトークンをURLに含め、期限切れのトークンがオリジンで検証に失敗してCDNを通じて403を返すようにする——これにより無効化コールなしで実質的に「パージ」できる。
HexaTransferのアプローチ
HexaTransferはクライアントサイドのAES-256-GCM暗号化をCDN背後のS3互換ストレージと組み合わせて使用しているため、ダウンロードはグローバルにエッジPoPから高速に提供され、鍵はクライアントサイドに留まる。安価なオリジン(Backblaze B2またはCloudflare R2)、幅広いPoP範囲を持つCDN、範囲リクエストのサポート、積極的なキャッシングを組み合わせることで、世界中の受信者にとってコストとレイテンシの両方を削減する。
https://hexatransfer.com — 無料、アカウント不要、最大10GB。
エンドツーエンド暗号化で大容量ファイルを安全に送信
エンドツーエンド暗号化で最大10GBのファイルを無料で転送。アカウント不要。ファイルはアップロード前にブラウザで暗号化されるため、他の誰にも読まれません。
ファイルを送信