CloudflareのS-1ドキュメントには、次のような言葉で始まるセクションがあります。「インターネットは、今あるもののために作られたのではない」この一文は、実験から始まったインターネットが、今や私たちの日常生活や仕事に欠かせない存在として開花したという考えを表現しています。そして、設計通りのインターネットだけでなく、セキュリティやパフォーマンス、プライバシーなど、より多くのものが必要とされているということです。
クラウドについても同じことが言えます。クラウドは、どうなるべきかということを想定して設計されたものではありませんでした。
Amazon EC2のようなサービスの登場は、サーバーやストレージシステムをラック単位で購入・設置し、それをメンテナンスするという以前のやり方からすれば、間違いなく大きな改善となったでしょう。
しかし、クラウドはその性質上、旧来の現実世界のインフラを仮想化したものであり、インターネット規模のビジネスの需要に応えるために、コンピューティングのあるべき姿を根本的に見直したものではありませんでした。それはまるで、蒸気機関車を効率の良い電気機関車に置き換えたかに見えても、まだ上には煙突が必要で、200マイルごとに水を補給するために停車するようなものです。
クラウドは、サーバーを購入してOSをインストールするという儀式を、地域を選択し、仮想マシンをプロビジョニングし、コードを人工的に温めるという、今ではおなじみの新しい儀式に置き換えたのです。
しかしその過程で、Lambdaやエッジ、Functions、サーバーレスといった形で、クラウドを通して光が垣間見えてきます。いずれも、クラウドコンピューティングのモデルに名前を付けようとするもので、開発者の生産性を高め、1からインターネット規模への拡張を可能にすることを約束するものです。これは、マシンやディスクを仮想化したり、コンテナで包むのではなく、「コードを書けばこちらで実行する、スケーリングやロケーションといった細かいことは気にしなくていい」というモデルです。
私たちはそれをSupercloudと呼んでいます。
Supercloudの基盤は、あらゆる規模のアプリケーションの実行を、効率的かつ無限に拡張できるようにする計算とデータのサービスであり、現在あるようなクラウドのお荷物になることはありません。
Supercloudの基盤
数年前、NoSQLと呼ばれるムーブメントが、データベースに依存しない新しいデータの保存・処理方法を開発しました。Key-valueストアやドキュメントストアは、データベースやテーブル、あるいは行といった粒度でデータを考えるのではなく、単純なレベルでコードとデータを直結させることで繁栄したのです。
NoSQLは、細粒化へ向かう動きと考えることができます。そして、それが功を奏しました。NoSQLストア、KV、オブジェクトストア(R2など)があふれています。データ処理のためのMapReduceの台頭も、細粒化へ向かうものです。これはデータ処理をスケールしやすい部分(mapとreduce)に分けることで、膨大な量のデータを効率的に扱い、必要に応じてスケールアップ、スケールダウンすることが可能になりました。
クラウドコードでも同じことが起こっています。プログラマーが常にデータベースサイズのチャンクで考えたくなかったように、VMサイズやコンテナサイズのチャンクで考える必要はないはずです。それは非効率的であり、サービスを作成するためのコードを書くという実際の仕事とは何の関係もありません。それは、プログラムして何かを生み出すという真の価値から目をそらす、不必要な作業なのです。
分散プログラミングの理論では、細粒化というのは昔からあるものです。CSPモデルは、タスクを実行してデータを渡す小さなプロセスです(Go言語の着想に役立ちました)。アクターモデルは、多数のアクター間でメッセージを渡し内部の状態を変更するもので、ラムダ計算もデータに作用する離散関数に関するものです。
オブジェクト指向プログラミングでは、開発者は(仮想マシンやディスクではなく)オブジェクトについて論理的に考えます。また、CORBAや同様のシステムでは、Object Request Brokerという概念があり、オブジェクトがどこでどのように実行されるか詳細を知らなくても、分散システム内オブジェクトを実行したり、リモートでアクセスしたりできるようにしています。
コンピューティングの理論は、専用のマシン(仮想または現実)から離れ、コードの実行とデータ局所性の詳細を自動的かつ効率的に処理する、Supercloud上で実行されるコードとデータへと向かいます。
そのため、コードを関数に分割して書く場合でも、大きな機能の断片やプログラム全体を出荷する場合でも、Supercloudの基盤は、あなたのコードがその効率性から恩恵を受けることを意味するのです。このようなことが他にも多くあります。
Supercloudのメリット
Supercloudでは、プロビジョニングするVMの数を考える必要がなく、訪問者が殺到したときのためにホットスタンバイVMを用意する必要もないため、スケーリングが容易になります。ラムダ計算を継承しているMapReduceと同じように、汎用コンピューティングも、スケールアップ、スケールダウンするべきです。
そして、それは単にスケーリングだけの問題ではありません。Supercloudでは、コードもデータも流動的で、ネットワーク上を移動します。Durable ObjectsやHelloアクターモデルなど、コードにデータを添付すれば、あらゆるサイズに拡張でき、必要に応じてユーザーの近くに移動して最高のパフォーマンスを提供できるアプリケーションの基盤ができあがります。
あるいは、データが不動である場合は、何度アクセスする必要があっても、コードをその近くに移動させます。
それだけでなく、このような柔軟なレベルで動作するということは、データの処理や保存の場所について、データプライバシー法やデータ所在地の規制を施行するコードが、個々のユーザーやオブジェクトのレベルで動作することを意味します。同じコードでも、関連するデータが保存されている場所によって挙動が異なり、まったく別の国で実行されることさえあるのです。
Supercloudは、プログラムの実行コストに2つの興味深い効果をもたらします。第一に、必要な分だけ実行させるので、より経済的です。作業待ちのコミットされたVMや、万が一のためにお金を払っているアイドル状態のマシンは必要ないのです。コードが実行されるか、されないかのどちらかです。必要に応じてスケールアップ、スケールダウンも可能です。あなたが明確に必要なものだけに、支払えば良いのです。
第二に、すべての人により良い、より効率的なコンピューティングプラットフォームが構築されます。コンピューティングプラットフォーム(例えば、当社)は、可能なかぎり効率的になります。パフォーマンスとスケールアップの理由のため、迅速にコードを開始できるようにしなければなりません。私たちは、CPUを効率的に使用する必要があります。なぜなら、アイドル状態のCPUを維持するためにお金を払うお客様はいないからです。また、クラウドマシンは非常に高い稼働率で動作するため、環境にも優しいのです。このレベルの効率化により、この文章の最後の単語を読むのにかかった時間で、Cloudflare Workersが処理した1,000万件のリクエストまで、私たちのプラットフォームを拡張することができるのです。
そしてこのコンピューティングプラットフォームは、マシンやデータセンター、あるいは国を越えて、大きくスケールアップします。適切なソフトウェア(私たちはこれを構築しました)を用いれば、インターネットの規模にまで拡張することができます。ソフトウェアが全世界のリソースを自動的に割り当て、接続、データ、処理を移動させ、高い効率性と最適なエンドユーザーエクスペリエンスを実現します。
誰もがどこにいても利用できるグローバルネットワークは、効率的なコンピューティングとストレージを実現し、地球をひとつのクラウドに変えるソフトウェアで結ばれています。それがSupercloudです。
Supercloudへようこそ
Supercloudは、パフォーマンス、スケーラビリティ、可用性、プライベート性、そしてコスト効率に優れています。アプリケーションの地域を選択したり、仮想マシンをプロビジョニングしたり、コンテナを自動スケールする方法を考えたり、コールドスタートに悩んだりすることは、滑稽で、骨が折れ、時代遅れで、時間を浪費し、柔軟性がなく、コストのかかるものに思えることでしょう。
幸いなことに、Cloudflareは何年も前から従来のクラウドに代わるものを、私たちのネットワークと開発者プラットフォームに構築しています。それがSupercloudです。この言葉は新しいかもしれませんが、だからといって現実味がないわけではありません。現在、100万人以上の開発者が、Supercloud上で構築しています。
その開発者たちはそれぞれ、コードの実行から完成までを1台のマシンだけで完結させたいと考えています。その方が仕事がしやすいからです。丁度ここに、インターネットの規模に合わせたスケーリングが可能な1台のマシン、当社の所有するグローバルな分散型スーパーコンピュータがあります。それが、Supercloudです。当社自身もこれを基盤として独自の製品を複数構築しており、皆様も100万人の開発者に加わって、同じように構築することが可能です。
私たちは12年前からSupercloudを構築し、5年前にCloudflare Workersを通じて開発者に公開しました。Cloudflare Workersは、当社のグローバルネットワーク上で動作することで、初日からのスケールとパフォーマンスのために構築されています。
そしてSupercloud、それとCloudflare開発者ウィーク2022へようこそ
イノベーションウィークと同様に、Supercloud上でより多くのユースケースを構築できるような発表を次週開始する予定で、私たちは大変嬉しく思っています。実際、Workersの開発者プラットフォーム上に構築することで、ユーザーに新しいビルディングブロックを提供し続ける力強いパワーを得ることができます。今週は、単に新しいツールを紹介するだけではありません。その多くがどのように構築されたか、どのように利用できるか、そして今日、私たちのお客様がそれらを使ってどのような製品を作り上げているかもご紹介します。
Cloudflare TVで視聴する
毎週お届けしている全編をこちら、今週のネットでご覧いただけます。または、オーディオ/ポッドキャスト形式でもお聴きいただけます。