EC2 — 仮想サーバー

Amazon EC2(Elastic Compute Cloud) は AWS の仮想サーバーサービスです。 OS の選択から CPU・メモリのスペック、ネットワーク設定まで自由に構成できる、最も汎用性の高いコンピューティングオプションです。

主な特徴

インスタンスタイプ
汎用(t3/m6i)・コンピューティング最適化(c6i)・メモリ最適化(r6i)・GPU(g4dn)など用途別ファミリーが豊富。
購入オプション
オンデマンド(時間単位)・リザーブド(1〜3年先払い、最大72%割引)・スポット(余剰リソース、最大90%割引)の3種類。
AMI(マシンイメージ)
Amazon Linux 2023・Ubuntu・Windows Server など公式 AMI に加え、カスタム AMI で環境をスナップショット化できる。
Auto Scaling
CPU 使用率などのメトリクスに応じてインスタンス数を自動増減。ALB と組み合わせてトラフィックを分散する。

⚠️ 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つのオーケストレーターを選択します。

ECS(Elastic Container Service)
AWS 独自のコンテナオーケストレーター。設定がシンプルで学習コストが低い。Fargate と組み合わせてサーバーレスコンテナ実行が可能。
EKS(Elastic Kubernetes Service)
マネージド Kubernetes。Kubernetes の豊富なエコシステムをそのまま利用できる。ECS より学習コスト高。マルチクラウド・ポータビリティを重視する場合に選択。
Fargate(起動タイプ)
EC2 インスタンスの管理不要でコンテナを実行する。ECS でも EKS でも利用可能。パッチ適用・スケーリングを AWS に委譲できる。
ECR(Elastic Container Registry)
Docker イメージのマネージドリポジトリ。ECS/EKS と統合されており、IAM による細粒度のアクセス制御が可能。

比較表

比較項目 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 に切り出すハイブリッド構成が、管理コストとスケーラビリティのバランスが最も良いアプローチです。