AWS Lambda は、”サーバレス”でプログラムコードを実行するサービスです。サーバーのプロビジョニングや管理なしでコードを実行できます(※サーバレスだが実際はAWSが仮想マシンを用意して仮想マシン上でプログラムが実行されています)。課金は実際に使用したコンピューティング時間に対してのみ発生し、コードが実行されていないときには料金も発生しません。Lambda を使用すれば、ユーザは仮想マシンを作成や運用したりしなくてよく、仮想マシンの存在を意識することがありません。こういったコード実行の方法を「サーバレスコンピューティング」と呼びます。
!ポイント AWS Lambdaの特徴
特徴 | 概要 |
サーバー管理が不要 | AWS Lambda ではコードを自動的に実行します。サーバーのプロビジョニングや管理は必要ありません。必要なのは、コードを書いて Lambda にアップロードすることのみです。 |
継続的スケーリング | AWS Lambda では、毎回のトリガーに対応してコードを実行することにより、自動的にアプリケーションをスケールします。コードは並行して実行され、トリガーごとに個別に処理され、ワークロードのサイズに合わせて正確にスケールされます。 |
秒以下の単位での計測 | コードが実行される 100 ms ごと、およびコードがトリガーされた回数に対して課金されます。コードが実行されていないときは、料金がまったく発生しません。 |
AWS Lambdaのすぐ使える3つの構成パターン
パターン1:EC2自動起動/停止
【課題】検証環境の仮想マシンを毎朝起動し、利用しない夜間や休日には確実に停止
【構成】Lambdaファンクションでは、CloudWatch Eventと組み合わせて定時タイマー起動ができます。例えば、CloudWatch Eventを設定し、毎朝の始業前にLambdaを呼び出し検証環境の仮想マシンを起動し、深夜にはLambdaで停止させます。
パターン2:ログイン監視
【課題】AWSマネジメントコンソールへのログインを監視
【構成】CloudWatch Eventでマネジメントコンソールへのログインを検知し、Lambdaを呼び出し、SlackのAPI「IncomingWebhooks」をコールします。
パターン3:新着データ投入
【課題】S3に到着したデータを変換しRDSへ投入
【構成】S3へデータが到着した時にLambdaを呼び出し、Lambdaファンクションでデータを加工しRDSへ投入します。
ひと言コメント
Lambdaを使用したサーバレスアーキテクチャへのアプリケーション移行は現実のものになりつつあるが、慎重に移行を検討することをお勧めします。
アーキテクチャの変更による改修費用や運用費用などトータルで検討したうえで決断してほしいと思います。全てを一度に置き換えるのではなく、部分的に変更して徐々に適用範囲を広げるほうが成功確立が上がると思います。