本文へスキップ
BecomeCoder

AWS SAA(ソリューションアーキテクト)コース · 第4章 コンピューティングの設計 · レッスン22

サーバーレス ― AWS Lambdaの設計

導入

「サーバーを立てずに動くコンピューティング」がLambdaです。しかし何でもLambdaで作ればいいわけではありません。SAAでは、EC2とLambdaの使い分けの判断基準が問われます。

説明

AWS Lambda は、コードをアップロードするだけでAWSが実行環境を管理してくれるサーバーレスなコンピューティングサービスです。イベント(S3へのアップロード、API Gatewayからのリクエスト、DynamoDBの変更など)をきっかけに関数が実行されるイベント駆動な設計が基本です。

flowchart LR
    E1["S3にファイル追加"] --> L["Lambda関数"]
    E2["API Gatewayリクエスト"] --> L
    E3["DynamoDBの変更"] --> L
    L --> O["処理結果を出力"]

Lambdaの主な制約と特徴は次の通りです。

  • 実行時間の上限は15分。それを超える処理には向かない
  • 呼び出しが増えると自動でスケールする(同時実行数の設定で上限を制御可能)
  • 初回や久しぶりの呼び出しで初期化コストがかかる コールドスタート がある
  • 課金はリクエスト数と実行時間に応じた従量課金で、待機コストはゼロ
観点EC2向きLambda向き
実行時間長時間・常駐短時間(〜15分)
負荷パターン一定〜緩やかな変動断続的・イベント駆動
運用OS/ミドルウェアの管理が必要サーバー管理不要
コスト稼働時間課金(アイドルでも課金)実行分のみ課金

読んでみよう

「サーバー管理を最小化したい」「イベントをトリガーに短時間の処理をしたい」「使った分だけ払いたい」とあればLambda、「長時間の常駐処理」「特殊なOS/ミドルウェア依存」とあればEC2、という判断基準を持っておきましょう。