サーバレスコンピューティング(以下、サーバレス)について色々と調べる機会があったので、その内容をまとめます。
言葉の定義について
まず、サーバレスという言葉の定義を明確にします。様々なサイトでサーバレスという言葉が使われており、ほぼ同じことを意味していますが、微妙に異なることもあるので、拠り所を持って言葉を定義します。
今回、言葉の定義の拠り所としたのは、 CNCF が作成した Serverless Whitepaper v1.0 である。 CNCF とは、 Cloud Native Computing Foundation の略で、 Linux Foundation のプロジェクトの1つである。このプロジェクトは、コンテナ技術の推進と、その進化を取り巻くテクノロジー業界の足並みを揃えることを目的として、 2015 年に創設された財団である。 (Wikipedia より)
ホワイトペーパーについて
このホワイトペーパーでは、まず、作成の目的が次のように書かれています。
This paper describes a new model of cloud native computing enabled by emerging “serverless” architectures and their supporting platforms. It defines what serverless computing is, highlights use cases and successful examples of serverless computing, and shows how serverless computing differs from (and interrelates with) other cloud application development models such as Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS), and container orchestration or Containers-as-a-Service (CaaS).
CNCF Serverless Whitepaper v1.0 より
要約すると、「サーバーレス アーキテクチャがどのように実現されるかを説明し、さらに他の IaaaS や PaaS 、 CaaS とどのように異なるかを説明する。」と述べており、まさにサーバレスを定義するための文章であることがわかります。
サーバレスの定義
このホワイトペーパーの中で、サーバレスは次のように定義されています。
Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment.
CNCF Serverless Whitepaper v1.0 より
この定義を一言で言うと、「サーバーレスとは、サーバ管理を必要としないアプリケーションを構築して実行するという概念」です。ただ、単にサーバ管理を必要としないと言うだけでは曖昧なため、次のように続けられています。
Serverless computing does not mean that we no longer use servers to host and run code; nor does it mean that operations engineers are no longer required. Rather, it refers to the idea that consumers of serverless computing no longer need to spend time and resources on server provisioning, maintenance, updates, scaling, and capacity planning. Instead, all of these tasks and capabilities are handled by a serverless platform and are completely abstracted away from the developers and IT/operations teams. As a result, developers focus on writing their applications’ business logic. Operations engineers are able to elevate their focus to more business critical tasks.
CNCF Serverless Whitepaper v1.0 より
サーバーレスは、次の作業をプロバイダに任せられ、時間とリソースを費やす必要がなくなる環境でアプリを実行することです。
- サーバーのプロビジョニング
- メンテナンス
- 更新
- スケーリング
- 容量計画
サーバレスの 2 つの形態
次に、サーバレスの形態として、「 FaaS: Function-as-a-Service 」と「 BaaS: Backeend-as-a-Service 」の 2 つの形態が提供されると定義されています。また、それぞれの形態は次のように定義されています。
Functions-as-a-Service (FaaS), which typically provides event-driven computing. Developers run and manage application code with functions that are triggered by events or HTTP requests. Developers deploy small units of code to the FaaS, which are executed as needed as discrete actions, scaling without the need to manage servers or any other underlying infrastructure.
CNCF Serverless Whitepaper v1.0 より
FaaS: イベント駆動型で、イベントまたは HTTP リクエストによって起動される関数アプリです。小さなコード単位をデプロイし、必要に応じて個別のアクションとして実行され、インフラを管理しなくてもスケーリングします。
Backend-as-a-Service (BaaS), which are third-party API-based services that replace core subsets of functionality in an application. Because those APIs are provided as a service that auto-scales and operates transparently, this appears to the developer to be serverless.
CNCF Serverless Whitepaper v1.0 より
BaaS: アプリに必要な機能を提供するサードパーティの API ベースのサービスです。これらの API は、自動スケーリングするため、開発者にはサーバーレスのように見えます。
サーバレスがもたらすメリット
次にホワイトペーパーでは、サーバレスがもたらすメリットを 2 つ説明しています。一つは「 Zero Server Ops 」、もう一つは「 No Compute Cost When Idle 」です。
前者の「 Zero Server Ops 」のメリットは、サービスを運用する上で生じるコストをできるだけ削減することです。すなわち、例えば、アプリの管理、運用だけでなく、そのための教育をサーバレスを利用することで削減することができると言うメリットがあります。
後者の「 No Compute Cost When Idle 」のメリットは、言葉の通りアプリが利用されなければ、コストがかからないことです。このことが理由かは不明ですが、各社が提供するサーバレス・サービスは、実際に処理にかかった時間で課金されます。
各クラウドプロバイダが提供する FaaS
3 大クラウドプロバイダが提供するサーバレスサービスは、次のようになります。サービスの機能的な違いについては、別で調査することにして、ここでは課金モデルについてのみ比較すると次のようになります。
プロバイダ | サービス名 | 課金の特徴 |
---|---|---|
AWS | lambda | 実行回数と実行時間による課金。実行時間による課金は、実行環境として予め設定したメモリサイズによって単価が決まり、単価かける処理時間でコストが決まる。 |
Azure | Functions | 実行回数と実行時間による課金。実行時間による課金は、実行環境で消費したメモリサイズに応じて単価が決まり、単価かける処理時間でコストが決まる。 (時間課金プランもあり) |
GCP | Cloud Functions | 実行回数と実行時間による課金。実行時間による課金は、実行環境で予め指定した環境のスペック (CPU とメモリサイズのペア) に応じて単価が決まり、単価かける処理時間でコストが決まる。 |
FaaS サービスの比較
課金モデルとしては、各社同じように、「実行回数と実行時間」で課金されるが、実行時間の単価に考え方の違いがあります。 AWS と GCP では、実行前に開発者が実行環境を指定し、その環境の仕様で単価が決まる課金モデルです。一方で、 Azure の場合、実行後に消費したリソースで単価が決まる課金モデルです。さらに、 AWS ではメモリサイズしか設定できませんが、 GCP の場合、 CPU の性能がそれぞれのメモリサイズに対応づいており、実質的には CPU の性能を選べるようになっています。
まとめ
今回は、最近クラウド サービスを利用して開発いると必ず聞くことになるサーバレス コンピューティングという言葉の定義についてまとめました。各クラウド ベンダーは、この定義を基準にそれぞれ独自のサービスを提供しています。
それらのサービスの同じところと、異なるところについては、今後、調査を進めながら紹介していきます。