コンテンツに移動
サーバーレス

次世代のサーバーレス コンピューティングが見据える大きな進化

2021年12月9日
https://storage.googleapis.com/gweb-cloudblog-publish/images/serverless_2.max-2600x2600.jpg
Google Cloud Japan Team

※この投稿は米国時間 2021 年 12 月 1 日に、Google Cloud blog に投稿されたものの抄訳です。

「サーバーレス」という用語は、生産性、効率性、シンプルさの面で多くのメリットを備えたクラウドネイティブ コンピューティングの自然な進化を端的に表す言葉として、クラウドに関する会話の中で広く使われるようになりました。AWS Lambda や Google Cloud Functions などの最先端の「Functions as a Service」プラットフォームの出現は、クラウドベースのアプリケーションに対する新しい考え方をもたらしました。これは、モノリシックで動作の遅いアプリケーションから、軽量で単一目的のファンクションに基づいた、より分散されたイベントベースのサーバーレス アプリケーションに移行することで、基盤となるインフラストラクチャの管理を不要にするというものでした。

こうした初期のサーバーレス プラットフォームを利用したデベロッパーは、インフラストラクチャに関して判断したり料金を支払ったりする必要がないことのメリットを痛感し、他の従来型ワークロードでもこのメリットを実現したいと考えるようになりました。シンプルな ETL のユースケースであれ、従来のウェブ アプリケーションであれ、デベロッパーはサーバーレス プラットフォームを活用して生産性を向上させ、価値創出までの時間を短縮することを目指しました。

従来のワークロードの多くは、当然ながらほとんどのサーバーレス プラットフォームの前提条件を満たしておらず、大規模かつ重要な従来型アプリケーションを膨大な数のイベントベース ファンクションに書き換えることは、現実的な選択肢ではありませんでした。デベロッパーが求めていたのは、アプリケーションを書き換えたり、本当に実行する必要のあるアプリケーションを吟味したりすることなしに、サーバーレスの重要なメリットを享受できるプラットフォームでした。

Google Cloud のチームは 2019 年に Cloud Run を導入し、サーバーレスに対する市場やお客様の既成概念を変えることを目指しました。中核部分はサーバーレスでありながら、以前のサーバーレス プラットフォームよりも幅広いアプリケーションを実行できるプラットフォームを開発したのです。Cloud Run では、コンテナを基本プリミティブとして使用することでこれを実現しています。リリース後の 2 年間で、このプラットフォームに対して 80 件のアップデート(平均で 10 日に 1 件のアップデート)がリリースされました。お客様による導入も加速し、Cloud Run のデプロイメント数は 2020 年 9 月から 2021 年 9 月の間に 4 倍以上に達しました。  

次世代のサーバーレス プラットフォームでは、第 1 世代が備えていた、次のような価値の高い主要な特性を維持する必要があります。

  • ゼロからの、またはゼロに向けた高速な自動スケーリング

  • 従量課金制モデルのオプション

  • シンプルで使いやすい環境

サーバーレス プラットフォームが今後幅広いワークロードとお客様に対応していくには、より堅牢性の高い各種機能を備える必要があります。ここでは、サーバーレス プラットフォームに関して 2022 年以降に予測される、上位 5 つのトレンドをご紹介します。

1. より多くの(従来型)ワークロードへの対応

サーバーレスの価値提案は、その対象を新しいアプリケーションに限定するものではありません。これまで問題なく動作してきたアプリケーションの大幅な書き換えが発生しないようにすることも重要です。デベロッパーは、既存のものを含む幅広いワークロードでサーバーレスのメリットを実現できなければなりません。

Cloud Run は、次のような新機能により、対応可能なワークロードの範囲を拡大してきました。

  • インスタンスごとの同時実行。従来のアプリケーションの多くは、FaaS プラットフォームでよく見られる単一リクエストモデルの制約を受ける場合、十分に動作しません。Cloud Run では、アプリケーションの 1 つのインスタンスで最大 1,000 件の同時リクエスト を実行できるため、効率性が大幅に向上します。

  • バックグラウンド処理。現行世代のサーバーレス プラットフォームでは、多くの場合、使用されていないファンクションが「フリーズ」されます。これは課金モデルの簡素化(実行時のみの課金)に役立つ一方で、バックグラウンドでの動作を想定したワークロードを実行することが困難になる場合があります。Cloud Run では、新しい CPU 割り当てコントロールがサポートされているため、こうしたバックグラウンド プロセスを想定どおりに実行することが可能です。

  • あらゆるランタイムへの対応。通常、新しいアプリケーションには最新の言語やランタイムが適していますが、既存のアプリケーションの多くは書き換えができないか、サーバーレス プラットフォームがサポートしていない言語に依存しています。Cloud Run は、標準の Docker イメージをサポートしており、コンテナ内で実行可能なあらゆるランタイムやランタイム バージョンを実行できます。

2. セキュリティとサプライ チェーンの統合

最近注目を浴びた SolarWindsMimecast / Microsoft ExchangeCodecov などに対するハッキングでは、ソフトウェア サプライ チェーンの脆弱性が狙われました。悪意のある攻撃者は、不正なコードの送信から、CI / CD パイプラインのバイバスまで、あらゆる手口でソフトウェア サプライ チェーンを侵害します。

