Cloudflare Workers®は最も広く利用されている最大規模のエッジコンピューティングプラットフォームの1つです。Cloudflare Workersを発表したのはほぼ3年前ですが、ここ2年ほどで一般的に利用されるようになりました。その間、何百何千という開発者が何千万ものコード行を書いているのを見ました。今、こうしたコード行はCloudflareのネットワーク上で動作しています。
前四半期、20,000人の開発者が初めてCloudflare Workersを使って新しいアプリケーションをデプロイしました。当社のネットワークを介して通過する全リクエストの10%以上がCloudflare Workersを利用しています。当社最大のお客様では、およそ20%がデプロイメントの一部としてCloudflare Workersを導入しています。これほどプラットフォームが成長するのを見るのは、信じられない気持ちです。
当社がServerless Week(サーバーレスウィーク)と呼んでいる次週に、Cloudflare Workersプラットフォームの機能強化シリーズを発表していきます。これにより、さらに複雑なアプリケーションの構築と、サーバーレスコンピューティングの経費削減、アプリケーションの高速化ができるようになります。そして、徹底的にWorkersプラットフォームが安全であることを証明していきます。
Matthewの開発者ニーズのヒエラルキー
その週が始まる前に、過去3年間に当社がエッジコンピューティングについて学んだことを振り返り、少しお話ししたいと思います。Cloudflare Workersを開始したとき、目玉となる機能はスピードだと考えていました。Workersは、エンドユーザーにより近いCloudflareネットワーク全体で実行しているため、従来の集中型サーバーレスプラットフォームよりも応答時間が本質的に短くなります。
しかし、開発者がCloudflare Workersを使っているところを観察して、開発プラットフォームにはスピードだけではなく、それよりもはるかに重要な属性が多数あることを学びました。スピードはちょっとしたおまけに過ぎず、ほとんどのアプリケーションでは、初期の要件ではありません。スピードにだけ注意を向けるのは間違いであり、エッジコンピューティングプラットフォームが忘れ去れられるところでした。
現在、エッジコンピューティングの利点を話題にする人はほぼ全員がまだスピードに注目しています。Akamai社もそうでした。この企業はJava- と .NET-ベースのEdgeCompuringプラットフォームを2002年に立ち上げましたが、十分な顧客が見つけられず、ネットワークレイテンシーをわずかに低くするだけでもエッジの実行コードが複雑になり、余分な経費がかかるのは正当なことだとして、2009年にシャットダウンする結果となってしまいました。これは、業界人の大半が忘れてしまった教訓です。
Cloudflare Workersを立ち上げたときに、エッジコンピューティングの中心的な機能はスピードだと考えたことは間違いだったと痛感しています。未だに業界の大半が甚だしい勘違いをしていて、今後大きなチャンスを逃す恐れがあります。
いかなるプラットフォームでも開発者が実際に必要とするものを重要度が低い順から挙げていきましょう。スピード<一貫性<コスト<使いやすさ<コンプライアンスの順になります。これを「Matthewの開発者ニーズのヒエラルキー」と名付けます。エッジコンピューティングを話題にしているほとんどの人は、スピードを重視していますが、私は、一貫性、コスト、使いやすさ、そして特にコンプライアンスは他のどれよりも重要になると主張したいと思います。実際に、私は、今後3年間でエッジコンピューティングの真の中心的機能は、それほどセクシーではありませんが、根本的に重要な規制コンプライアンスに関係すると予測しています。
中心的機能としてのスピードとは
誤解しないでください。スピードは素晴らしいことです。アプリケーションを高速化するのは、開発者としての経験を自己実現するものです。Workersは非常に高速であるように構築されました。コンピューティング作業負荷をアプリケーションのユーザーがいる場所に近づけることで、光の速度による制限を効果的に克服できます。Cloudflareのネットワークは世界100か国以上200都市に広がります。この地球上にいるすべての人に数ミリ秒で到達できるネットワークを構築し続けます。
光の速度を高速化する可能性はほぼゼロなので、開発者がコードを書き、ネットワーク全体で実行できる能力、クラウド上でも動作し、従来の集中型コンピューティングソリューション以上のパフォーマンス優位性を持つということです。アプリケーションを実行する場所として「可用性ゾーン」を選ばなければならないとしたら、Cloudflareのネットワークが拡大できる全ての場所で実行するWorkersのようなプラットフォーム上で構築されたアプリケーションのパフォーマンスにとっては、不利なこととなります。
当社は、Cloudflare Workersがすでに最速のサーバーレスプラットフォームであると信じており、そうあり続けるためにネットワークを構築し続けます。
スピードだけではニッチである
ちょっとの間、現実を直視してみましょう。数百ミリ秒のネットワークレイテンシーに影響を受けるアプリケーションセットは限られています。最新の大規模サーバーレスプラットフォームなら、ネットワークレイテンシーは問題ではないと言っているわけではありません。ただ、余分なパフォーマンスを必要とするアプリケーションはニッチであるというだけです。
クレジットカード処理、広告配信、ゲーム、人とコンピューターのやりとりなどのアプリケーションは、レイテンシーに影響を受けやすいものです。たとえば、AmazonのAlexaやGoogle Homeなどが競合他社よりも優れている理由は、1つに音声処理に親会社のエッジネットワークを大いに活用できるため、レイテンシーが低くなり、応答性が高くなるためです。
しかし、こうしたアプリケーション以外に、詳しく説明できるものはありません。エッジコンピューティングについてよく話す人は、すぐにIoTやドライバーの要らないスマートカーの話を始めます。恥ずかしいことに、Workersプラットフォームを立ち上げた時、私自身それをずっとやってしまいました。プロからのヒント:エッジコンピューティングのエバンジェリスト(伝道師)と話している時、ビンゴカードに『IoT』と『スマートカー』を持っていると、毎回必ずバズワードビンゴゲームに勝てます。
かの有名なスタンフォード大学のDonald Knuth教授(コンピューターサイエンス)は、Tony Hoare、Edsgar Dijkstraなどとともに「時期尚早な最適化による影響は、プログラミングにおける悪の根源だ」といったことをおっしゃっていました。驚くべきことではありません。そのスピードだけでは、多くの開発者がエッジコンピューティングプラットフォームを使うことを選ぶに足りる説得力がありません。ほとんどのアプリケーションがそうすることは、時期尚早な最適化、あるいは『すべての悪の根源』です。ではスピード以上に重要なこととは?
一貫性
ネットワークレイテンシーを最小限に抑えても、多くの開発者を新しいプラットフォームに移行する理由として不十分です。しかし、ほぼ全てのサーバーレスプラットフォームには、レイテンシーを生む特有のものが1つあります。それは、コールドスタート時間です。コールドスタートとは、特定のサーバーで最初にアプリケーションを実行する際にかかる時間のことです。コールドスタートによってアプリケーションが予測不可能になり、一貫性を持たなくなるため、害があります。サーバーレスアプリケーションがコードがホットなサーバーをヒットする場合、高速になる場合もありますが、他の場合は新しいサーバー上でコンテナをスピンアップしてディスクからメモリにコードを読み込む必要がある場合、低速になります。予測不可能性は、ユーザー体験に悪い影響を与えます。明らかになったのは、人はスピードよりも一貫性の方が好きだということです。
コールドスタートの問題はエッジコンピューティングに特有のものではありません。コールドスタートによる一貫性が欠如することは、全てのサーバーレスプラットフォームの悩みの種です。これは、独自のインスタンスを維持し、展開する必要がないのに支払う税金のようなものです。しかし、実際にエッジコンピューティングプラットフォームは多くの場所で多くのサーバー全体にコンピューティング作業負荷を広げるため、コールドスタート問題を悪化させることがあります。結果として、リクエストを受信した場合、特定のサーバー上でコードが「温かく」なる可能性は低くなります。
言い換えると、プラットフォームが分散するほど、コールドスタート問題が発生する可能性が高くなります。ほとんどのサーバーレスプラットフォームでこの問題に対処するために、開発者はコードをコードを熱くしておくために世界中から独自のアプリケーションにアイドリングリクエストを実行するような、恐ろしいハッキングを作る必要があります。泣きっ面にハチで、従来のクラウドプロバイダーはこうした使い捨てリクエストに課金するか、独自の洗練されていない事前ウォーミング/「予約済み」ソリューションをさらに課金したりします。バカげています!
ゼロナノ秒のコールドスタート
コールドスタートの重要性はよくわかっていたので、最初、Workersのコールドスタートが5ミリ秒未満になるようにしました。これはAWS Lambdaのようにコールドスタートが5秒(Workersより1,000倍遅い)もかかってしまう他のサーバーレスプラットフォームと非常に好意的に比較したものです。
しかし、当社はそれを向上させたいと考えました。そこで、今週、Workersがゼロナノ秒コールドスタートをサポートすることを発表します。誰かがタイムマシンを発明しない限り、それ以下の時間にすることは不可能なので、Workersはサーバーレスプラットフォームの中で最速のコールドスタートを持つと確信しています。Cloudflare Workersは、従来の集中型サーバーレスプラットフォームさえも打ち負かす一貫性の王者となっていきます。
しかし、前述の「Matthewの開発者のニーズのヒエラルキー」では、一貫性がスピードよりも重要だとされると同時に、コンピューティングプラットフォームを選択する際に、一貫性よりもずっと重要な要因も他にあるとしています。
コスト
高速のプラットフォームと安価なプラットフォームのどちらかを選択しなければなりませんが、速いか安いか以外はすべて同じ条件の場合、開発者は安価な方を選ぶでしょう。開発者は、ユーザー体験が損なわれて、スピードアップグレードにかかる費用よりも損害が大きくなるところまで行かなければ、スピードのために進んで追加費用を払うことはしません。それまでは、スピードよりも安さが優先されます。
ほとんどの場合、エッジコンピューティングプラットフォームでは、より高速化するために特別料金を課します。たとえば、AWSのLambda@Edge経由で処理されるリクエストにかかる費用は、AWS Lambda経由でリクエストを処理する経費のほぼ3倍以上です。ベーシックなLambdaは既にびっくりするほど高額です。これはある意味、理にかなっているかもしれません。私たちは全員が高速化するためにはお金がかかると思い込んでいるからです。しかし、価格設定の論理的根拠に基づくと、常にエッジコンピューティングはネットワークレイテンシーに大きく影響される一部のアプリケーションに対応するニッチ製品ということになるのでしょう。
しかし、エッジコンピューティングは必ずしも高価である必要がありません。事実、値段を下げることができます。よく理解するには、エッジからの送信サービスコストをご覧ください。CloudflareのネットワークのようにローカルISPと良いピアリングがされている場合、帯域幅をローカルに配信した方が世界中にバックホールするよりも低コストになる可能性があります。エッジで実行する際に、電力コストもコロケーションコストも節約できます。Cloudflare Workersのプラットフォームの価格を低く抑えるために使える節約です。
より効果的なアーキテクチャでコストカットする
しかし、さらに効果的なアーキテクチャから真のコスト削減は来ます。90年代初頭、私は大学のネットワーク管理者だった時、新しいアプリケーションを追加しようとしていました。つまり新しいサーバーをオーダーするということです。(Gatewayからサーバーを購入しました。牛のプリントがついた段ボール箱が面白いと思いました。)そして、仮想マシン(VM)が登場し、同じサーバーで複数のアプリケーションを実行することができるようになりました。実際に、アプリケーションごとに必要となる物質的なサーバーが少なくなっていたため、アプリケーションごとのオーバーヘッドが減少しました。
VMは最初のパブリッククラウドを生み出しました。しかし、すぐにクラウドプロバイダーはオーバーヘッドをさらに減少させる方法を模索しました。コンテナは複数の顧客の作業負荷を同じマシンで実行する軽量のオプションをdotCloudとともに提供しました。dotCloudはDockerとなり、先導役になって最終的にほとんどの人が追従しています。繰り返しになりますが、コンテナでVMに勝利したことで、アプリケーションごとのオーバーヘッドを減少しました。
Cloudflareでは、歴史が止まることはないと知っているので、Workersの構築を始める際に、コンテナの後に何が来るのかと自問自答しました。その答えは分離でした。分離とは、処理を分けるためにブラウザを使うサンドボックス技術です。これは非常に高速で軽量です。そのため、Webサイトを訪問した時にブラウザはこれまで見たことのないコードを取ることができて、ほぼ瞬時に実行することができます。
コンテナや仮想マシンよりも分離を使うことで、従来のサーバーれスプラットフォームよりもかなり低く計算オーバーヘッドの維持ができます。これによって、コンピューティングの作業負荷をずっと効率よく処理できるようになります。また、その効率化による節約はお客様に還元することもできます。Lambda@EdgeやLamdbaよりも少し安い価格を目指しているわけではありません。もっともっと安くすることを目指しています。
リミットからリミットレスへ
もともと、Workersの価格設定はシンプルで費用対効果の高いにしたいと考えていました。他のサーバーレスプロバイダーのようにリクエスト、CUP時間、そして帯域幅に課金する代わりに、当社はリクエストごとに課金しました。シンプルです。トレードオフは最大CPU、メモリ、アプリケーションサイズの制限を共有されることでした。過去3年間で、開発者がさらに複雑で高度なアプリケーションをWorkersを使って構築したいと考えていたのを見ました。これは限界の境界線を押し広げたものです。だからこそ、今週リミットレスにしているのです。
明日、新しいWorkersオプションを発表します。これは、他のサーバーレスプロバイダーが使う同じ価格設定モデルに従い、さらに複雑なコンピューター作業負荷を実行することができますが、はるかに魅力的な料金で実行できます。以前のリミット内で利用しているユーザーのためにシンプルになったオプションのサポートを継続していきます。私は、特に従来の集中型サーバーレスプラットフォームより優れたパフォーマンスとお手頃な価格で、開発者が新しいアプリケーションを構築するために当社の技術を生かせる方法を見るのを楽しみにしています。
さらに高速であり、さらに一貫性があり、さらに安価であることは素晴らしいことですが、一緒にしただけでは、開発者の作業負荷を削減するには十分ではありません。では、コスト以上に重要なこととは?
使いやすさ
開発者は怠け者です。身をもって分かっています。なぜなら、プログラムを書く必要がある時、遅いしお金もかかるのですが、信頼できる言語としてPerl(ノーコメントでお願いします)に手を伸ばします。私と同じことをしている人が他にもいるはずです。
だからこそ、Cloudflare Workersを使って開発者が心地がいい場所で開発者に見合う必要があることを知っていました。開発者がよく知っていて気に入っている言語をサポートするところから始めます。以前にJavaScript、 C、 C++、Rust、GoやCOBOLでさえサポートすると発表しました。今週、Phython、Scala、Kotlinのサポートも発表していきます。皆さんが新しい言語と新しいプラットフォームを勉強する必要がないようにし、新しいプラットフォームがCloudflare Workersのメリットを受けられるようにしたいと思っています。(私はまだPerlサポートを推していますけれど。)
Easeも技術的運用などにかける時間を短縮する手段です。これこそ、サーバープラットフォームが秀逸なところです。コードのデプロイが簡単であり、プラットフォームの規模を負荷で多くしたり小さくしたりできるのが魅力的です。DiscordのようにCloudflare Workersをずっと利用してくださっているユーザーがここ3年間で数千パーセントもの使用量増加を経験し、Workersプラットフォームが自動的にニーズに合わせて拡張しているのを当社は見てきました。
ただし、サーバーレスプラットフォームには1つ問題があります。それはデバッグです。開発者として、ローカルでサーバーレスプラットフォーム全体を複製するのが難しいこともあります。アプリケーションをデバッグするのはさらに難しいかもしれません。これが悪くなるのは、コードをプラットフォームにデプロイするのに5分もかかってしまう場合で、AWSの Lamda@Edgeではあり得ることです。開発者の方なら、自分のコードがデプロイされて、テスト可能になるのを待つ時間がどれほど憂鬱なものかがお分かりになると思います。だからこそ、15秒以下で世界200都市以上に広がる当社のネットワークにコード変更がデプロイされることが重要なのです。
ベゾスのルール
Cloudflareにおける重大な決定の一つが、我々が「(Amazonの創設者である)ベゾスのルール」と呼ぶ規則の実施でした。必要なことは2つです。1) CloudflareのエンジニアがCloudflareのために新機能を構築する時は、できる限りWorkersを使わなければならない。2) Cloudflareのために構築するAPIまたはツールは、サードパーティのWorkers開発者も自由に使えなければならない。
堅牢なテストとデバッグのフレームワークの構築には、開発者からの見解が必要です。この3年間、Cloudflare Workersの開発ツールキットは、当社のプラットフォームを使った何百、何千人もの開発者によるフィードバックに基づいて、大きく成熟することができました。Cloudflare AccessとGatewayのような革新的な新機能を迅速に構築するためにWorkersを使った当社のチームからのフィードバックも含まれています。歴史が示すように、プラットフォームを構築する企業では、どのプラットフォームにおいても最初で最高のお客様が開発チームであることが必要です。
Cloudflare Workersのコマンドラインツールからプロビジョニング、デプロイ、デバッグまで、Wranglerは当社チームからのフィードバックを元に堅牢な開発者経験へと発展してきました。最速かつ最も一貫性があり、最も手頃な価格であることに加えて、Cloudflare Workersがこれほど早く最も使いやすいサーバーレスプラットフォームになっている勢いを考えると、ワクワクします。
一般的に、どのプラットフォームでも使いやすいものが勝ちます。しかし、切り札となるものが1つあります。使いやすさでさえ、エッジコンピューティングの本当の中心的機能になることが明らかにされるだろうと、私は予想しています。
コンプライアンス
個人の開発者は、それほど規則順守について考えないかもしれません。しかし、大手の銀行や保険会社、医療会社、または大規模に機密データに触れる企業の開発者として働いているとしたら、法令遵守についてよく考えることになるでしょう。たとえば、あるプラットフォームが高速で一貫性があり、お手頃価格である上に使いやすいことから、それを使いたいと思っていますが、CIO(情報システム最高責任者)、CTO(技術最高責任者)、CISO(セキュリティ最高責任者)または法務責任者が「だめ」だと言った場合、最初からやり直しとなります。
サーバーレスプラットフォームを含む、クラウドコンピューティングプラットフォームを実行するコンピューティングリソースのほとんどが、法令遵守を基本的要件としている企業で働く開発者によって作られています。今までのところは、プラットフォームがGDPR(EU一般データ保護規則)のような政府の規則に従っているか、PCI DSS(クレジットカードを受け入れる場合に必須)、FedRamp(米国政府の調達要件)、ISO27001(セキュリティリスク管理)、SOC1/2/3(セキュリティ、機密性、可用性管理)などの証明書を所有していることを確認するということです。
データ主権の時代到来
しかし、従来のクラウドコンピューティングソリューションが規制要件を満たすための十分な設備を備えていないという新しいリスクが迫ってきています。国は、国民の個人データに法律が適用されているか確認するための規制を遂行していきます。こうした法律を間違いなく遵守する方法は、国民のデータが国境を越えることなく、国内で保存し、処理することです。
EUとインド、ブラジルは全て、国民の個人データをめぐる法的主権を主張する規制を持つ、または現在検討されている主要な市場です。中国はすでに様々な種類のデータに対してデータローカライゼーション規制を課しています。ローカルなデータ保存と処理を必要とすると思われる規則が良い考えかどうかは別として、個人的には、イノベーションを押さえ込む悪い政策だと思っています。しかし、こうした動きは価値があることであり、現時点では不可避だと理解しています。そして、データ主権を主張する国が出てくると、ほぼ全ての国が同様の措置を講じることを止めることは難しくなると思います。
こうした規制でのリスクは、サーバーレスコンピューティングが達成した効率性向上の大部分が開発者の負担になることです。チーム全体が法令遵守をするために、異なる法的管轄区域で異なるクラウドプラットフォームの調整をしなければならないとしたら、それはまさに悪夢です。
エッジコンピューティングでレスキュー
ここに、エッジコンピューティングの中心的機能があります。新しいデータ主権規制を政府が課す中、1つのプラットフォームで全ての規制区域に広がるネットワークを有することは、効率性を維持しつつ、新しい法律を遵守するためにその地域におけるデータ維持と処理を追求する企業にとって、重要な意味を持ちます。
規則は始まったばかりですが、Cloudflare Workersはすでに世界100か国以上で地域ごとに運用できています。このため、当社は、開発者がデータ主権の要件を満たせるように支援する立場にあるのです。クラウドで実現した効率性を犠牲にすることなく、開発者がコンプライアンスの義務を履行するという選択肢を開発者に提供するツールも引き続き、構築していきます。
サーバーレスに対する基本的な期待は、開発者が「コードがどこで実行しているか気にしません。拡張させるだけです」と言えることでした。それが次第に、「コードが実行される場所に注意を払っていますし、コンプライアンス部を納得させるために一層の制御が必要です」と言えるようになる必要があります。Cloudflare Workersでは、瞬時のスケーリングと世界100か国以上に広がるロケーション、必要としている場所を正確に選ぶきめ細かさで2つの世界を最大限に活用していただけます。
サーバーレス週間
一番良いところ?まだまだこれからです。これから1週間、サーバーレスに対する当社のビジョンについて話し合い、Cloudflare Workersを最速で最高の費用対効果、安全で柔軟性があり、堅牢で使いやすいサーバーレスプラットフォームをどのように構築したかをご紹介していきます。これまでは不可能だった方法でアプリケーションを構築し、拡張するためにCloudflare Workersをご利用いただいたお客様のユースケースにも注目していきます。これからの開発者にさらに優れた機能を提供するべく、プラットフォームに施した機能強化の概要を説明します。
このプラットフォーム構築には、3年という長い年月を費やしました。開発者がCloudflare Workersを使って構築したすべての新アプリケーションを見られるのが待ち遠しいです。workers.cloudflare.comにアクセスすると、今すぐ無料で始められます。