サーバーレスアーキテクチャーの仕組みを、米Amazon Web Services(AWS)の「AWS Lambda」を例に説明していこう。サーバーレスアーキテクチャーの基盤は、何らかの処理が必要なイベントをきっかけに動き出す。例えば、ユーザーからのリクエストによってクラウドストレージに書き込みがあった場合などだ。

イベントごとにコンテナーが起動

 イベントが発生すると、AWSが管理する仮想サーバー群に、コンテナー(コード実行環境)が起動する(図2)。このコンテナーでコードを実行。処理が完了してから5分ほど経過すると、コンテナーを消し去る。ただし、コンテナーが消える前に再びイベントが発生したときは、同じコンテナーを再利用する。

図2●サーバーレスアーキテクチャーの動作の仕組み
図2●サーバーレスアーキテクチャーの動作の仕組み
米Amazon Web Services(AWS)の「AWS Lambda」の例。サーバーの処理が必要なイベントが発生すると、プログラム実行環境のコンテナーを動的に生成。処理が完了してから5分ほどでコンテナーを消し去る
[画像のクリックで拡大表示]

 つまり原則的には、処理が必要になるたびにコンテナーが起動し、処理が完了すると消し去る仕組みである。AWSが管理する仮想サーバー群のうち、どれにコンテナーが起動するのかも無作為に決まる。1回のやり取りで状態が初期化するステートレスな仕組みといえる。

 動作の仕組みとは別に、クラウドベンダーの提供形態の観点からもサーバーレスアーキテクチャーを整理しておこう。一般的なPaaSと比較すると分かりやすい。

 一般的なPaaSは、OSやミドルウエア、ランタイム(アプリケーションの実行環境)をクラウドベンダーが用意する。一方、サーバーレスアーキテクチャーのサービスではさらに関数を呼び出す機能もクラウドベンダーが用意する(図3)。

図3●PaaSとサーバーレスアーキテクチャーの提供範囲の違い
図3●PaaSとサーバーレスアーキテクチャーの提供範囲の違い
[画像のクリックで拡大表示]

 従って、アプリケーション開発のITエンジニアが実装すべき部分は、関数に限られる。関数の中で別に定義した関数や、同梱したライブラリを呼び出すことも可能だ。

 なお、サーバーレスアーキテクチャーを実現するクラウドサービスは、Function as a Service(FaaS)と呼ぶこともある。プログラムの主処理を関数ハンドラー(function handler)に書いて実行する仕組みに由来する呼び方である。