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回の実行回数までは無料となっているので、興味がある方は是非試してみください。