Lambdaとは?AWSで実現するサーバーレスアプリケーション例
「Lambdaとは何だろう?」
「Lambdaを使ってどんなアプリケーションを作ることができるのだろう?」
そんな疑問がありませんか?
サーバーレスは事例が増えるにつれ注目を集めています。このため、「サーバーレスを知らないので、まずは概要を知りたい」と思っている人も多いのではないでしょうか?
では、Lambdaとはどのようなサービスなのでしょうか?また、Lambdaでサーバレスアプリケーションの例にはどのようなものがあるのでしょうか?
この記事ではLambdaとそれを利用したサーバーレスアプリケーション例を紹介します。
Lambdaとは
Lambdaとは、イベントに応答してあらかじめ関数として登録したコードを実行するコンピューティングサービスです。
実行したい処理を記述したプログラムをLambda関数としてあらかじめ登録します。そして、関数実行の際、Lambdaコンテナを作成して関数を実行します。そして関数の実行が終了するとLambdaコンテナが消滅します。このように関数実行時にしかサーバーがないために「サーバーレス」と言われています。
Lambdaのメリット
Lambdaの最大のメリットは「インフラ環境のメンテナンスはAWSが全て行ってくれるため、利用者は管理・運用の考慮が不要」という点です。このため、利用者はアプリケーションの開発に集中できます。
また、負荷状況に応じて実行環境が自動的に作成、平行で実行されるため、高いスケーラビリティのシステムを構築できます。
コスト削減につなげることができる点もLambdaのメリットです。Lambdaは実行時間とLambda関数の実行回数で課金されます。実行していない場合は課金されません。また、実行回数が毎月1,000,000件までは無料で利用できます。
Lambdaのデメリット
規定の書式に従ってLambda関数を作る必要があるため学習コストがかかります。また、既存プログラムの場合は作り直しが必要です。
実行時間にも制約があります。Lambda関数の最大実行時間は5分です。5分を超えての実行はできません。このため、5分を超える実行時間がかかる処理の場合、EC2など別環境で対応する必要があります。
Lambda関数の実行可能なAWSリソース
Lambda関数はAWSリソースのイベントで実行されます。なお、Lambda関数を実行できるAWSリソースには以下があります。
- Amazon S3:ストレージサービス
- Amazon SES:メールサービス
- Amazon DynamoDB:データベースサービス
- CloudWatch Events:イベントのほぼリアルタイムストリームを提供
- API Gateway:クライアントから受け取ったリクエストをそれぞれのサービスにルーティングするサービス
- その他多数
これらのAWSリソースからLambda関数が実行される
例えば、以下のような場合です。
- 別のプログラムでAmazon S3に特定のファイルが作成されたことをトリガーにLambda関数を実行
- Amazon SESで特定の件名のメールが届いたことをトリガーにLambda関数を実行
このようにAWSリソースで発生したイベントがトリガーとなり、Lambda関数を実行させることができます。
Lambdaを活用したサーバーレスアプリケーション例
ここではLambdaを利用したAWSサーバーレスアプリケーションの例を紹介します。
ランディングページより登録された顧客情報をDBに登録
上記のサーバーレスアプリケーションは、ランディングページから登録された顧客情報をDBに登録する処理です。
一般的に、このようなアプリケーションを構築する場合はWebサーバーを準備します。また、顧客情報を格納するDBサーバーも準備します。
そして、ランディングページをWebサーバーに、DBへの顧客情報登録処理をDBサーバーに準備します。
とはいえ、Webサーバーの準備やDBサーバーの準備にはそれなりに手間がかかります。
一方、サーバーレスアプリケーションの場合はサーバーを立てる必要がなく、以下のAWSリソースに必要な処理を準備するだけです。
Amplify
LP用ページを準備。ユーザーがアクセスするとランディングページを表示します。
API Gateway
ユーザーが送信した顧客情報をリクエストとして受付します。リクエストの受付後、これをトリガーとしてLambda関数を起動します。
Lambda
ユーザーが登録した顧客情報をDynamoDBに格納する関数を登録します。API Gatewayでリクエスト受付後に起動されます。また、DynamoDBへの格納後にSESを呼び出します。
SES
DynamoDBへの格納結果をメールでユーザーに送信します。
構築コストの考察
ここでは構築コストについて考察します。サーバーレスアプリケーションはサーバー構築が無い分、サーバーアプリケーションなに比べてコストを抑えて構築することができます。
また、各AWSリソースには予め処理に必要な機能が用意されており、利用者は必要な処理を実装するのみでアプリケーションを構築できます。このため、アプリケーションの構築でもサーバーレスアプリケーションはサーバーアプリケーションに比べてコストを抑えて構築することができます。
まとめ
この記事では、Lambdaとサーバーレスアプリケーションを例紹介しました。
Lambdaとは、イベントに応答してあらかじめ関数として登録したコードを実行するコンピューティングサービスです。Lambdaに登録した関数をAWSリソースから呼び出すことで実行できます。
サーバーレスは現在注目を集めているアーキテクチャーです。Lambdaは1,000,000回の実行回数までは無料となっているので、興味がある方は是非試してみください。