はじめに
Lambdaの公式ドキュメントを確認すると、
AWS Lambda は、サーバーのプロビジョニングや管理をする必要なくコードを実行できるサーバーレスコンピューティングサービスです。
Lambda は、基盤となるインフラストラクチャ(サーバーメンテナンス、容量プロビジョニング、スケーリング、パッチ適用など)を自動的に管理するので、ユーザーはアプリケーションロジックにフォーカスできます。
となってます!
うーん。。。
初心者には、なんて書いてあるかよく分からない。。。
という訳でLambdaについて噛み砕いていこうと思います!
そもそもAWS Lambdaとは?
AWS Lambdaは、AWSを代表するサーバーレスのサービスです!
サーバーレスと言っても実際にサーバーが無いという訳ではありません。
サーバーなどハードウェア(実行基盤)やミドルウェアはAWS側で管理・メンテナンスをしてくれています。
そのため、使用者はサーバーなどのインフラを意識することなく、開発に集中することができます!

補足ですが、このようなサーバーレスでアプリケーション開発などをできるクラウドサービスのことを「FaaS(Function as a Service)」といいます。
楽ですね!
サーバーの設定をしなくて良いなんて夢みたいです!
Lambda = サーバーレスは分かりました。
では、Lambdaってどんな特徴があるのでしょうか?
Lambdaの特徴について
Lambdaの特徴は大きく3つあります!
それぞれサクッと見ていきましょう!
- イベント駆動型: APIリクエストやAmazon Simple Storage Service(Amazon S3)へのアップロードなど、何かが起きたときだけ動きます。常時待機は不要!
- 対応言語が豊富: Python, Node.js, Java, Go などに対応。言語を選ぶだけで実行環境をAWSが用意してくれます
- 従量課金: 「実行回数 × 実行時間」で課金。動いていないときは0円です。毎月の無料枠もあります
なるほど!
つまり、Lambdaはプログラムだけを開発すれば、あとはAWSがうまいことやって、そのプログラムを実行してくれるって事ですね!
さらに、お金も使用した分だけ料金がかかるというおまけつきで!
Lambdaで何ができる?代表的な使用例3選
さて、Lambdaがサーバーレスで動くイベント駆動型のサービスだということは分かりました。
でも、「実際どんなことに使えるの?」って思いませんか?
ここでは、Lambdaの代表的な使用例をいくつか紹介していきます!
使用例1:画像のリサイズ・変換
ECサイトで商品画像をアップロードしたときに、サムネイル用の小さい画像を自動で生成したい、というケース。
S3と組み合わせて実現します。

サーバーを常時待機させる必要がなく、画像が置かれたときだけ処理が走ります!
使用例2:サーバーレスAPI
WebアプリのバックエンドAPIを、サーバーなしで構築するケース。
Amazon API Gatewayと組み合わせて実現します。

リクエストが来たときだけ動くので、アクセスが少ないときはコストもほぼかかりません!
使用例3:通知・メッセージ処理
会員登録時の確認メールなど、通知系の処理を非同期で実行するケース。
Amazon Simple Notification Service(Amazon SNS)と組み合わせて実現します。

メインの処理とは切り離して動かせるので、システム全体のパフォーマンスに影響しません!
Lambdaってこんなにいろんなことができるんです!
ただ、ここで紹介したLambdaの用途はほんの一部です!
しかし、「○○が起きたら → 自動で△△する」は変わりません!
- ファイルがアップロードされたら → 画像を変換する
- APIリクエストが来たら → データを返す
- メッセージが届いたら → 通知を送る
上記の例のような「イベント駆動で、短時間の処理を自動実行する」というのがLambdaの使用パターンとして多いです!
Amazon Elastic Compute Cloud(EC2)とLambdaの違い|どっちを使うべき?
次にサーバー管理が必要なEC2とLambdaを比較して、その違いを見ていきましょう!
と、その前にEC2について軽く説明をします!
EC2ってなに?
EC2は、AWS上に仮想サーバーを立てて自由に使えるサービスです。
OSの選択からネットワーク設定まで自分でコントロールできるため、汎用性の高いサービスです!
EC2 と Lambda の違い

ざっくり言うと、EC2は「自分で管理する代わりに自由度が高い」、Lambdaは「コードだけ書いてAWSに実行してもらう」サービスです。
それぞれ得意な場面が違います。
どちらが優れているというわけではなく、用途に合わせて使い分けるのがポイントです!
Lambdaの弱点・向いていないケース
ここまでLambdaの良いところをたくさんお話してきましたが、もちろんLambdaも万能ではありません。
Lambdaのデメリットは大きく3つあります!
- 実行時間の制限(最大15分): バッチ処理や機械学習トレーニングなど、長時間かかる処理には不向きです。EC2などを使いましょう!
- コールドスタート: しばらくリクエストがないと初回に100ms〜1秒の遅延が発生します。リアルタイム性が必要なシステム(チャットやゲーム)では注意です
- ステートレス: 実行が終わるとメモリ上のデータは消えてしまいます。データを残したいときはS3やDBに保存しましょう!
弱点を知っておけば、「Lambdaで実装すべきか?」の判断がしやすくなります!
また、Lambdaを「向いている処理」に活用しやすくなります!
まとめ
今回は私の一番好きなサービスのAWS Lambdaについて話してきました。
Lambdaは万能ではありませんが、特徴を理解して適切な場面で使えば、開発がとても楽になるサービスです。
特に「サーバーの管理をしたくない」「短い処理を自動で動かしたい」という場面ではピッタリですね!
AWSには無料枠もあるので、気になった方はぜひ一度触ってみてください!
実際に手を動かしてみると、Lambdaの特徴がより実感できると思います!
以上です!
最後まで読んでいただきありがとうございました!
ソニービズネットワークス 清水がお送りしました!
