トピック

【AWS Lambda】実体験を踏まえてメリットと使いどころを語ってみる

2023/11/27に公開

2023/12/16

AWS
【AWS Lambda】実体験を踏まえてメリットと使いどころを語ってみる

はじめに

手軽で、かつ利用するタイミングが多いLambdaをご存知でしょうか。

本記事では、AWSのサーバレスコンピューティングサービスであるLambdaに関して以下の観点から説明します。

  • Lambdaの概要
  • Lambdaのメリット
  • Lambdaのデメリット
  • Lambdaの使いどころ

AWS Lambdaの概要

ここではLambdaがそもそも何者であるかを説明していきます。Lambdaの詳細も説明しますが、まずはLambdaが分類されるサーバレスコンピューティング、そしてFaaSと順を追って説明していきます。

サーバレスコンピューティングとは

クラウドサービスの一種で、サーバ不要(サーバレス)でアプリケーションが開発できるサービスのことを指します。これはどういうことでしょうか?

まず基本的に私達がアプリケーション開発しようとする際に必要なのが、サーバです。これまでは自前でサーバを購入し、諸々構築する必要がありました。(これをオンプレミスと言います)しかし、最近ではEC2などクラウドで必要な台数やスペックを選択して、サーバを利用することができるようになりました。ただこれは例えばクラウドサーバを提供しているベンダーをAWSとすると、AWSがオンプレミスのサーバをクラウドサーバのEC2としてよしなに使えるようにしてくれているわけです。一方でサーバレスコンピューティングは、サーバの存在や状態を我々が特に把握せずにアプリケーションが構築できるということです。

具体例を挙げてみます。従来のサーバでは、プログラムコードを書いてそれを実行するとなると、ビルドなどの処理が発生します。またOSを管理しないといけません。一方でサーバレスコンピューティングでは、例えばプログラムコードを書いて連携するだけで、自動で必要な処理を実施してくれます。OSの管理も不要です。

他にも負荷分散なども自動で行ってくれます。従来のサーバでは、例えばサーバを2台自分で用意して、それぞれにリクエストが分散されるように設計・実装しないといけません。一方でサーバレスコンピューティングでは、何もせずとも負荷量に応じて自動で調整してくれます。

まとめると、「私達がサーバを認識しないでも上手いことやってくれる、簡単にアプリケーション開発できるサービス」と言うところでしょうか。

FaaSとは

FaaSとはFunction as a Serviceの略称です。関数として提供するサービス、でしょうか。FaaSはサーバレスコンピューティングの中の1つです。個々の関数として実装し、必要な時にその関数を呼び出して実行する形です。「必要な時」をトリガーとして定めておいて、それを基に実行されます。

例えば、「毎日12:00になった時(必要な時)、関数Aを実行する」などです。

Lambdaは結局何者?

お待たせしました。では結局Lambdaが何者かと言うと、「AWSが提供するサーバレスコンピューティングの内のFaaSである」です。

簡潔にまとめると以下のようになります。

  • クラウド上でプログラムを書く事で実行できるサービス
  • サーバがあることを意識しなくて良いサービス

Lambdaのメリット

前述したところと被る点もありますが、Lambdaのメリットを挙げていきます。

  • 負荷量に応じて自動的にスケーリングする
  • 従量課金制であるので、使った分だけ課金される
  • そもそもサーバ(EC2)より非常に安い
  • 様々なトリガーを設定できる
  • 使用できるプログラミング言語の幅が広い

私の経験上、特に①コストが安い点、②様々なトリガーを設定できる点が優秀であると考えます。①に関して、Lambdaは何と無料枠で1ヶ月辺り100万件のリクエスト処理まで行えます。個人で使う分には、コストが発生したことがありません笑

②に関して、例えば「EventBridgeで作成したイベントが発生したら~」や「S3に格納されたら~」などと本当に様々なトリガーを設定できます。これはつまり使い道の幅が非常に広いのです。サーバを立てるより前に、まずは「Lambdaで実装できないか?」を考えてから、設計すると良いと思います。

Lambdaのデメリット

良い事ばかり並べてきたLambdaですが、勿論デメリットもあります。

  • Lambda特有の関数の作り方を学ぶ必要がある
  • 実行時間に制約がある
  • エラーが出た際に問題の切り分けが難しい傾向にある

特に実行時間に制約がある点に注意です。Lambdaでは実行時間が15分までとなっています。つまり処理に15分以上かかるプログラムは実行できないというわけです。またこれはメリットの裏返しですが、AWS側でよしなにやってもらっているため、エラーが出た際の原因探索がEC2などのサーバと比較すると難しいと私は感じます。

Lambdaの使いどころ

これはズバリ、バッチ処理だと思います。必要な時に応じて処理を単発で行うものですね。何故バッチ処理かと言うと、①必要な時の定義が簡単(トリガーを設定すれば良いだけ)、②都度実行するため、EC2のように常にアプリを動かす必要がないため、実行時に課金されるLambdaの方が有利、です。

バッチ処理を実装したい時は、まずはLambdaを第一候補として考えるようにすると良いです。

まとめ

本記事でLambdaの特徴を私なりに捉えてお伝えしました。端的に言うと、非常に便利で強力なサービスです。Lambdaの使い方を習得することで、できることの幅が広がります。特に駆け出しの際には、ちょっとしたAPIをお試しで動かしてみたい!なんて時にもLambdaは良いと思います。最近はマイクロサービスという言葉も出てきており、マイクロサービスアーキテクチャにも使えます。気になる方は調べてみてください。

実際に実装してみたい方は【2023年11月最新Lambda+SNS】AWSでメールを送ろう! でハンズオンができますので、是非チャレンジしてみてください!

最後までお読みいただきありがとうございました。

トップへ戻る

目次