サーバー上で動作して、HTTPリクエストやAPI呼び出しを待つ永続的なプロセスはない。代わりに、AWSのサーバーのひとつで、コードの断片、通常は単なる関数の実行をトリガーするためのイベントメカニズムがある。
このパラダイムを使うと、サーバーのことを考える必要がなくなる。重要なのは、特定のイベントの発生時に実行されるコードを書くことだけだ。コードを実行するサーバーを見つけて必要に応じてスケールさせるのは、クラウドプロバイダーがやってくれる。関数を実行するのに使われるコンテナは、その実行が終了すると即座に廃棄される。そして、コードの実行は100ms単位で計測され、使ったリソース分だけ課金される。このタイプのサービスをFaaS(Function-as-a-Service)と呼ぶ人もいる。
サーバーレスアーキテクチャはナノサービスと相性が良い。マイクロサービスが比較的小さなビジネス機能を解決するためのプロセスだとすれば、ナノサービスはそれぞれの機能の一部を扱うものだ。例えば、マイクロサービスがアカウントの全CRUD操作を実行するのに必要なコードで表現されるとしたら、個別のアカウント操作(Create、Read、Update、Delete)ごとにナノサービスがあるということだ。
サーバーレス関数が単に「データベースへのアクセスをラップする小さなコードの断片」
サーバーレスアプリケーションでは、アプリケーション動作はサードパーティサービスを組み合わせて作られます。クライアントサイドのコントロールフローと動的なコンテンツ生成が、サーバーサイドのコントローラーの代わりをします。リッチなJavaScriptアプリケーション、モバイルアプリケーション(そして、ますます増えているTVや組み込みIoTアプリケーション)は、APIの呼び出しとクライアントサイドUIフレームワークを使うことで、様々なサービス間のやりとりをまとめて、動的なコンテンツを生成します。
Serverless Inc.がServerless Frameworkを作っているのはそのためだ。これはFaaSを使ったWeb、モバイル、IoT向けアプリケーションの構築を助けるオープンソースプロジェクトだ
functionまでサービス化もしくは抽象化とのことですね。大変勉強になりました。