Cloudflareは開発者がCloudflareのグローバルネットワーク上でコンテナを実行可能にする、新しいコンテナサービスのパブリックベータ版を発表した。このサービスはサーバーレスコンピューティングプラットフォームWorkersでは対応が難しいワークロード、例えばエッジでのメディア処理やデータ処理などを実行するためにユーザーがDockerコンテナをデプロイできるようにする。
ドキュメントによるとContainersはWorkersと深く統合されており、Cloudflareのステートフルアプリケーションや分散システムの構築ブロックであるDurable Objectsを基盤として構築されている。このサービスは並列CPUコアを必要とするリソース集約型アプリケーション、完全なファイルシステムや特定のランタイム環境を必要とするアプリケーションやライブラリ、コンテナイメージとして配布される既存のアプリケーションを実行可能にする。
最近の記事ではCloudflare プロダクトマネージャー Mike Nomitch氏とソフトウェアエンジニア Gabi Villalonga Simón氏が、APIゲートウェイ、サービスメッシュ、オーケストレーターとしての利用を含む、Containersの仕組みやさまざまなシナリオでの利用方法について説明している:
Durable Objectsはコンテナのライフサイクルを細かく制御可能にするだけでなく、Workersプラットフォーム全体がルーティングやスケジューリングの挙動を自由に拡張できるようにします。Workersは世界300以上のリージョンからプログラム可能なインバウンドロジックを提供します。この点でAPIゲートウェイに似た機能を提供します (...)
Workersが対応しきれないワークロードにおいて、Containersは任意の言語でユーザー生成コードを実行したり、完全なLinux環境を必要とするCLIツールを実行したり、他のプロバイダーからのアプリケーションを大幅な書き換えなしで移植したりすることができる。Nomitch氏とVillalonga Simón氏は付け加える:
コンテナへのルーティングは内部で有効化されています。各Durable Objectはプログラム可能なサイドカーとして機能し、コンテナへのリクエストをプロキシし、そのライフサイクルを管理します。これにより他のプラットフォームでは難しい方法でコンテナを制御および拡張することが可能になります。
出典:Cloudflareブログ
Cloudflareによれば一部の顧客はすでに数千のコンテナを実行しているが、パブリックベータ版ではメモリ40 GiBと40 vCPUの同時インスタンス制限を設けている。
Redditでのフィードバックはおおむね好意的だ。modbe ディレクター Mehmet Özgür Ersoy氏は、新プラットフォームでNestJSとNext.jsのゲートウェイアーキテクチャをテストし、書いた:
Dockerコンテナの馴染み深い世界とCloudflareの「シンプル、グローバル、プログラム可能」なコンピューティングのビジョンを組み合わせるアイデアは、あらゆる新しい可能性を開きました (...) この技術がサーバーレスアーキテクチャの考え方をどのように再構築するのかとても楽しみです。
Cloudflare Containers Dashboard。出典:Cloudflareブログ
パブリックベータ版ではグローバル・オートスケーリングやレイテンシー対応ルーティングなどの一部機能がまだ利用できない。チームはContainersとWorkers間の通信方法をさらに増やす計画を立てている。彼らはこう書いている:
我々はあなたがたWorkersが あなたがたのコンテナと通信する方法をさらに追加する予定です。インスタンス内でシェルコマンドを実行するためのexecコマンドや、コンテナからWorkersへのHTTPリクエストを処理するハンドラーを追加します。これにより開発者プラットフォーム全体の機能を使用してコンテナを簡単に拡張したり、他のコンテナにアクセスしたり、各コンテナインスタンスをプログラム的にセットアップすることが可能になります。
現在利用可能なインスタンスサイズは3種類(dev、basic、standard)のみであり、アクティブなランタイム10msごとに課金される。コストはメモリ、ディスク、CPU使用量に基づいて変動し、リクエストがコンテナに送信されるか手動で開始された時点で課金が始まる。
Cloudflare Containersは有料プランのすべての開発者向けにベータ版として利用可能であり、無料プランも含まれている。