概要

AWSは10月12日、「AWS Lambda Web Functions」の一般提供(GA)を開始した。これはExpress、Hono、Fastify、Next.jsなど、ポートをリッスンする標準的なNode.jsのHTTPフレームワークを、コード変更やアダプター層を介さずそのままLambda上にデプロイできる新しいサーバーレスのコンピュートフォームファクターだ。従来のイベントハンドラ形式の「Lambda Event Functions」や、新しい「Lambda MicroVMs」と並ぶ選択肢として位置づけられており、サーバーレス環境でもこれまでのWebアプリケーション開発の体験を損なわずに済む点が特徴となる。デプロイはaws lambda-web deploy --name my-web-app --code ./my-appという単一のCLIコマンドで完結し、ソースコードのバンドル、関数の作成、リビジョンの発行、エンドポイントの割り当てまでを自動化し、おおむね1分以内に完了する。

スケーリングと課金の仕組み

Web Functionsの大きな特徴は、1つの実行環境が最大128件の同時リクエストを処理できる点にある。これにより、トラフィックのバーストに対して都度新しい実行環境を立ち上げるのではなく、ウォームな環境を複数リクエストで共有できるようになる。また複数リージョンへのデプロイも単一コマンドで行え、LambdaがグローバルURLを通じて最も低レイテンシーなリージョンへベストエフォートでルーティングする、レイテンシーベースのルーティングも自動で設定される。課金面では「アクティブCPU課金」という新しいモデルを採用し、アプリケーションコードが実際に消費したCPU時間のみを計測する。データベースへの問い合わせや外部API呼び出しなどI/O待ちの時間はほとんどCPUを消費しないため、I/O負荷の高いワークロードではコスト削減につながる可能性がある。現時点での提供リージョンは米国東部(バージニア北部・オハイオ)、米国西部(オレゴン)、アジアパシフィック(東京)、欧州(アイルランド)の5リージョンで、ランタイムはNode.js 24、アーキテクチャはArm64となっている。

東京リージョンでの検証結果

Classmethodによる検証では、東京リージョン(ap-northeast-1)でExpressアプリケーションを実際にデプロイし、変換アダプターを使わずに直接動作することを確認している。aws lambda-web deployコマンドによるhello-worldサンプルおよびカスタムExpressアプリのデプロイは、いずれも24〜26秒程度で完了し、公開URLが即座に発行された。HTTPリクエストは正しいヘッダーとともに適切なレスポンスを返し、Server-Sent Events(SSE)でも約1秒間隔(実測993〜1002ms)で安定した配信が確認できたという。東京リージョンの料金は、リクエスト数が100万件あたり0.30ドル、アクティブvCPUが1vCPU秒あたり0.0000322421ドル、メモリが1GB秒あたり0.0000042688ドルで、従来のLambdaがメモリとCPUをまとめて課金するのに対し、Web FunctionsはアクティブなCPU時間のみを課金対象とする点が異なる。

今後の展望

AWSはWeb Functionsについて「アダプターも不要、インフラ管理も不要、フレームワークのロックインもない」と説明しており、グローバルな利用者にサービスを提供する際に複数のインフラ構成要素を組み合わせたり、Lambdaの制約に合わせてコードを書き換えたりする複雑さを解消することを狙いとしている。想定される用途としてはサーバーサイドレンダリング、APIバックエンド、AI推論エンドポイントなどが挙げられている。一方でClassmethodの検証者は、リクエスト頻度が高いワークロードでは実行環境の効率が向上するものの、コールドスタートが問題にならないようなアクセス頻度の低いシナリオでは、従来型のLambdaの方がコスト面で有利な場合があると指摘しており、ワークロードの特性に応じた選択が今後の実運用における検討点になりそうだ。