Lambdaとは?イベントで動くAWSの関数実行サービスを解説

システム開発・テクノロジー
Lambdaとは?ざっくりと3行で
  • AWSが提供するサーバーレスのコード実行サービス。関数(Function)単位でコードを登録しておき、指定したイベントが発生したときだけ自動で動く仕組みだ
  • 実行した時間・回数だけ課金される従量課金制で、処理が走っていない間はコストゼロ。月100万リクエストまでは無料枠が使える
  • サーバーの構築・管理・スケーリングをすべてAWSが担うため、開発者はビジネスロジックのコードを書くことだけに集中できる

【深掘り】これだけ知ってればOK!

AWS Lambdaが登場した2014年以前、「コードだけをクラウドに置いて、イベントが来たときだけ実行する」という発想は存在しなかった。Lambdaの登場がサーバーレスというカテゴリそのものを定義し、業界用語として定着させた。

Lambdaの動きをシンプルに説明すると「もし〇〇が起きたら、このコードを動かせ」という命令を事前に登録しておくイメージだ。たとえば「S3に画像がアップロードされたら、自動でサムネイルを生成する」「特定のURLにリクエストが来たら、データベースを検索して返す」といった処理を、サーバーを立てることなく実現できる。

トリガーとなるイベントソースは非常に幅広い。S3・DynamoDB・API Gateway・SNS・SQSなど、AWSの主要サービスのほぼすべてがLambdaと連携できる。これがAWSエコシステムとの強力な親和性と呼ばれる理由だ。対応言語はPython・Node.js・Java・Go・Ruby・.NETなど多数で、既存コードをそのまま移植しやすい点も採用が広がる要因となっている。

Lambdaには実行時間の上限が15分という制約がある。それを超える長時間処理には向かない。また、一定時間アクセスがなかった後の初回起動時に数百ミリ秒〜数秒の遅延(コールドスタート)が発生する。決済・ログイン処理など応答速度が重要な箇所では、最小インスタンス数をProvisioned Concurrencyで確保しておく対策が現場の標準だ。

コスト面での破壊力は特にスタートアップで顕著に出る。従来型の常時起動サーバーなら月数千〜数万円かかるバッチ処理も、Lambdaなら月数十円〜数百円で動かせるケースがある。ただし、常時大量リクエストが来るAPIにLambdaを使うと、従量課金が積み上がってEC2インスタンスより高くなる逆転現象が起きることもあるため、想定リクエスト数に基づいたコスト試算が導入前の必須ステップだ。

よくある誤解

LambdaはAWS専用ではない、は半分正解

同様のサービスはGoogle Cloud Functions・Azure Functionsなど各クラウドに存在する。ただし「Lambda」という固有名詞はAWSのサービス名であり、FaaS全体の総称ではない。会議で「Lambda使おう」と言えばAWSを指すが、「FaaSを使おう」と言えばクラウド選定の話になる。この使い分けを混同すると技術選定の議論がずれることがある。

「サーバーレス=Lambda」ではない

LambdaはサーバーレスのFaaS(Function as a Service)に分類されるが、サーバーレス全体はもっと広い概念だ。S3(ストレージ)・DynamoDB(データベース)・API Gateway(APIエンドポイント)などもサーバーレスなサービスに含まれる。Lambdaはその中のコンピューティング部分を担う一コンポーネントと理解するのが正確だ。

無料枠があるからといってコストを気にしなくていいわけではない

月100万リクエスト・40万GB秒が無料なのは事実だが、Lambda単体の費用だけを見ていると落とし穴がある。LambdaからDynamoDBを読み書きしたり、API Gatewayを経由したりすると連携するサービスの料金も別途発生する。システム全体のコストをAWS Cost Explorerで定期的に確認する習慣が、予算超過を防ぐ最善策だ。

会話での使われ方

ITKAGYO運営者のアイコン画像

この定期レポート生成、月に1回しか動かないのにEC2立てっぱなしはもったいないですよね。Lambdaに移してEventBridgeでスケジュール実行にしたら、コストほぼゼロになると思います。

コスト最適化レビューで、インフラ担当エンジニアがプロダクトマネージャーに改善案を提案している場面。月次バッチ処理のLambda移行は現場で頻出の改善パターンだ。

ITKAGYO運営者のアイコン画像

Lambda、コールドスタートで初回だけ遅いんですよね。決済フローで使うのはちょっと怖くないですか。

技術選定の社内Slack議論で、バックエンドエンジニアが懸念を共有している場面。コールドスタート問題は実務でよく話題になる論点だ。

