コンテンツへスキップ
HexaTransfer
ブログへ戻る
クラウドとストレージ

エッジコンピューティングとファイルストレージで遅延を削減

データをユーザーの近くに分散配置し、エッジコンピューティングを活用してファイルストレージと転送の遅延を削減する方法を解説します。

エッジコンピューティングはユーザーから30〜50ミリ秒以内のデータ保存を実現し、単一のオリジンから数百ミリ秒離れている状況に比べてファイルの遅延を削減します。Cloudflare R2(300以上の都市)・AWS CloudFrontとLambda@Edge・Fastly Compute@Edge・Akamai NetStorageなどのプロバイダーは、地域のPoP(存在点)にオブジェクトをレプリケートするため、10MBのPDFがバージニアから900ミリ秒かかっていたところを、パリから150ミリ秒でロードできます。メディア・CAD・医療画像の場合、高速化は測定可能で、ユーザー体験が質的に変わります。

ミリ秒の実際の内訳

エッジインフラに投資する前に、往復時間の予算を測定してください。オリジンからのファイルダウンロードには、DNS(5〜30ms)・TCPハンドシェイク(1 RTT)・TLS 1.3ハンドシェイク(1 RTT)・初回バイト時間が含まれます。シドニーからus-east-1のリンクでは1 RTTが160msになり、最初のチャンクがサーバーを出る前に480msが消費されます。エッジキャッシングはPoPがISP内部またはその隣に設置されているため、これらのRTTを10〜30msに圧縮します。

WebPageTestとChrome DevToolsのNetworkウォーターフォールは、どのフェーズが遅いかを正確に分解します。DNSが支配的ならCDNは役立ちません。TTFBが支配的ならエッジキャッシングが効果的です。アーキテクチャに1円も費やす前に3大陸から測定してください。

オブジェクトレプリケーションのトポロジー

エッジファイルストレージには3つの種類があります。プルスルーキャッシュ・プッシュレプリケーション・アクティブ-アクティブです。プルスルー(CloudFront、Fastly)は最初のリクエスト時にフェッチし、TTL期間キャッシュし、スペースが必要になると退避させます。プッシュ(S3クロスリージョンレプリケーション、スケジュールジョブ付きR2)は即座に名前付きリージョンにオブジェクトをミラーリングします。アクティブ-アクティブ(Cloudflare Durable ObjectsまたはFoundationDBバックのシステム経由)はすべてのリージョンをプライマリとして扱います。

頻繁にアクセスされるコンテンツが繰り返し消費される動画ライブラリでは、プルスルーが最も安価です。ミスに1回払い、後続のヒットの99%はキャッシュから返します。最初のミス遅延を許容できない規制対応のワークフローでは、名前付きリージョンへのプッシュレプリケーションが重要です。ベンダースライドではなく、アクセスパターンに基づいて選択してください。

エッジでの整合性トレードオフ

エッジレプリケーションはCAPの定理と正面から向き合うことを強制します。東京のユーザーが50MBの.docxのバージョン2をアップロードした場合、サンパウロのキャッシュはいつそれを確認できるでしょうか?S3は現在グローバルで強い書き込み後読み取り整合性を提供していますが、その上のCDNキャッシュは自身のTTLに従います。オブジェクトをCache-Control: s-maxage=3600とマークすれば、1時間古い読み取りが発生します。

回避策にはバージョン付きURL(/files/report-v2.docx?h=a3f9)、機密文書へのCache-Control: private, no-store、アップロードパイプラインでトリガーするパージAPIがあります。Cloudflareのキャッシュパージはグローバルで約5秒で完了し、Fastlyは150msと主張しています。規制対象コンテンツには、TTLが時間内に切れることを期待するのではなく、明示的な無効化のための設計が必要です。

エッジネイティブなファイルプロトコル

HTTP/2とHTTP/3(QUIC、RFC 9000)はエッジ配信の基礎要件です。QUICの0-RTT再開は再訪問時のTLSハンドシェイクを省略し、モバイルネットワークで200msの節約になります。Rangeリクエスト(Range: bytes=0-1048575)により、クライアントは末尾をダウンロードせずに大きなファイルをストリーミングでき、再開可能なアップロードや動画のスクラブに役立ちます。

