AWS Lambda
サーバーを管理せずにコードを実行できるサーバーレスコンピューティングサービス
何ができるか
AWS Lambda は、サーバーの準備や管理を一切行わずに、プログラムのコードを実行できるサービスです。コードをアップロードするだけで、リクエストやイベントに応じて自動的に実行されます。実行中だけ課金されるため、コードが動いていない時間には一切費用がかかりません。Python、Node.js、Java、Go など主要なプログラミング言語に対応しています。
どのような場面で使うか
API のバックエンド処理、画像のリサイズやサムネイル生成、ファイルアップロード時の自動処理、定期的なバッチ処理、IoT デバイスからのデータ処理、チャットボットの応答処理など、イベント駆動型の処理全般で利用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
タクシーに例えるとわかりやすいでしょう。自家用車 (自前のサーバー) を持つと、駐車場代や保険料が常にかかります。タクシーなら乗った距離と時間だけ支払えばよく、使わないときの維持費はゼロです。Lambda も同じで、コードが実行された回数と時間だけ課金される仕組みです。
Lambda とは
AWS Lambda は、2014 年に登場したサーバーレスコンピューティングの先駆けとなるサービスです。従来のサーバー運用では、OS のアップデート、セキュリティパッチの適用、負荷に応じたスケーリングなど、多くの管理作業が必要でした。Lambda はこれらをすべて AWS が自動で行うため、開発者はビジネスロジックの実装に集中できます。
主な特徴
Lambda の最大の特徴は、完全な従量課金制です。リクエスト数と実行時間 (ミリ秒単位) に基づいて課金され、月間 100 万リクエストと 40 万 GB 秒の実行時間が無料枠として提供されています。また、同時に数千のリクエストが来ても自動的にスケールアウトするため、トラフィックの急増にも対応できます。最大 10GB のメモリと 15 分の実行時間を設定でき、軽量な処理から中規模の処理まで幅広くカバーします。
イベント駆動の仕組み
Lambda はイベント駆動型のアーキテクチャを採用しています。S3 にファイルがアップロードされたとき、API Gateway に HTTP リクエストが届いたとき、DynamoDB のデータが更新されたとき、スケジュールされた時刻になったときなど、さまざまなイベントをトリガーとして Lambda 関数を自動実行できます。この仕組みにより、複数の AWS サービスを組み合わせた柔軟なワークフローを構築できます。
制約と注意点
Lambda にはいくつかの制約があります。1 回の実行時間は最大 15 分に制限されているため、長時間かかる処理には向きません。また、関数の起動時に数百ミリ秒から数秒の遅延 (コールドスタート) が発生する場合があります。頻繁に呼び出される関数ではこの遅延は軽減されますが、リアルタイム性が求められる処理では考慮が必要です。Provisioned Concurrency を設定すれば、事前に実行環境を温めておくことでコールドスタートを回避できます。
はじめかた
Lambda を使い始めるには、AWS マネジメントコンソールで Lambda ダッシュボードを開き、「関数の作成」をクリックします。ランタイム (プログラミング言語) を選択し、コードをインラインエディタで記述するか、ZIP ファイルとしてアップロードします。テストイベントを作成して実行すれば、すぐに動作を確認できます。本格的な開発では AWS SAM や Serverless Framework を使ってコードとインフラを一括管理するのが一般的です。
Azure・オンプレミスとの比較
AWS の優位点
- 月間 100 万リクエスト・40 万 GB 秒の無料枠が永続的に提供され、小規模アプリケーションを実質無料で運用できる
- S3、DynamoDB、API Gateway、EventBridge など 200 以上の AWS サービスとネイティブに統合されており、イベント駆動型アーキテクチャを最小限のコードで構築できる
- Provisioned Concurrency によりコールドスタートを排除でき、レイテンシに敏感なワークロードでも安定した応答時間を実現できる
注意点
- 実行時間の上限が 15 分のため、長時間かかるバッチ処理には EC2 や ECS の利用を検討すること
- コールドスタートによる遅延が発生する場合があるため、レイテンシに敏感な処理では Provisioned Concurrency の利用を検討すること
- 無料枠が月間 100 万リクエストと寛大なため、小規模なアプリケーションであれば実質無料で運用できる
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。