CNCF WG-Serverless Whitepaper v1.0を読みました

CNCF WG-Serverless Whitepaper v1.0を読みました

Cloud Native Computing Foundation が「サーバレス」についてまとめた白書、CNCF WG-Serverless Whitepaper v1.0 を読みました。

以下の内容が説明されていました。

  • サーバレスコンピューティング
  • 他のクラウドネイティブな技術とサーバレスの違いは何か
  • サーバレス処理モデル

簡単に要約します。


サーバレスコンピューティングとは何か

サーバレスコンピューティングのサービスは、一般的に Function-as-a-Service (FaaS)と Backend-as-a-Service (BaaS)の2種類に分かれます。

サーバレスコンピューティングが開発者にもたらすメリットは、サーバ管理作業がゼロになること (Zero Server Ops)とアイドル時間のコストが不要になること (No Compute Cost When Idle)の2点です。

最も古いサーバレスコンピューティングのサービスは、2006 年の Zimki とされています。2012 年に Firebase、2014 年に AWS Lambda、2016 年に Azure Cloud Functions が続きます。

サーバレスコンピューティングの用途は、マルチメディア処理、チャットボット、バッチジョブなど多岐に渡ります。

他のクラウドネイティブな技術とサーバレスの違いは何か

他のクラウドネイティブな技術として、コンテナオーケストレーションと PaaS が挙げられています。

コンテナオーケストレーションの特徴は、インフラに対する完全なコントロールとポータビリティの高さです。PaaS の特徴は、管理・デプロイの簡単さ、オートスケーリング、よくある状況に対してサービスが事前に準備されていることです。

それらと比較したサーバレスコンピューティングの特徴は、インフラ管理の必要性が極小であること、実行した分だけ負担すれば良いコストモデル(Pay as you go)の2点とされています。

それぞれの特徴を踏まえて、どの技術を選定するべきかチェックポイントがまとめられています。

サーバレス処理モデル

特定のサービス、実装から独立した一般的なサーバレス処理のモデルが示されています。例えばファンクション実行のトリガーとして次の4つが示されています。

  • 同期リクエスト
  • 非同期メッセージキューリクエスト
  • ストリーム
  • バッチジョブ

要約は以上です。

Firebase のリリースが 2012 年と、AWS Lambda のリリースの 2014 年よりも早かったというのは意外でした。

サーバレス処理モデルは、AWS Lambda などいわゆる FaaS のサービスを理解するためのガイドとして有効だと思いました。

サーバレス処理モデルの「バージョニングとエイリアス」の項で、「ブランチとフォーク(古いバージョンのコードを更新すること)」について、現時点ではほとんどのサービスで実装されていないが将来的に実装されることが望まれるとの記載がありました。AWS Lambda や Azure Functions など、主要な FaaS がこの点を今後どのように対応するのか確かめたいと思いました。