CloudflareがR2にLocal Uploads機能を追加しました。グローバルなアップロード性能を大幅に改善する仕組みです。クロスリージョンの書き込みレイテンシを最大75%削減できます。しかし、正しく設計しないと効果は限定的です。そこで今回は、R2 Local Uploadsの仕組みと設計ポイントを解説します。

Cloudflare R2 Local Uploadsとは

R2はCloudflareのオブジェクトストレージです。S3互換のAPIを持つため移行も容易です。しかし、従来はアップロード時にデータが遠くのリージョンに送られるケースがありました。つまり、地理的距離がレイテンシの原因でした。

Local Uploadsはこの問題を解決します。具体的には、ユーザーに最も近いCloudflareデータセンターにまずデータを書き込みます。さらに、その後バケットの所在リージョンに非同期で転送します。なぜなら、アップロード完了までの時間を短縮できるからです。特に、大容量ファイルのアップロードで効果が顕著です。

設計上のポイント

Local Uploadsを効果的に使うにはいくつかのポイントがあります。まず、マルチパートアップロードとの組み合わせが重要です。また、適切なチャンクサイズの設定も影響します。さらに、リトライロジックの実装も必要です。

具体的には、100MB以上のファイルではマルチパートアップロードが推奨されます。しかし、小さなファイルでは単一リクエストの方が効率的です。つまり、ファイルサイズに応じた処理の分岐が必要です。特に、並列アップロードで複数パートを同時に送信すると速度が向上します。なお、R2のマルチパートAPI はS3互換です。

レイテンシ改善の実測値

Cloudflareの公式データによるとレイテンシが大幅に改善されます。まず、クロスリージョンの書き込みが最大75%短縮されます。また、ダウンロードレイテンシも改善が見込まれます。しかし、実際の改善幅は利用環境によって異なります。

具体的には、アジアからUS東部のバケットへのアップロードで効果が大きいです。さらに、CDNキャッシュとの組み合わせも効果的です。つまり、頻繁にアクセスされるファイルはエッジに保持されます。実際、グローバルなアプリケーションでの利用に最適です。

S3からの移行を検討する判断基準

R2への移行を検討する際の判断基準があります。まず、データ転送コストが大きい場合はR2が有利です。なぜなら、R2はエグレス料金が無料だからです。また、Cloudflare Workersとの連携が必要な場合も適しています。

しかし、AWSの他サービスとの統合が重要な場合はS3が適切です。つまり、インフラ全体の構成を考慮した判断が必要です。特に、既存のS3依存が深い場合は段階的な移行が推奨されます。このように、コストと機能の両面から検討しましょう。

まとめ

Cloudflare R2 Local Uploadsはグローバルなアップロード性能を大幅に改善します。しかし、マルチパートアップロードとの組み合わせが効果を最大化します。特に、クロスリージョンのレイテンシ削減が大きなメリットです。また、エグレス料金無料のコスト優位性もR2の強みです。実際、グローバルアプリケーションでの活用を検討する価値は十分にあります。