2023/11/27に公開
2023/12/16
手軽で、かつ利用するタイミングが多いLambda
をご存知でしょうか。
本記事では、AWSのサーバレスコンピューティングサービスであるLambdaに関して以下の観点から説明します。
ここではLambdaがそもそも何者であるかを説明していきます。Lambdaの詳細も説明しますが、まずはLambdaが分類されるサーバレスコンピューティング
、そしてFaaS
と順を追って説明していきます。
クラウドサービスの一種で、サーバ不要(サーバレス)でアプリケーションが開発できるサービスのことを指します。これはどういうことでしょうか?
まず基本的に私達がアプリケーション開発しようとする際に必要なのが、サーバです。これまでは自前でサーバを購入し、諸々構築する必要がありました。(これをオンプレミスと言います)しかし、最近ではEC2などクラウドで必要な台数やスペックを選択して、サーバを利用することができるようになりました。ただこれは例えばクラウドサーバを提供しているベンダーをAWSとすると、AWSがオンプレミスのサーバをクラウドサーバのEC2としてよしなに使えるようにしてくれているわけです。一方でサーバレスコンピューティングは、サーバの存在や状態を我々が特に把握せずにアプリケーションが構築できるということです。
具体例を挙げてみます。従来のサーバでは、プログラムコードを書いてそれを実行するとなると、ビルドなどの処理が発生します。またOSを管理しないといけません。一方でサーバレスコンピューティングでは、例えばプログラムコードを書いて連携するだけで、自動で必要な処理を実施してくれます。OSの管理も不要です。
他にも負荷分散なども自動で行ってくれます。従来のサーバでは、例えばサーバを2台自分で用意して、それぞれにリクエストが分散されるように設計・実装しないといけません。一方でサーバレスコンピューティングでは、何もせずとも負荷量に応じて自動で調整してくれます。
まとめると、「私達がサーバを認識しないでも上手いことやってくれる、簡単にアプリケーション開発できるサービス」と言うところでしょうか。
FaaSとはFunction as a Service
の略称です。関数として提供するサービス、でしょうか。FaaSはサーバレスコンピューティングの中の1つです。個々の関数として実装し、必要な時にその関数を呼び出して実行する形です。「必要な時」をトリガーとして定めておいて、それを基に実行されます。
例えば、「毎日12:00になった時(必要な時)、関数Aを実行する」などです。
お待たせしました。では結局Lambdaが何者かと言うと、「AWSが提供するサーバレスコンピューティングの内のFaaSである」です。
簡潔にまとめると以下のようになります。
前述したところと被る点もありますが、Lambdaのメリットを挙げていきます。
私の経験上、特に①コストが安い点、②様々なトリガーを設定できる点が優秀であると考えます。①に関して、Lambdaは何と無料枠で1ヶ月辺り100万件のリクエスト処理まで行えます。個人で使う分には、コストが発生したことがありません笑
②に関して、例えば「EventBridgeで作成したイベントが発生したら~」や「S3に格納されたら~」などと本当に様々なトリガーを設定できます。これはつまり使い道の幅が非常に広いのです。サーバを立てるより前に、まずは「Lambdaで実装できないか?」を考えてから、設計すると良いと思います。
良い事ばかり並べてきたLambdaですが、勿論デメリットもあります。
特に実行時間に制約がある点に注意です。Lambdaでは実行時間が15分までとなっています。つまり処理に15分以上かかるプログラムは実行できないというわけです。またこれはメリットの裏返しですが、AWS側でよしなにやってもらっているため、エラーが出た際の原因探索がEC2などのサーバと比較すると難しいと私は感じます。
これはズバリ、バッチ処理だと思います。必要な時に応じて処理を単発で行うものですね。何故バッチ処理かと言うと、①必要な時の定義が簡単(トリガーを設定すれば良いだけ)、②都度実行するため、EC2のように常にアプリを動かす必要がないため、実行時に課金されるLambdaの方が有利、です。
バッチ処理を実装したい時は、まずはLambdaを第一候補として考えるようにすると良いです。
本記事でLambdaの特徴を私なりに捉えてお伝えしました。端的に言うと、非常に便利で強力なサービスです。Lambdaの使い方を習得することで、できることの幅が広がります。特に駆け出しの際には、ちょっとしたAPIをお試しで動かしてみたい!なんて時にもLambdaは良いと思います。最近はマイクロサービスという言葉も出てきており、マイクロサービスアーキテクチャにも使えます。気になる方は調べてみてください。
実際に実装してみたい方は【2023年11月最新Lambda+SNS】AWSでメールを送ろう! でハンズオンができますので、是非チャレンジしてみてください!
最後までお読みいただきありがとうございました。
目次