
EC2とLambdaの違い|常時性・管理範囲・実行モデルで選ぶ
Amazon EC2とAWS Lambdaは、どちらもAWS上で処理を実行します。しかし、EC2は仮想サーバーを起動して管理するサービス、LambdaはイベントやAPI呼び出しに応じてコードを実行するサーバーレスサービスです。
サービス名を暗記するより、「常時動かす必要があるか」「OSを管理したいか」「処理はイベント単位か」を先に確認すると選びやすくなります。
結論:常時稼働とOS制御が必要ならEC2、イベント駆動でサーバー管理を減らしたいならLambdaを中心に考える
対象読者:CLF-C02でAWSの計算サービスが混ざる方
読後にできること:要件文からEC2とLambdaの候補を説明できる
確認順序:起動条件 → 管理範囲 → 実行時間 → スケーリングと依存先
EC2は仮想サーバーを起動する
Amazon EC2は、AWSクラウド内の仮想サーバーです。Instance typeでCPU、Memory、Network、Storageの組み合わせを選び、OSやApplicationを構成します。
EC2が候補になりやすい条件は次のとおりです。
常時稼働するProcessやServerが必要
OS、Runtime、Network設定を細かく制御したい
15分を超える長い処理を継続したい
独自SoftwareやBackground serviceを動かしたい
Instance単位のCapacityを設計したい
AWSは物理Infrastructureを管理しますが、Guest OS、Patch、Runtime、Applicationの管理は利用者側に残ります。
Lambdaはイベントごとにコードを実行する
AWS Lambdaは、ServerをProvisionまたは管理せずにコードを実行するサービスです。API Gateway、Amazon S3、Amazon SQS、EventBridgeなどをTriggerにしてFunctionを起動できます。
Lambdaが候補になりやすい条件は次のとおりです。
RequestやEventが来たときだけ処理する
ServerのCapacityやPatchを管理したくない
Trafficに応じた自動Scaleが必要
短い独立した処理へ分割できる
使用したRequest数と実行時間を中心に考えたい
Lambda Functionの1回の実行時間は最大15分です。長い常駐Processをそのまま移すサービスではありません。
管理範囲を比べる
項目 / Amazon EC2 / AWS Lambda
実行単位:Instance・Server / Function・Invocation
起動条件:常時または任意に起動 / Event・API・Schedule
OS管理:利用者が管理 / AWSが基盤を管理
Scale:Auto Scaling等を設計 / Invocation量に応じて管理
実行時間:Workload次第 / 1回最大15分
状態:Server上に保持可能 / Invocation間の永続性を前提にしない
Lambdaの実行環境は再利用される場合がありますが、Invocation間で状態が必ず残るとは限りません。永続Dataは外部Serviceへ保存します。
問題文を3つの動詞へ変える
Serverを管理する
OSへLoginする、Agentを導入する、長時間Processを動かす、といった要件ならEC2が候補です。
Eventを処理する
File upload、Message、HTTP requestをTriggerに短い処理を行うならLambdaが候補です。
Applicationを公開する
単にWeb Applicationを公開したいだけなら、EC2とLambda以外にApp Runner、Elastic Beanstalk、ECSなども候補になります。問題文の管理範囲と実行モデルを確認します。
Scaleだけで即決しない
Lambdaは自動的にExecution environmentを増減しますが、接続先のDatabaseやExternal APIが同じ速度でScaleするとは限りません。
EC2もAuto Scaling groupを構成できます。したがって「自動Scale」という一語だけではなく、次を確認します。
Scaleの単位はInstanceかFunctionか
Downstream serviceが処理できる量はどの程度か
常時Capacityが必要か、Event時だけ必要か
起動遅延やProvisioned capacityを許容できるか
料金は実行モデルと利用率で考える
EC2は起動しているInstanceの利用時間と関連Resourceを中心に料金を考えます。Workloadが常時あり、Capacityを継続的に使うなら、Instanceを適切にSizeし、購入OptionやAuto Scalingを検討します。
LambdaはRequest数と実行時間、設定したMemoryなどを中心に料金を考えます。処理が断続的なら、使用しない時間のServer capacityを持たずに済む場合があります。
ただし「Lambdaは必ず安い」「EC2は必ず高い」とは限りません。Trafficの量と変動、処理時間、外部Service、Data transfer、Monitoringを含めて比較します。
EC2とLambda以外も候補になる
Container imageを実行したい場合はAmazon ECSやAWS Fargate、Platform管理を減らしてWeb applicationを展開したい場合はAWS App RunnerやElastic Beanstalkも候補です。
選択問題では、まず求められている抽象度を確認します。仮想Server、Container、Function、Managed application platformのどの層を選ぶ問題かを決めてから、同じ層の選択肢を比較します。
選択肢を見る前のチェックリスト
常時稼働かイベント駆動か
OSへアクセスする必要があるか
1回の処理は15分以内か
状態をどこへ保存するか
Scaleの主体と下流の上限は何か
運用チームが管理できる範囲はどこまでか
この順で要件を読むと、「Serverを動かす」のか「Eventを処理する」のかを分けられます。
CertAtlas Labsでは、CLF-C02を含むIT資格の模擬試験を全選択肢の解説つきで公開しています。最新クーポンは資格一覧で確認してください。
https://note.com/certatlaslabs/n/n1b4588275d1b
本記事は一般的な学習情報です。実際の設計では、最新のService quota、料金、Region対応、Security要件を公式資料で確認してください。
参考情報
Amazon EC2 overview: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html
AWS Lambda overview: https://docs.aws.amazon.com/lambda/latest/dg/welcome.html
Lambda best practices: https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html