EC2 — 仮想サーバー
Amazon EC2(Elastic Compute Cloud) は AWS の仮想サーバーサービスです。 OS の選択から CPU・メモリのスペック、ネットワーク設定まで自由に構成できる、最も汎用性の高いコンピューティングオプションです。
主な特徴
⚠️ EC2 を選ぶべきでないケース
OS レベルの管理コスト(パッチ適用・セキュリティ設定)を自分で負う必要があります。コンテナや Lambda で実現できるワークロードに EC2 を使うと、管理負担が増えるだけです。
Lambda — サーバーレス実行
AWS Lambda はサーバーのプロビジョニングなしにコードを実行できるサーバーレスコンピューティングサービスです。 イベント(HTTPリクエスト・S3アップロード・スケジュール等)をトリガーに関数が起動し、処理完了後は自動的に停止します。
Lambda の強みと制約
| 項目 | 仕様 |
|---|---|
| サポート言語 | Python / Node.js / Java / Go / Ruby / .NET など主要言語を網羅 |
| 最大実行時間 | 15分(タイムアウト)。長時間バッチには不向き |
| メモリ | 128MB〜10GB。CPU 性能はメモリに比例して向上する |
| コールドスタート | 初回起動時に数百ms〜数秒の遅延が発生。Provisioned Concurrency で解消可能 |
| 料金 | リクエスト数(百万リクエスト単位)+実行時間(GB秒)の従量課金。無料枠あり |
| 同時実行数 | デフォルトはアカウント単位で 1,000 同時実行。上限緩和申請が必要な場合あり |
💡 Lambda のベストな使い所
① API Gateway と組み合わせたサーバーレス REST API ② S3 へのファイルアップロードをトリガーとした変換・通知処理 ③ EventBridge のスケジュールで動く夜間バッチ(15分以内)
ECS / EKS — コンテナ実行
コンテナでアプリを実行する場合、AWS では主に2つのオーケストレーターを選択します。
比較表
| 比較項目 | EC2 | Lambda | ECS(Fargate) | EKS |
|---|---|---|---|---|
| 管理単位 | 仮想マシン | 関数(Function) | タスク(コンテナ群) | Pod(コンテナ群) |
| OS 管理 | ユーザー管理 | 不要 | 不要(Fargate) | 一部管理 |
| 起動速度 | 数分 | ミリ秒〜数秒 | 数十秒〜数分 | 数十秒〜数分 |
| スケーリング | Auto Scaling(分単位) | 自動(ミリ秒) | 自動(Service Auto Scaling) | 自動(HPA/Cluster Autoscaler) |
| 料金体系 | 起動時間単位 | 実行回数+実行時間 | vCPU・メモリ・秒 | クラスター料金+ノード料金 |
| 学習コスト | 低〜中 | 低 | 中 | 高 |
選択フロー
以下の判断ツリーに従って最適なコンピューティングサービスを選択してください。
🔀 Step 1 — コンテナ化するか?
既存アプリを Docker コンテナとして動かせる場合 → ECS(Fargate) が最初の候補。Kubernetes のエコシステムが必須 / マルチクラウド移行を見越す場合 → EKS。
🔀 Step 2 — 常時起動が必要か?
24時間稼働するWebサーバーや常駐プロセス → EC2 または ECS。イベント駆動で短時間実行(15分以内)→ Lambda が最適。
🔀 Step 3 — OS レベルの制御が必要か?
カーネル設定・特殊ドライバー・既存の重厚なミドルウェアが必要 → EC2 一択。それ以外は Lambda または ECS に移行することでインフラ管理を大幅に削減できます。
✅ 新規開発では ECS (Fargate) + Lambda の組み合わせが現実解
常時稼働するWebアプリやAPIは ECS(Fargate)で実行し、バッチや非同期処理は Lambda に切り出すハイブリッド構成が、管理コストとスケーラビリティのバランスが最も良いアプローチです。