初めてのLambda|AWS初心者向けに使い方やメリットを紹介

スポンサーリンク
この記事は 約9 分で読めます。

今回は、AWSサービスの1つである「Lambda」について使い方や使う場面、メリットなどについてご紹介します。

スポンサーリンク

AWS Lambdaとは?

AWS Lambda(以下、Lambdaのみ)は、AWSが提供するサーバーレスでプログラムを実行できる環境です。

理系王子
理系王子

AWSにはEC2(仮想サーバー)やECS(コンテナサービス)などのサーバーを使ったサービスがありますが、Lambdaはこれらと対極となるサーバーレスのサービスです。

こまり猫
こまり猫

サーバーレスはサーバーがないという意味なんだろうけど、具体的にはどんなメリットがあるの?

なつめ黒猫
なつめ黒猫

サーバーレスのメリットは色々あるけど、サーバーOSやアプリケーションサーバーなどのソフトウェアの準備やインスタンス起動などが不要になる点が挙げられるよ。

Lambdaを使えばそんな準備をすることなく、簡単にプログラムを実行することができちゃうよ。

スポンサーリンク

LambdaとEC2を比較

AWSの代表的な仮想サーバーのサービスであるEC2とLambdaを比較してみます。

LambdaEC2
インフラ環境ほぼ設定不要オートスケール設定やインスタンス設定
サーバー設定ほぼ不要(メモリ程度)OS、ストレージ、ネットワークを設定
運用・メンテナンス不要実行環境の最適化や修正パッチなどの対応
課金対象実行時間のみ課金インスタンス起動中は常に課金対象
並列処理デフォルトではアカウントにつき最大1000の同時実行サーバー内での並列分散処理だけでなく、オートスケールでのスケールアウト
実行時間の上限15分※制限なし
メモリの上限メモリ最大10GB※メモリ最大24TB※
ディスク上限512MBEBSでは最大16TB※
使用言語Java, Node.js, C#, Pythonなど特に制限なし

※2021年8月時点での値です。

こまり猫
こまり猫

EC2と比較すると、Lambdaはサーバー構築で必要となるインフラやサーバーの設定だけでなく、運用やメンテナンスもほとんど不要なことが分かるね!

なつめ黒猫
なつめ黒猫

一方で、メモリ上限や並列処理数などが小さく、1つの関数につき最大で15分しか実行できないという制約があるので、EC2に比べると自由度は大きく下がるかな。また使えるプログラミング言語も限られるので、オンプレミスのサーバをAWS移植する場合にLambdaでサーバーレスに使用とすると、かなりハードルが高くなるよ。

理系王子
理系王子

次の章では、具体的にどんなケースでLambdaを使ったアーキテクチャが良いのかについてご紹介します。

どんな時にLambdaを使うのが良い?

Lambdaをよく使うユースケースについてまとめてみました。

  • スマホアプリやWebページのバックエンド
    • API GatewayをHTTPエンドポイントとし、HTTP経由でLambda関数を呼び出す
    • 1つ1つの処理は小さいのでLambdaの方がコストが低く、運用負荷も小さい
    • 負荷に応じて自動でリソース拡張(EC2のオートスケール用のような設定は不要)
    • AppSyncからLambdaの呼び出しもできる
  • ログ処理、データ処理
    • 収集したログの分析や抽出をLambdaで行い、S3などへ保存
    • ログを一度S3に溜めてからLambdaを実行するなど疎結合な構成も可能
    • Kinesis Data StreamsやSQSと組み合わせて、Lambdaに流れるデータ量を調可
  • ファイル処理
    • S3に画像ファイルが置かれたことをトリガーとして、ファイルのリサイズしてサムネイル用画像を作成できる
    • テキストの文字コード変換、ファイル圧縮などにも応用できる
  • IoTデータ処理
    • AWS IoTからアップロードされる大量データを、仕分けしてステータス別に他のLambda関数に処理させる
    • IoTデータに対応するDB値の更新や、ログとしてS3に保存
理系王子
理系王子

個人的にはモバイルアプリの開発で、HTTPエンドポイント→API Gateway→Lambda関数で使う場合が多いです。ユーザーの状態値をDBから読み込んで応答したり、ユーザーから指定された状態値に変更するなどの小さい処理はLambdaで設計した方がトータルコストが小さくなります。

スポンサーリンク

Lambdaの使い方

Lambdaは単独で実行することはできません。

Lambdaはトリガーと呼ばれる他のAWSサービスから呼び出されることで実行します。

理系王子
理系王子

例えばウェブアプリの例では、ユーザーがあるボタンをクリックすると、ブラウザはボタンに設定されたHTTPエンドポイントを呼び出します。すると、HTTPエンドポイントが設定されたAPI Gatewayが呼び出され、API Gatewayが設定されたLambdaを呼び出すという構図になります。

なつめ黒猫
なつめ黒猫

下の図のように、Lambdaの関数編集画面ではトリガーとアクセス先が表示されるよ。アクセス先は、Lambda関数にアクセス権があるサービスが表示されるよ。

Lambdaのコスト

Lambdaのコストは以下のようになっています。

リクエストリクエスト 100 万件あたり 0.20USD
実行時間GB-秒あたり 0.0000166667USD

※2021年8月現在の東京リージョンでの料金

なつめ黒猫
なつめ黒猫

リクエストはLambda関数が実行された回数のことだね。実行時間はLambdaに設定したメモリ量によってコストが変わるようになっているよ。Lambdaは関数の実行に対して課金されるので、EC2のように何もしていなくても料金がかかることはないよ。

実際の例でEC2とLambdaのコスト比較

例えば、トラフィックが1回のリクエストでの実行時間が平均1秒月間1万リクエスト、必要なメモリサイズは4GBのワークロードでLambdaとEC2の1ヶ月のコストを比較してみます。

月間1万リクエストLambdaEC2(t3.medium)
リクエスト0.0020 $
実行時間0.6827 $52.8480 $
トータル0.6847 $52.8480 $
なつめ黒猫
なつめ黒猫

結果として、Lambdaの方がコストは約1%と大幅に削減することができました。このようにトラフィックが小さいワークロードではLambdaのコストがかなり安いことがわかります。

一方で、上と同じ条件で月間リクエスト数を1000万とリクエストがかなり多い処理でコストを比較してみます。

月間1000万リクエストLambdaEC2(t3.medium)
リクエスト2.0000 $
実行時間682.6680 $52.8480 $
トータル684.6680 $52.8480 $
なつめ黒猫
なつめ黒猫

結果として、Lambdaの方が約8倍も高額になりました。このようにトラフィックが大きいワークロードでは、Lambdaはあまり使うべきではないということがわかります。

スポンサーリンク

まとめ

今回は、AWSサービスの1つである「Lambda」の使い方やメリットなどの概要についてご紹介しました。

理系王子
理系王子

個人的にはAWSの中で最もお世話になっているサービスなので、EC2やECSを使っている人もLambdaによるサーバーレスを検討してみてはいかがでしょうか?

Pocket

コメント