AWS Lambda
サーバーの管理なしにコードを実行できるサーバーレスコンピューティングサービスで、リクエスト数と実行時間に基づく完全従量課金制を採用している
概要
AWS Lambda は、サーバーのプロビジョニングや管理を一切行わずにコードを実行できるサーバーレスコンピューティングサービスです。S3 へのファイルアップロード、API Gateway への HTTP リクエスト、DynamoDB のデータ変更など、200 以上の AWS サービスからのイベントをトリガーとして関数を自動実行します。Python、Node.js、Java、Go、.NET など主要なランタイムに対応し、コンテナイメージでのデプロイも可能です。月間 100 万リクエストと 40 万 GB 秒の無料枠が永続的に提供されるため、小規模なアプリケーションであれば実質無料で運用できます。実行時間の上限は 15 分、メモリは最大 10 GB まで設定可能です。
Lambda のイベント駆動アーキテクチャ
Lambda はイベント駆動型のアーキテクチャを採用しており、何らかのイベントが発生したときにのみ関数が実行されます。同期呼び出し (API Gateway 経由の HTTP リクエストなど) では呼び出し元がレスポンスを待ち、非同期呼び出し (S3 イベント通知など) ではイベントがキューに入り Lambda が順次処理します。イベントソースマッピングを使えば、SQS キューや Kinesis ストリームからメッセージをバッチで取得して処理することも可能です。この仕組みにより、トラフィックがゼロのときはコストもゼロになり、急激なスパイクにも自動的にスケールアウトして対応します。同時実行数はデフォルトでリージョンあたり 1,000 に設定されていますが、引き上げリクエストにより数万まで拡張できます。
コールドスタートと Azure Functions との比較
Lambda の課題として知られるコールドスタートは、関数の実行環境が初めて作成される際に数百ミリ秒から数秒の遅延が発生する現象です。Provisioned Concurrency を設定すれば事前に実行環境を温めておくことでコールドスタートを排除できますが、待機中も課金が発生します。Azure の対応サービスは Azure Functions で、同様にイベント駆動型のサーバーレス実行環境を提供します。Azure Functions の従量課金プランでは実行時間の上限がデフォルト 10 分 (Premium プランでは無制限) であるのに対し、Lambda は 15 分が上限です。また、Lambda は SnapStart 機能 (Java ランタイム向け) により、コールドスタート時間を最大 90% 短縮できる点が Azure Functions にはない独自の強みです。
実務での活用パターン
Lambda は API バックエンド、画像・動画の加工処理、ログの集約・分析、定期バッチ処理、IoT データの処理など幅広い用途で利用されます。実務では API Gateway + Lambda + DynamoDB の組み合わせが最も一般的なサーバーレスアーキテクチャパターンです。Step Functions と組み合わせれば、複数の Lambda 関数を順序制御・並列実行・エラーハンドリング付きで連携させるワークフローを構築できます。AWS SAM や Serverless Framework を使ったインフラのコード管理 (IaC) が推奨されており、CI/CD パイプラインに組み込むことでデプロイの自動化も容易です。