AWS SAA-C03試験対策|コンピューティングについて、まとめています。自分のアウトプットです!
1. Amazon EC2 (Elastic Compute Cloud)
EC2は、AWSクラウド上の仮想サーバー(インスタンス)です。最も柔軟性が高く、詳細なカスタマイズが可能です。
- ユースケース:
- OSやソフトウェアを完全に制御したい場合
- 特定のハードウェア要件があるワークロード
- 長期にわたり稼働する予測可能なトラフィックのアプリケーション
- 重要な概念:
- インスタンスファミリー: ワークロードのタイプに応じて、CPU、メモリ、ストレージ、ネットワーク性能の組み合わせが最適化されています。
- プレースメントグループ: EC2インスタンスの論理的な配置を制御する方法です。
- クラスター (Cluster): インスタンスを単一のアベイラビリティゾーン (AZ) 内のクラスターにまとめて配置します。低レイテンシー、高スループットのネットワークを必要とするHPC(ハイパフォーマンスコンピューティング)などに最適です。
- パーティション (Partition): インスタンスを論理的なパーティションに分割し、それぞれのパーティションが異なるラックに配置されるようにします。HadoopやCassandraなどの大規模分散アプリケーションに適しています。
- スプレッド (Spread): インスタンスを異なるハードウェアに配置することで、耐障害性を高めます。クリティカルな少数のインスタンスを高可用性で運用したい場合に適しています。
- インスタンスメタデータ: 実行中のEC2インスタンスに関するデータ(インスタンスID、パブリックIPアドレス、セキュリティグループ情報など)を取得するためのサービスです。インスタンス内部からHTTP経由でアクセスできます。
- ephemeral (エフェメラル) ストレージ: インスタンスストアとも呼ばれ、EC2インスタンスに物理的にアタッチされる一時的なストレージです。インスタンスの停止や終了でデータは失われます。
- 起動タイプ:
- オンデマンドインスタンス: 料金は秒単位で、柔軟性が高いです。
- リザーブドインスタンス (RI): 1年または3年の契約で、オンデマンドよりも大幅に安価になります。
- Savings Plans: RIよりも柔軟な割引プランで、使用するインスタンスファミリーに関わらず一定の料金を約束します。
- スポットインスタンス: 未使用のEC2インスタンスを安価に利用できますが、AWSによって中断される可能性があります。コストを最優先する中断可能なワークロードに最適です。
- スケーリング:
- Auto Scaling: アプリケーションの負荷に応じてEC2インスタンスを自動的に増減させます。
- ネットワーク:
- セキュリティグループ: 仮想ファイアウォールで、インスタンスへのトラフィックを制御します。
- AMI (Amazon Machine Image): EC2インスタンスを起動するためのテンプレートです。
- プレースメントグループ: EC2インスタンスの論理的な配置を制御する方法です。
- インスタンスファミリー
ファミリー | 主なインスタンスタイプ | 特徴 | 主なユースケース |
---|---|---|---|
汎用 (General Purpose) | T3, M5 | CPUとメモリのバランスが取れている | Webサーバー、アプリケーションサーバー、開発環境 |
コンピューティング最適化 (Compute Optimized) | C5, C6g | 高性能なCPUを重視 | バッチ処理、高性能Webサーバー、ゲームサーバー、メディアエンコーディング |
メモリ最適化 (Memory Optimized) | R5, X1 | 大容量メモリを重視 | インメモリデータベース、リアルタイムビッグデータ分析、大規模なキャッシュ |
ストレージ最適化 (Storage Optimized) | I3, D2, H1 | 高速なローカルストレージを重視 | 大量のランダムI/Oが必要なデータベース、データウェアハウス、ログ処理 |
高速コンピューティング (Accelerated Computing) | P3, G4 | GPUやFPGAを搭載 | 機械学習、ディープラーニング、科学技術計算、グラフィックス処理 |
2. コンテナサービス
コンテナは、アプリケーションとその依存関係をパッケージ化する技術で、ポータビリティと一貫性を高めます。
- 共通の概念:
- Docker Volume: コンテナのライフサイクルとは独立してデータを永続化するためのストレージです。
- タスク (Task): ECSやFargateで実行されるコンテナの最小単位です。1つまたは複数のコンテナで構成されます。
- Amazon ECS (Elastic Container Service):
- 概要: Dockerコンテナを実行するためのフルマネージドなコンテナオーケストレーションサービスです。
- 起動タイプ:
- Fargate: サーバーのプロビジョニングや管理が不要なサーバーレスコンテナ。運用の手間を減らしたい場合に最適です。
- EC2: EC2インスタンスをクラスタとして使用し、コンテナを配置します。インフラの制御を細かく行いたい場合に適しています。
- Amazon EKS (Elastic Kubernetes Service):
- 概要: Kubernetesのマネージドサービスです。既存のKubernetesエコシステムやツールを活用したい場合に選択します。
- etcd: EKSのコントロールプレーンで、Kubernetesクラスターの状態を保存するキーバリューストアです。
- ECSとEKSの使い分け:
- ECS: AWSのサービスとの統合が容易で、シンプルなユースケースに適しています。Kubernetesの知識が不要なため、学習コストが低いです。
- EKS: 既存のKubernetesツールやコミュニティの資産を活用したい場合、またはマルチクラウド環境での標準化が必要な場合に適しています。
3. AWS Lambda
Lambdaは、サーバーを意識することなくコードを実行できる、イベント駆動型のサーバーレスコンピューティングサービスです。
- ユースケース:
- Web APIバックエンド
- データ処理(S3へのファイルアップロードをトリガーとした処理など)
- リアルタイムファイル処理、モバイルバックエンド
- 重要な概念:
- サーバーレス: サーバーのプロビジョニングや管理、スケーリングが不要です。
- イベント駆動型: Lambda関数は、特定のイベント(例:API GatewayへのHTTPリクエスト、S3へのファイルアップロード)によって実行されます。
- 従量課金: コードが実行された時間とメモリ使用量に基づいて課金されます。アイドル状態の料金はかかりません。
- スケーリング: リクエストの増加に応じて自動的にスケールアウトします。
- Lambdaの制限 (Limits):
- 実行時間: 関数の実行は最大15分です。
- メモリ: 128MBから10,240MBの間で設定可能です。
- デプロイパッケージサイズ: 圧縮時最大50MB、解凍時最大250MBです。
4. Amazon API Gateway
API Gatewayは、LambdaやEC2、その他のバックエンドサービスへのAPIを作成、デプロイ、管理できるフルマネージドサービスです。
- 重要な概念:
- API エンドポイントタイプ:
- リージョナル: API Gatewayがデプロイされているリージョンでのみアクセス可能。レイテンシーを最小限に抑えたい場合に適しています。
- エッジ最適化: グローバルなアクセス向けに、CloudFrontのCDNを利用します。
- プライベート: VPC内からのみアクセス可能で、VPCエンドポイントを使用します。
- ステージ (Stage): 開発、テスト、本番など、APIのライフサイクルを管理するための論理的な環境です。
- プロキシ/非プロキシ統合:
- プロキシ統合: API Gatewayがクライアントからのリクエストをそのままバックエンド(例:Lambda)に転送し、バックエンドからのレスポンスをそのままクライアントに返します。設定がシンプルです。
- 非プロキシ統合: API Gatewayでリクエストとレスポンスの変換ルールを詳細に定義できます。より複雑な変換や認証要件がある場合に適しています。
- API エンドポイントタイプ:
5. サービス選択の指針
試験では、シナリオに合わせて最適なサービスを選ぶことが重要です。
観点 | EC2 | ECS/EKS (Fargate) | Lambda |
---|---|---|---|
運用 | 高い(OS、パッチ管理など) | 低い(OS管理不要) | 非常に低い(サーバー管理不要) |
コスト | 起動している間は課金 | 実行時間とリソース量で課金 | 実行時間とメモリ使用量で課金 |
スケーラビリティ | Auto Scalingで自動化可能 | 自動スケーリング | 自動スケーリング(非常に高速) |
柔軟性 | 非常に高い(OSやミドルウェアを自由に設定) | 高い(コンテナイメージで一貫性を確保) | 低い(実行時間やメモリに制限) |
ユースケース | 予測可能なトラフィック、レガシーアプリ | マイクロサービス、ポータブルなアプリ | 短時間で完了するイベント駆動型タスク |
まとめ
- EC2: インフラストラクチャを細かく制御したい場合に適しています。
- コンテナサービス (ECS/EKS): アプリケーションのポータビリティや一貫性を高め、運用を効率化したい場合に適しています。Fargateは運用の手間を、EC2はインフラの柔軟性を重視します。
- Lambda: イベント駆動型で、サーバー管理を完全に排除したい場合に最適です。
- API Gateway: サーバーレスアプリケーションのAPIを管理し、外部に公開するために不可欠なサービスです。