
Cloudflareのコンテナプラットフォーム:AIと分散システムを支える超効率化された最新技術
クラウドコンピューティングの進化は、AIや分散システムの発展とともに急速に加速しています。その最前線に立つのがCloudflareです。従来のクラウドプロバイダーと一線を画すアプローチで、Cloudflareは独自のコンテナプラットフォームを開発し、世界中のネットワークを最大限に活用します。本記事では、Cloudflareがどのようにしてこの新しいプラットフォームを構築し、AIやリモートブラウザーアイソレーションなどの複雑なワークロードを最適化しているのか、その仕組みを深掘りしていきます。
(1) Cloudflareの新しいコンテナプラットフォームの概要
Cloudflareの新しいコンテナプラットフォームとは?
Cloudflareは、従来の「Cloudflare Workers」を基盤に新しいコンテナプラットフォームを開発しました。このプラットフォームは、Cloudflareの広大なネットワーク上でコンテナを実行するためのものです。既に、AI推論エンジンである「Workers AI」や「Workers Builds」、リモートブラウザアイソレーション、ブラウザレンダリングAPIといった様々な用途で実際に使用されています。
このプラットフォームは、これまでの「Cloudflare Workers」が提供していた「アイソレート」技術に依存しない新しい方法で、コンテナベースのワークロードを支えることを可能にしました。これにより、開発者はインフラストラクチャの管理を意識することなく、Cloudflareのネットワーク全体に分散してコンテナを実行できるようになります。
Cloudflare Workersの進化
Cloudflare Workersは2024年で7周年を迎えました。当初、このサービスは多くのユーザーにとって未知の「アイソレート」技術を使ったシンプルなファンクション・アズ・ア・サービス(FaaS)として始まりました。アイソレート技術はコンテナとは異なり、軽量で高速な処理を可能にする一方で、ある程度の制約がありました。しかし、クラウドコンピューティングの未来として期待され、徐々に多くの機能が追加されてきました。
例えば、次のような機能が追加されています:
2020年: Cronトリガー
2021年: Durable ObjectsやRustでのWorkers記述、サービスバインディング
2022年: キュー、Email Workers、Durable Objectsアラーム
2023年: TCPソケットAPI、Hyperdrive、スマートプレイスメント、Workers AI
2024年: Python Workers、JavaScriptネイティブRPC、Node.js対応、Durable ObjectsでのSQLiteサポート
これらの機能拡張は、開発者がより複雑な分散システムを簡単に構築できるようにするためのもので、コンテナプラットフォームの登場はその次なるステップです。
プラットフォームの基本コンセプト
Cloudflareのコンテナプラットフォームの大きな特徴は、開発者が直接コンテナを操作する必要がないことです。これにより、分散システムを構築する際に煩雑なインフラ管理を排除し、スケーリングやロードバランシング、スケジューリングといった技術的な複雑さをCloudflare側が処理します。この考え方は、クラウドが本来提供すべき価値を再考し、開発者がインフラに煩わされることなくアプリケーション開発に集中できるように設計されています。
(2) グローバルスケジューリングの重要性
グローバルスケジューリングとは?
Cloudflareの新しいコンテナプラットフォームにおける「グローバルスケジューリング」は、Cloudflareのネットワーク全体を活用して、コンテナを世界中の適切な場所に自動的に配置する仕組みです。従来のクラウドプロバイダーでは、開発者が特定のリージョンやデータセンターを指定してリソースをプロビジョニングする「リージョナルスケジューリング」が一般的でした。しかし、Cloudflareのネットワークは330を超える都市、120以上の国に分散しており、従来のリージョナルスケジューリングの方法では限界がありました。
グローバルスケジューリングの考え方は、開発者が特定の場所を意識せずに、ネットワーク全体で最も効率的にコンテナを配置し、実行できるようにするというものです。これにより、Cloudflareはユーザーが要求する計算リソースを世界中のどこにでも動的に配置でき、パフォーマンスを最大化しながら開発者の手間を最小限に抑えることが可能になります。
従来のクラウドプロバイダーとの違い
従来のクラウドサービスでは、開発者はリソースを利用するために、特定のリージョンやデータセンターを指定する必要がありました。例えば、マルチリージョンでの運用を行う場合、開発者は複雑な負荷分散、オートスケーリング、データ配置の管理などを手動で設定する必要があります。これは特に大規模なシステムや、高可用性と低遅延が要求されるシステムにおいて、非常に煩雑な作業となり、専任のエンジニアチームが必要となることも多いです。
Cloudflareのグローバルスケジューリングでは、これらの負担をすべてCloudflareが肩代わりします。開発者は、どの地域でコンテナを実行するかを指定する必要がなく、Cloudflareのネットワークが自動的に最適な場所を選び、負荷分散やスケーリングも行います。これにより、世界中に分散したユーザーに対して、常に最も近い場所でコンテナが実行され、高速かつ低遅延のサービスが提供できるのです。
グローバルスケジューリングの利点
パフォーマンスの向上
Cloudflareは、世界中に分散された330以上の拠点を活用して、インターネット接続された95%の人口に50ms以内でアクセスできるネットワークを構築しています。このネットワークにより、従来のクラウドプロバイダーが1つか2つの都市にしか存在しない地域でも、複数の拠点からリソースを提供できます。これにより、ユーザーに近い場所でコンテナを実行することで、遅延を大幅に削減します。自動スケーリングと負荷分散
グローバルスケジューリングによって、Cloudflareのネットワーク全体でワークロードが最適に配置されます。特定の地域でトラフィックが急増した場合でも、Cloudflareは他の拠点にワークロードを動的に移動させ、リソースを効率的に利用します。これにより、開発者が自らリソースを手動でスケールアップしたり、複雑な負荷分散設定を行ったりする必要がなくなります。データロケーションとコンプライアンス
さらに、Cloudflareのネットワークは地域ごとのデータ保護規制にも対応しています。開発者は特定のデータがどの地域に保存されるかを気にすることなく、Cloudflareのプラットフォームを使用してコンプライアンスを満たすことができます。これは、データのロケーションが重要な業界、例えば金融や医療において特に有益です。
Cloudflare独自のメリット
Cloudflareは、ネットワーク全体に新しい拠点や容量を追加するたびに、ユーザーにその恩恵を即座に提供できる仕組みを持っています。リージョナルスケジューリングでは、開発者が新しい拠点を手動で設定しなければならないため、即時的な展開は困難でした。しかし、Cloudflareのグローバルスケジューリングでは、開発者が追加の操作をすることなく、新しい拠点やリソースを活用することができます。
(3) GPUを活用したWorkers AIとそのスケジューリング
Workers AIとGPUの利用
2023年後半にリリースされた「Workers AI」は、Cloudflareのネットワーク全体でGPUを活用したAI推論を高速かつ手軽に、そして低コストで提供するサービスです。このサービスは、開発者がCloudflareのネットワーク上でAIモデルを実行し、推論を行うためのもので、特に大規模なAIモデルに対する需要に応える形で設計されています。
Workers AIの背後にある技術は、AI推論を可能にする強力なGPUをどのように効率的に活用するかという点にフォーカスしています。GPUは特にディープラーニングの推論や大規模な言語モデル(LLM)において重要な役割を果たします。例えば、LLaMA 3.1のようなモデルをCloudflareのネットワークで動かす場合、そのメモリ要件や起動速度を最適化する必要があります。
AI推論のためのGPUメモリの最適化
AIモデルの推論には大量のGPUメモリが必要ですが、モデルによって必要なメモリ量が異なるため、効率的なリソース管理が重要です。たとえば、小規模なモデルは比較的少ないメモリで動作しますが、大規模なモデル、例えばLLaMA 3.1 8Bインストラクションモデルでは少なくとも5GB以上のメモリを必要とします。このメモリ管理の複雑さに対応するため、Cloudflareは以下の方法を採用しています。
グローバルスケジューリングでの最適化
Cloudflareのグローバルスケジューラーは、各拠点におけるGPUメモリの利用状況を把握しており、必要に応じてAIモデルを最適な場所に配置します。これにより、大規模なモデルはGPUメモリが豊富なマシンに優先的に割り当てられ、他のマシンには小規模なモデルが配置されるようになります。ローカルスケジューラーとの連携
各Cloudflareの拠点にはローカルスケジューラーがあり、ローカル内でのGPUメモリやリソースの割り当てを管理します。これにより、AIモデルが各拠点で効率的に実行されるようになり、全体としてのリソース使用率を最大化します。
コンテナランタイムとGPUサポート
AI推論に必要なコンテナランタイムとGPUドライバの対応状況も課題の1つです。Cloudflareは、さまざまなコンテナランタイムに対応できる柔軟なプラットフォームを構築しました。現在、Cloudflareは以下のコンテナランタイムをサポートしています。
gVisor
Googleが開発したgVisorは、GPUサポートを持つメモリセーフなランタイムで、アプリケーションのシステムコールをカーネルに変換せずに直接処理することで、効率的に動作します。gVisorの一部であるnvproxyが、GPUへのI/O操作を管理しているため、GPUに対応するAIモデルの推論を安全に実行することができます。Firecracker microVM
軽量な仮想マシンであるFirecrackerは、GPUドライバがまだ完全にサポートされていませんが、他のランタイムと組み合わせることで、異なるワークロードに対応する柔軟性を持っています。
Cloudflareの目標は、開発者がこれらのランタイムの選択に悩むことなく、最も効率的な環境でコンテナを実行できるようにすることです。そのため、柔軟なランタイムスケジューリングを可能にし、さまざまなGPU依存のワークロードを効率的に処理できるよう設計されています。
モデルのサイズとスケジューリングの最適化
AIモデルは非常に大きく、モデルが大きくなるほどネットワークを介して転送するデータ量が増加します。例えば、LLaMA 3.1 8Bモデルは5GB以上あり、このような大規模なモデルを新しい場所で実行するためには、大量のデータを迅速に転送する必要があります。
Cloudflareは、スケジューリングの高速化のために、以下のような最適化を行っています。
画像のキャッシュとプルの高速化
モデルやコンテナのイメージをキャッシュし、次回以降の実行を高速化するために、Cloudflareは自社のキャッシュ技術やR2ストレージを活用しています。これにより、AIモデルのデプロイを効率化し、タイムトゥファーストトークン(TTFT)を最小化します。大規模なモデルに対応した高速なデータ転送
特に大規模なモデルのスケジューリング時には、従来のDockerプルでは遅すぎることがありました。そのため、Cloudflareは独自に最適化されたデータ転送技術を開発し、Dockerプルの速度を大幅に向上させました。
これらの取り組みによって、Cloudflareのネットワーク上でGPUを活用したAI推論を行う際のパフォーマンスを大幅に向上させ、効率的なリソース管理と低遅延を実現しています。
(4) Dockerプル速度の最適化とその影響
Dockerプルの課題と解決策
AI推論や大規模なコンテナを使用する際、コンテナイメージの取得時間がパフォーマンスに大きな影響を与えることがあります。特に、AI推論に必要なコンテナイメージは非常に大きく、15GBを超えることも珍しくありません。これほど大きなイメージを効率的に管理し、スケジューリングを迅速に行うことがCloudflareの重要な課題でした。
従来の方法では、例えばCloudflareの東京データセンターで新しいコンテナを実行しようとする際、アメリカのロサンゼルスからイメージを取得するのに時間がかかりすぎていました。この遅延が、特にトラフィックの増加に応じた迅速なスケールアップを難しくしていました。
3つの主要要件
Cloudflareはこの問題に対処するため、次の3つの要件を満たすソリューションを開発しました。
非常に大きなイメージの高速なプルとプッシュ
AI推論やコンテナの実行時に、イメージの取得に時間がかかると、システム全体のパフォーマンスが低下します。そのため、プルやプッシュを高速に行う必要がありました。単一障害点への依存を避ける
単一のイメージ取得元に依存すると、そのシステムに障害が発生した場合に、すべてのコンテナ取得が遅延するリスクがあります。これを防ぐために、Cloudflareは分散型のストレージやキャッシュ機能を利用しています。イメージレジストリ管理の簡素化
開発チームがイメージレジストリの管理に時間を取られることなく、開発に集中できるようにするため、グローバルに分散したストレージとキャッシュシステムを導入しました。
R2とキャッシュの利用
Cloudflareは、グローバルに分散したストレージシステム「R2」を活用し、コンテナイメージの保存とキャッシュの最適化を図っています。これにより、各データセンターでキャッシュヒット率を最大化し、イメージ取得を高速化しています。また、Tiered Cacheを使ってさらに高速化する計画も進行中です。
さらに、Cloudflareは「serverless-registry」という独自のコンテナイメージレジストリを開発・オープンソース化しており、これによりCloudflareの各拠点で高速なイメージ取得を可能にしています。このレジストリはWorkers上に構築されており、わずか数分でデプロイでき、Cloudflareの内部でも広く使用されています。
zstdによる圧縮の高速化
Dockerプルのボトルネックは、gzipによるイメージレイヤーの圧縮と解凍にありました。gzipの処理速度では、大規模なAIモデルやGPUライブラリを迅速に扱うには不十分でした。そのため、Cloudflareはzstd(Zstandard)という圧縮アルゴリズムを導入しました。
zstdはgzipよりも圧縮・解凍が高速で、かつ圧縮率が高いため、転送するデータ量を減らしつつ、高速にデータを取得できます。この変更により、Dockerプルの時間を従来の半分に短縮しました。
独自のCLIツールによるさらなる高速化
Cloudflareは、イメージのビルド、チャンク化、プッシュを行うための独自のCLIツールを開発しました。このツールは、従来のdocker buildやdocker pushに代わるもので、zstdによる圧縮を活用し、500MBのチャンクに分割してアップロードします。これにより、Workersのリクエストサイズ制限に対応しながら、イメージを効率的に処理できます。
この独自ツールの導入により、Cloudflareの30GBのGPUイメージの取得時間が従来の8分から4分に短縮され、AI推論やその他のリソース集約型ワークロードのスケジューリングが劇的に向上しました。
さらなる最適化への展望
現在の最適化だけでなく、Cloudflareは今後さらに性能向上を図る計画を持っています。Firecracker VMのスナップショット技術を活用することで、仮想マシンの起動時間を200ms以下に短縮するなど、さらなる改善が進められています。また、イメージの事前ブート技術やスナップショットの活用によって、今後のスケジューリング速度がさらに向上する見込みです。
(5) リモートブラウザーアイソレーションとグローバルな低遅延の重要性
リモートブラウザーアイソレーションとは?
リモートブラウザーアイソレーション(Remote Browser Isolation、以下RBI)は、Cloudflareが提供するセキュリティ機能で、ユーザーのブラウザーセッションをクラウド上のコンテナ内で実行するものです。ユーザーの端末には実際のブラウザーが動作せず、ブラウザーのレンダリング結果だけが転送されるため、フィッシング攻撃やゼロデイの脆弱性、ランサムウェアなどのリスクを大幅に低減できます。
この技術は、特に企業の従業員やリモートワーク環境でのセキュリティ確保に効果的であり、感染リスクの高いサイトやファイルへのアクセスを隔離された環境で行うことができます。
ロケーションの重要性と低遅延
リモートブラウザーアイソレーションの最大の課題の1つは、ユーザー体験を損なわないよう、遅延を最小限に抑えることです。ユーザーがブラウザーを操作する際、レスポンスが遅れると、まるでブラウザーがフリーズしているかのように感じ、ストレスを感じる原因となります。これを防ぐためには、ブラウザーのレンダリング処理がユーザーの物理的な位置に近い場所で行われる必要があります。
Cloudflareのネットワークは、世界330以上の拠点に分散しており、95%以上のインターネット接続された人口が50ミリ秒以内でアクセス可能な環境を提供しています。これにより、ユーザーがどこにいても、最も近い拠点でリモートブラウザーが動作し、遅延を最小限に抑えることができます。
例えば、サンティアゴ(チリ)のユーザーがRBIを利用する場合、同じ都市内でブラウザーを実行すれば、ほとんど遅延を感じることはありません。もし、ブラウザーがブエノスアイレスで実行された場合、追加の21msの遅延が生じ、サンパウロでは48ms、ボゴタでは67ms、そしてアメリカのノースカロライナ州ローリーでは128msの遅延が発生する可能性があります。このように、コンテナがどこで実行されるかによって、ユーザーの操作体験が大きく左右されます。
他のアプリケーションへの応用
RBIのような低遅延が求められるサービスは、ブラウザーのリモート実行に限りません。Cloudflareのコンテナプラットフォームは、他の多くのアプリケーションにもこの技術を応用することが可能です。
WebRTCサーバー
ビデオ通話やライブストリーミングなど、リアルタイムのやり取りが必要な場合、遅延を最小限に抑えることは非常に重要です。Cloudflareの分散したネットワークは、これらのサービスをユーザーに近い場所で実行し、スムーズな体験を提供します。マルチプレイヤーゲーム
オンラインゲームにおける遅延は、プレイ体験に大きな影響を与えます。特にアクションゲームやシューティングゲームでは、わずかな遅延でもプレイヤーのパフォーマンスに差が生じます。Cloudflareのコンテナプラットフォームは、プレイヤーの近くでゲームサーバーを実行し、ラグを最小限に抑えます。オンライン広告の配信
広告業界では、ユーザーがウェブページをロードする際に広告が即座に表示されることが求められます。Cloudflareのコンテナプラットフォームを利用すれば、広告サーバーをユーザーの近くで動かし、瞬時に広告を配信することが可能です。金融取引の処理
銀行や金融機関の取引システムでは、取引の遅延が大きなリスクとなるため、迅速なデータ処理が求められます。Cloudflareのグローバルネットワークを活用することで、重要な取引を迅速かつ安全に処理できます。
コンテナプラットフォームの柔軟性
Cloudflareのコンテナプラットフォームは、RBIだけでなく、さまざまなアプリケーションを世界中のどこでも実行できる柔軟性を持っています。ユーザーの近くで実行することで、低遅延かつ高パフォーマンスを実現し、あらゆるアプリケーションのユーザー体験を向上させることができます。
(6) Workers CI/CDビルドとオフピークジョブの効率化
オフピークジョブの活用による効率化
Cloudflareのネットワークは24時間稼働していますが、トラフィックが集中する時間帯(ピークタイム)と、比較的トラフィックが少ない時間帯(オフピークタイム)があります。多くのインターネットトラフィックは「エンドユーザー」(通称「アイボール」)によって生成されるため、夜間や早朝の時間帯にはトラフィックが減少し、CPUリソースがアイドル状態になることがよくあります。Cloudflareでは、これらの余剰リソースを活用するため、オフピークジョブの実行を促進する仕組みを導入しました。
特に、Cloudflare Workersを利用したCI/CD(継続的インテグレーション/継続的デリバリー)のビルドプロセスでは、オフピーク時にこれらのリソースを使ってビルドジョブを効率的に処理します。この取り組みによって、ピーク時のリソース消費を抑え、余剰リソースを活用することでコストを削減し、効率を最大化することが可能になりました。
Workers Buildsの概要
2024年のBuilder DayでCloudflareが発表した「Workers Builds」は、Gitリポジトリと連携し、プルリクエストをマージするたびにCloudflare Workersのビルドとデプロイを自動化する新しいサービスです。このサービスでは、Cloudflareのコンテナプラットフォーム上でビルドプロセスが実行され、オフピークの計算リソースを活用することで、低コストで効率的なCI/CDが可能になります。
Workers Buildsは「off-peak」というスケジューリングポリシーを使用し、トラフィックが少ない時間帯にジョブを実行します。このアプローチにより、昼間のトラフィックが多い時間帯にサーバーがリソース不足になるリスクを回避し、夜間やトラフィックの少ない時間帯に効率的にリソースを活用することができます。
事前ウォームアップによるビルド時間の短縮
ビルドプロセスでは、新しいコンテナがジョブごとに生成されるため、コンテナの作成に時間がかかることがあります。しかし、Cloudflareはこのビルド時間を短縮するため、サーバーを事前にウォームアップさせる仕組みを導入しています。
事前イメージダウンロード
ビルドジョブが開始される前に、サーバーは必要なコンテナイメージを事前にダウンロードしてキャッシュします。これにより、ジョブ開始時にイメージをダウンロードする必要がなくなり、ジョブの開始が迅速化されます。迅速なコンテナ起動
事前にダウンロードされたイメージを利用することで、Firecracker VMが10秒以内に新しいコンテナを起動できるようになります。従来のプロセスでは75秒かかっていた起動時間が大幅に短縮され、ビルドジョブ全体の効率が向上しました。
今後さらに、Firecracker VMのスナップショット技術を活用することで、仮想マシンの起動をさらに高速化し、ビルド時間を短縮する取り組みが進められています。スナップショット技術により、仮想マシンをわずか200msで復元できるようになり、さらなる最適化が期待されています。
Workersとコンテナの連携
Cloudflareのエンジニアリングチームは、Workersとコンテナプラットフォームの統合を進めています。これにより、開発者はよりシームレスにWorkersとコンテナを活用したアプリケーションを構築できるようになります。
例えば、コンテナを長時間実行するタスクや、CPUリソースを大量に消費する処理は、Workersではなくコンテナに適しています。Cloudflareでは、これらのタスクをWorkersから自動的にコンテナへオフロードし、両者の強みを生かした効率的な処理を実現しています。開発者は、コンテナのデプロイやスケジューリング、リソース管理に煩わされることなく、コードのビジネスロジックに集中することができるのです。
まとめ
オフピークジョブの効率化により、Cloudflareはリソースを無駄にすることなく、昼夜問わず最大限にネットワークのキャパシティを活用しています。事前ウォームアップとコンテナプラットフォームの柔軟なスケジューリングにより、迅速かつ効率的なCI/CDが実現され、開発者はコストを抑えながら高品質なアプリケーションを提供できるようになっています。
参考リンク
あとがき
Cloudflareの新しいコンテナプラットフォームは、AI推論や大規模なコンピューティングリソースを扱う現代のニーズに応えるだけでなく、将来の開発者体験を大きく変える可能性を秘めています。ユーザーに近い場所でスケーラブルにコンテナを実行することで、低遅延かつ高パフォーマンスなサービスが提供できるようになります。このコンテナサービスの一般提供は、2025年に予定されており、2024年の段階では、一部のエンジニアリングチームに限定して事前に利用する機会が提供されるとのことです。これからのクラウドの在り方を形作る技術として、今後の展開に大いに期待したいところです。もし興味があれば、Cloudflareがどのような未来を見据えているのか、さらに掘り下げて調べてみる価値があるでしょう。