Cloud Run は Cloud Build と統合されています。Cloud Build はデフォルトで SLSA レベル 1 に準拠しており、ビルドの来歴を確認できるようになっています。コードの出所を確認することで、バイナリをソースコードまでトレースして、改ざんを防ぎ、実行中のコードが本物のコードであることを実証できます。さらに、新しいビルド整合性機能により、自動的にデジタル署名が生成されます。このデジタル署名は、デプロイ前に Binary Authorization によって検証できます。

3. 柔軟性の高い費用管理と課金

変動の激しいトラフィック パターンを持つワークロードや、一般にトラフィックの少ないワークロードは、サーバーレスが備える高速な自動スケーリングやゼロへのスケーリングといった特性に非常に適しています。一方、トラフィック パターンが比較的安定しているワークロードをきめ細かい従量制課金モデルで実行すると、多くの場合、料金が高くなります。また、制限なしの自動スケーリングが適用されることで、アプリケーションの実行にかかる費用を予測するのが難しくなります。

Cloud Run には、サーバーレス ワークロードの費用の管理と削減に役立つ複数の機能が用意されています。使用パターンが安定していて予測可能な組織は、確約利用契約をお支払いページから直接、大幅な割引価格で購入できるようになりました。前払いは不要で、この割引により 17% も費用を削減できます。

CPU の常時稼働機能によってリクエストごとの料金がなくなるため、標準のリクエストごとの課金モデルよりも 25% 安くなります。このモデルは一般に、トラフィック パターンが予測しやすいアプリケーションや、バックグラウンドでの処理が必要なアプリケーションに適しています。

高可用性を必要とするアプリケーションをグローバルにデプロイする場合、冗長リージョンごとにすべてのグローバル トラフィックに対応できる容量を確保する必要があるため、従来の「固定フットプリント」プラットフォームでは非常に高額な費用がかかる可能性があります。Cloud Run のゼロへのスケーリング機能は、すべての GCP リージョンで利用できるだけでなく、全リージョンに固定された容量を割り当てることなく、アプリケーションをグローバルに分散させることができます。

4. 組み込みのベスト プラクティスを活用した DevOps 統合エクスペリエンス

シンプルさと生産性を向上させることの主な目的は、導入の障壁を減らして、デベロッパーがコードのみに集中できるようにすることです。このシンプルさの適用範囲を「Day 1」運用以降まで拡大し、統合された DevOps エクスペリエンスを提供する必要があります。

Cloud Run は、ソースコードから Day 2 運用ツールまで、エンドツーエンドの DevOps エクスペリエンスをサポートしています。

  • コンテナまたは Buildpacks を使用して、ソースコードから直接コンテナ イメージを作成できます。Docker やコンテナについて学習しなくても、「gcloud run deploy」コマンドを 1 回実行するだけで、コードをビルドし Cloud Run にデプロイできます。

  • Cloud Shell エディタに内蔵されたチュートリアルと Cloud Code を使って、簡単にサーバーレスに関する知識やスキルを身に付けることができます。タブ、ドキュメント、ターミナル、コードの間を何度も往復する必要はありません。また、独自のチュートリアルを作成して、組織内でベスト プラクティスを共有し、新入社員のオンボーディングを迅速化することも可能です。

  • アイデアを簡単にテストできます。数回クリックするだけで、Cloud Run で段階的なロールアウトとロールバック、高度なトラフィック管理を行うことができます。

  • 設定や構成を行うことなく分散トレースにアクセスして、本番環境のパフォーマンス ボトルネックを数分で見つけることができます。

5. ポータビリティ

デベロッパーが記述するコードや実行するアプリケーションは、1 つのベンダーに縛られるべきではありません。ベンダーのプラットフォームが持つメリットは、特定のベンダーに不必要に依存する方法でアプリケーションを書き換えることなしに、アプリケーションに適用されるべきです。

Cloud Run では、標準の Docker コンテナ イメージが実行されます。ソースコードを Cloud Run に直接デプロイすると、オープンソースの Buildpacks を使用してソースコードがコンテナに変換されます。ソースコード、使用した Buildpacks、およびコンテナは、ローカル、オンプレミス、またはその他の任意のクラウドでいつでも実行できます。

最適なソリューション

上記の 5 つのトレンドは、来年市場に登場するさまざまなサーバーレス ソリューションを比較検討するうえで重要です。最適なサーバーレス ソリューションは、言語、ネットワーキング、リージョンの制限なしに広範なアプリを実行することを可能にします。また、安全なマルチテナンシーと、統合された安全なソフトウェア サプライ チェーンも提供します。さらに、そのプラットフォームが費用の抑制に役立つか、統合された DevOps エクスペリエンスを提供しているか、ポータビリティが確保されているか、なども検討する必要があります。これらの項目をすべて確認されたうえで、ぜひこちらのクイックスタート ガイドで Cloud Run をお試しください。

- グループ プロダクト マネージャー Jason Polites

- プロダクト管理ディレクター Aparna Sinha

投稿先