Compute によるサーバーレス最大のデメリット解消法
サーバーレスには大きなメリットがあります。アプリケーションのために特定量のサーバーリソースを作成したり、割り当てたりする必要はありません。代わりに、リソースは必要に応じてスピンアップされ、使用した分だけ支払うことになります。開発以外のタスクがなくなるということは、アプリケーションを書いたり、興味深い問題を解決したりする時間が増えるということです。また、運用を簡素化し、アジリティを高め、クラウド費用を最適化して削減することが可能になります。これは、管理面で大きなメリットがあります。
しかし、すべてのサーバーレスソリューションが同じように作成されているわけではありません。その多くは、開発サイクルの遅延の原因になったり、スタックを複雑にしたり、ダウンストリームでのアプリケーションのパフォーマンスに影響を与える場合があります。私たちが話をした人の多くは、それが心配で、アーキテクチャの大々的なサーバーレス移行になかなか踏み切れないと、打ち明けてくれました。
これは、第1世代のサーバーレスアーキテクチャに特に当てはまります。コールドスタート、地域レイテンシおよび可観測性は、最も一般的に認識されている課題の一つです。しかし、WebAssembly と Lucet 上に構築された我々のサーバーレスコンピューティング環境である Compute は、これらの問題に対応するための新世代のサーバーレスを導入しています。Compute@Edge がこれらの苛立たしい制約にどのように対応しているか、以下でご紹介します。
コールドスタート
コールドスタートとは、サーバーレスの非アクティブ関数を実行した時に発生する遅延を指し、サーバーレスに関して最も文書化されている問題の1つです。コミュニティにより、サーバーレスの開発者が機能を温存する方法や、コールドスタートがアプリケーションに与える全体的な影響を評価する方法を見つける手段がますます増えています。ベンチマークは様々ですが、コールドスタートでは大体100ミリ秒から4分間の起動遅延をもたらします。現在のソリューションは、カスタムウォーミングシステムから Amazon の Provisioned Concurrency まで多岐にわたっていますが、いずれもシンプルあるいはサーバーレスなものではありません。
しかし、私たちの考えは違いました。コールドスタートを避けるために複雑なシステムを構築するのではなく、単純にコールドスタートを完全に防ぐことができるとしたらどうでしょうか?コールドスタートが「コールド」である理由は、機能を実行する温かく準備の整った利用可能なコンテナがないためです。V8 上に構築されたプラットフォームでも、ミリ秒レベルの起動時間がかかります。しかし、Compute 用の独自 WebAssembly ベースのコンパイラとランタイムを構築しているため、その起動時間は市場に出回っている他の製品に比べ100倍も速くなっています。
コールドスタートを排除することで、サーバーレスコンピューティングの新たな可能性が広がったのです。レイテンシの大幅な削減は、サーバーレスモデルを使用して構築できないアプリケーションがほとんどないことを意味しています。
地域レイテンシ
地域レイテンシも、予測不能な原因のひとつです。一般的なサーバーレスソリューションでは、サーバーレスロジックを実行する地域を1つだけ選択するよう求められますが、単一地域からのリクエストに限定対応しているのでない限り、単一地域だけ選択することにあまり意味はありません。特定のロケーションに世界中からのリクエストが集中した場合、オーディエンスの大半が追加レイテンシの影響を受けることになります。
一方、Compute は、エンドユーザーからほんの数ミリ秒しか離れていない、世界中の何千ものサーバーでロジックを同時実行するようにデザインされているので、一元化されたクラウド地域でのロジック実行に伴う往復レイテンシがなくなります。
可観測性
優れたサーバーレスが運用上の課題を軽減するとしても、アプリケーションアーキテクチャ自体が複雑化していることは否定できません。アプリケーションには複数のマイクロサービスが含まれ、複数のクラウド上で実行され、複数の CDN を利用しているのが一般的です。異種混在、そして分散化が進むシステム全体のパフォーマンスをエンドツーエンドで把握することは簡単なことではありません。
この問題に対処するために、エンタープライズソフトウェアのカテゴリー全体が費やされています。しかし、サーバーレスコンピューティングプラットフォームでは、インフラの他の部分のような幅の広さと深さのある分析は得られません。万一問題が発生した場合、問題を診断して修正するのは非常に困難です。
Compute は Fastly の特長でもあるリアルタイムログに基づいて構築されており、ロギング、トレース機能、詳細なリアルタイムメトリックス を提供しています。これにより、業界標準のツールを使用してパフォーマンスとトレースデータを公開し、サードパーティのシステムにエクスポートできます。また、このデータを使用してメトリクスに任意の値を割り当てるなど、ビジネスプロセスを強化できるため、停止やエラーによる収益への影響を測定することができます。
最後に特筆すべきは、Compute の予測可能性へのアプローチは、パフォーマンスや可視性だけでなく、セキュリティにも対応している点です。Compute@Edge は分離技術を用いることで、プラットフォームを通過するリクエストごとにサンドボックスを作成および破棄します。これにより、セキュリティ脆弱性、サイドチャネル攻撃の全クラスが排除され、全体的に攻撃対象域を最小限に抑えながら拡張性とパフォーマンスを維持することが可能になります。
境界のない構築
ここまで読んだ方は、アプリケーションのパフォーマンスにとって、より高い予測可能性と可視性を持つロジックを実行すること がどのような意味を持つのかについて、すでにお考えのことと思います。このことは、皆さんと会社にとってより速く行動するための手助けとなるでしょう。さらに詳しく掘り下げたい方は、ぜひ Compute のベータ版 (Beta) にご参加ください。
たった10個以下のコマンドで、サービスを作成し、テンプレートをデプロイし、アプリケーションが世界中で実行されているかどうかをチェックすることができます。また、完全なドキュメントや、レシピやテンプレート、サーバーキットなどが含まれた開発者ハブによってサポートされており、エッジでの作成が容易になります。今すぐ登録して、Compute に関する最新情報をメールで受け取ってください。