本文へスキップ
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/ミドルウェアの管理が必要サーバー管理不要
コスト稼働時間課金(アイドルでも課金)実行分のみ課金

具体例

似た2つの処理で、Lambdaが「向く/向かない」がくっきり分かれます。

  • サムネイル生成 → Lambda向き … ユーザーが画像をS3にアップした瞬間、そのイベントでLambdaが起動し、数百ミリ秒で縮小版を作って終了。断続的・短時間・イベント駆動という3拍子が揃い、待機コストもゼロ。まさにLambdaの独壇場。
  • 長編動画の高画質レンダリング → Lambda不向き … 1本の処理に30分かかる。Lambdaの実行時間上限は15分なので、そもそも完走できない。これはEC2(またはコンテナ、AWS Batch)で処理すべき。

判断軸をまとめると:「サーバー管理を最小化」「イベント駆動」「短時間(〜15分)」「使った分だけ課金」が要件ならLambda。「長時間の常駐」「特殊なOS/ミドルウェア依存」ならEC2。SAAでは、この実行時間15分の壁が「Lambdaを選んではいけない」引っ掛けとして頻出です。

読んでみよう

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

次のレッスンへ →