「サーバーレスアーキテクチャー」は常時稼働するサーバー(仮想マシン)を極力使わずにシステムを構築するアーキテクチャーを指す。パブリッククラウドサービスが提供する「イベント駆動型コード実行サービス」と呼ばれるサービスを利用して構築するのが一般的だ。
サーバーレスアーキテクチャーではデータの更新などのイベントが発生すると、実行基盤が起動してあらかじめ設定しておいたプログラムを実行する。
必要なときだけ実行環境を利用するため、常時稼働する仮想マシンを利用してシステムを構築するのに比べ、ユーザーはクラウドサービスの使用量の削減が見込める。突発的に処理負荷が増大するシステムでコストを最適化するのに向く。
また仮想マシンが不具合で停止したときの冗長性を考慮したシステム構成を考える必要がなく、運用負担を減らせるメリットもある。
イベント駆動型コード実行サービスには例えば米アマゾン・ウェブ・サービス(Amazon Web Services)の「AWS Lambda」、米マイクロソフト(Microsoft)の「Azure Functions」、米グーグル(Google)の「Cloud Functions」などがある。
例えばAWS Lambdaの場合、サーバーレスアーキテクチャーの動作する仕組みは以下のようになる。
システムに処理リクエストが発生すると、AWSの仮想サーバー上にコード実行環境であるコンテナが起動する。このコンテナ上で設定された処理を実行し、処理が完了してしばらくたつとコンテナは削除される。コンテナが削除される前に同じ処理を実行するリクエストが発生した場合は、同じコンテナを使って処理を実行する。
サーバーレスアーキテクチャーでは、アプリケーションに求められる設計が仮想マシン常時稼働型のシステムとは異なることに注意が必要だ。
例えばアプリケーションの開発においては、処理のセッション情報を保持しない「ステートレス」な設計や同じ処理を繰り返しても同じ結果を得られる「冪等性(べきとうせい)」を考慮して実装する必要がある。