アップロードには、tus.ioの再開可能アップロードプロトコルとS3マルチパート(最小パートサイズ5MB、最大10,000パーツ)をエッジ取り込みと組み合わせると効果的です。CloudflareのR2はS3互換APIによるマルチパートアップロードをサポートしているため、5GBの動画を最寄りのPoPに並行チャンクでアップロードし、サーバー側で結合できます。

分散インフラでの機密ファイルの扱い

ファイルをユーザーに近づけることは、より多くの管轄区域に押し込むことを意味します。DICOMスタディのエッジCDNを使用している病院チェーンは、PHIをHIPAAビジネスアソシエイト契約外のリージョンに意図せずレプリケートしたり、EU患者のファイルがオハイオのキャッシュに入ればGDPR第44条の移転規則を引き起こす可能性があります。

リージョンピン留め(CloudflareのRegional Services、AWS CloudFrontの地理的制限)・クライアントサイド暗号化・レプリケーションを防ぐオブジェクトレベルのタグで軽減してください。どこにもキャッシュするには機密性が高すぎるファイルのアドホック共有では、エンドツーエンド暗号化転送がCDNアクセラレーションより優れています。HexaTransferはアップロード前にブラウザでAES-256-GCMを使って暗号化するため、オリジンでさえ平文を見ることがありません。キャッシュには利用可能なものが何もないため、キャッシュ汚染のリスクもありません。

エッジでのコールド・ウォーム・ホット層

すべてのファイルにエッジのリソースが必要なわけではありません。3層モデルを実装してください。ホット(今週アクセスあり、地域のPoPにピン留め)・ウォーム(今月アクセスあり、R2またはS3 One Zoneのような地域オリジン)・コールド(アーカイブ、0.00099ドル/GB/月のGlacier Deep Archive)。ライフサイクルポリシーでプロモーションとデモーションを自動化してください。

実用的なルール:1リージョンで1日10回以上アクセスされる100KB未満のオブジェクトはエッジに置くべきです。週次でアクセスされる100MB超のオブジェクトは短いCDN TTL付きの地域オリジンストレージに置くべきです。動画オンデマンドライブラリはこの分割で98%のエッジヒット率に達することが多く、直接Egressコストの削減につながります。

ユーザーが実際に感じるものを測定する

シンセティックモニタリング(Pingdom、Catchpoint、Checkly)は既知の場所からのメジアンパフォーマンスを教えてくれます。navigator.connectionとPerformance Timing APIによるReal User Monitoringは、フラつくホテルのWi-Fiや地下鉄の5Gで実際の顧客が体験することを教えてくれます。

ファイルが多いページにはLargest Contentful Paint(LCP)、APIレスポンスにはTime to First Byte(TTFB)、ファイルダウンロード完了のカスタムマークを追跡してください。75パーセンタイルが2.5秒LCPまたは800ms TTFBを超えたらアラートを発してください。これらはCore Web Vitalsの閾値であり、Googleはランキングシグナルとして使用しています。エッジキャッシングがこれらの数値を改善しないなら、仕事をしていません。

エッジストレージのコストモデリング

エッジは無料ではありません。Cloudflare R2は0.015ドル/GB保存でEgressゼロ。S3は0.023ドル/GB保存で0.09ドル/GBのEgress。CloudFrontは最初の10TB配信に0.085ドル/GBを追加します。月500TBのダウンロードを95%のキャッシュヒット率で提供するサイトでは、CDNの請求が支配的になります。ヒットとミスの両方のケースをモデリングしてください。

利用可能な場合は予約容量(CloudFront Savings Bundle、Fastlyのコミット利用割引)を確保し、キャッシュヒット率が共有作業セットの恩恵を受けるようにドメインを統合してください。上位100 URLを四半期ごとに監査してください。1つの暴走エンドポイント(10,000回ダウンロードされた2GBのインストーラー)が誰も気づく前に請求を3倍にする可能性があります。

hexatransfer.com で今すぐ試せます — 無料、アカウント不要、最大10GB。

エンドツーエンド暗号化で大容量ファイルを安全に送信

エンドツーエンド暗号化で最大10GBのファイルを無料で転送。アカウント不要。ファイルはアップロード前にブラウザで暗号化されるため、他の誰にも読まれません。

ファイルを送信