ITKAGYO運営者のアイコン画像

最初のプロトタイプはLambdaで全部作って、無料枠の範囲で動かしてみます。スケールが見えてきたら構成を考え直します。

副業でWebサービスを立ち上げようとしているエンジニアが、勉強会の懇親会で開発方針を話している場面。個人開発・スタートアップでのLambda活用は定番の選択肢だ。

Lambdaの歴史

Lambdaの登場はサーバーレスという概念の誕生と同義だ。その歩みを追うことで、クラウド活用の進化の流れが見えてくる。

出来事
2014年11月AWS re:Invent 2014でAWS Lambdaが発表・一般提供開始。サーバーレスFaaSという概念が初めて市場に登場した。
2016年Google Cloud FunctionsとAzure Functionsが登場。主要クラウド3社が出揃いFaaS市場が本格化。
2018年Lambdaの最大実行時間が5分から15分に拡張。バッチ処理など長時間ジョブへの適用範囲が広がった。
2019年Provisioned Concurrency(事前ウォームアップ)機能が追加。コールドスタート問題への公式対策が提供された。
2020年以降コンテナイメージでのデプロイに対応(最大10GB)。より大規模なアプリケーションのサーバーレス化が可能になった。
現在AWSの中核サービスとして定着。月間実行回数は数兆回規模とされ、個人開発から大企業まで幅広く活用されている。

【まとめ】3つのポイント

  • 「イベントで起動する関数置き場」:LambdaはS3・API Gatewayなどのイベントをトリガーに指定した処理だけを実行するAWSのサーバーレスコンピューティングサービスだ
  • アイドル時間のコストがゼロになる:従量課金制により、処理が走っていない時間帯の費用は発生しない。スモールスタートや低頻度バッチ処理で特にコスト効果が大きい
  • 15分制限とコールドスタートを事前に把握せよ:長時間処理や応答速度が重要な処理への適用には注意が必要。用途を見極めてから採用するのが実務での正しい判断だ

よくある質問

Q
AWS Lambdaの無料枠はどのくらいですか?
A

毎月100万リクエスト、および40万GB秒のコンピューティング時間が永続的に無料です。小規模な個人サービスや社内ツールであれば、無料枠の範囲内で本番運用できるケースも多くあります。ただし連携するS3・API Gatewayなど他サービスの利用料は別途発生します。

Q
Lambdaで使えるプログラミング言語は何ですか?
A

Python・Node.js・Java・Go・Ruby・.NET(C#)が公式サポートされています。また2020年以降はコンテナイメージでのデプロイにも対応しており、カスタムランタイムを使えばほぼ任意の言語で動かすことも可能です。社内で使い慣れた言語をそのまま持ち込める点は大きなメリットです。

Q
LambdaとAPI Gatewayを組み合わせると何ができますか?
A

サーバーを1台も持たないWeb APIを構築できます。API Gatewayがリクエストの入り口となり、受け取ったリクエストをLambda関数に渡して処理し、結果をレスポンスとして返す流れです。この組み合わせはスタートアップのバックエンドAPIや社内ツールのAPIエンドポイントとして広く活用されています。

Q
LambdaとEC2の違いは何ですか?
A

EC2は仮想サーバーを借りてOSから自分で管理するIaaSで、常時稼働・高トラフィック・細かい制御が必要な用途に向いています。対してLambdaはインフラ管理ゼロでコードだけを動かすFaaSで、イベント駆動・短時間処理・低頻度バッチに最適です。月間リクエスト数が増えるとEC2のほうがコスト的に有利になるため、規模に応じた使い分けが重要です。

【出典】参考URL

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html :AWS Lambda公式ドキュメント
https://www.wafcharm.com/jp/blog/aws-lambda-for-beginners/ :AWS Lambda初心者向け解説
https://www.cloud-for-all.com/blog/aws-lambda-beginner-guide-serverless-basics :Lambdaの使い方・制約・コスト

コメント

「IT用語、難しすぎて心が折れそう……」という方のための、ハードル低めな用語辞典です。

情報レベルは「基礎中の基礎」。会話を止めないためのエッセンスだけを抽出しています。分かりやすさを追求するあまり、時々例え話が暴走しているかもしれませんが、そこは「ほどよく」聞き流していただけると幸いです。
ほどよくIT用語辞典システム開発・テクノロジー
デプロイ太郎のSNSを見てみる!!
タイトルとURLをコピーしました