SAA / ドメイン3 高パフォーマンスなアーキテクチャの設計
Amazon ECS (Elastic Container Service)
は、化したアプリケーションをデプロイ、実行、スケーリングするAWSネイティブのコンテナサービスです。
SAA では、Kubernetes互換性が不要で、AWSサービスと深く統合した運用を簡素化したい場合に選びます。
概要
タスク定義にイメージ、、メモリ、ポート、などを記述します。タスクを一時処理として実行するか、サービスで指定数を維持します。
主要技術
①クラスター、タスク、サービス
| 要素 | 役割 |
|---|---|
| クラスター | タスクやサービスを配置する論理グループです。 |
| タスク定義 | 実行設定のテンプレートです。 |
| タスク | タスク定義の実行単位です。 |
| サービス | 必要数のタスクを継続維持します。 |
②EC2とFargate ⚠️ 頻出
起動タイプではインスタンスのサイズ、パッチ、容量を管理します。ではタスク単位でとメモリを指定し、ホストを管理しません。
③高可用性とロードバランシング
サービスのタスクを複数へ分散し、やへ登録します。タスクが異常終了するとサービススケジューラーが置き換えます。Service で需要に応じてタスク数を変更できます。
起動タイプのbridgeネットワークモードでホストポートを固定すると、同じポートは1台のEC2で1つのタスクしか使えないため、1台に1タスクしか置けなくなります。ホストポートを0にした動的ポートマッピングにすると、タスクごとに空いているポートが割り当てられ、ALBのがそのポートでタスクを登録します。awsvpcネットワークモードでは各タスクが専用のとを持つため、ポートが衝突せず、ターゲットタイプipで登録します (1台に置けるタスク数はENIの上限に左右されます)。
④IAMロールと状態分離
タスクロールで各アプリケーションへを付けます。タスクは交換可能な設計とし、状態は、、、などへ外出しします。
⑤タスク数とEC2台数の伸縮
では、伸縮させる対象ごとに仕組みが分かれます。
| 対象 | 仕組み | 判断ポイント |
|---|---|---|
| サービスのタスク数 (DesiredCount) | Application (Service Auto Scaling) | 使用率などの目標値に合わせてタスク数を増減します。 |
| タスクを載せるの台数 | Auto Scalingグループのキャパシティープロバイダーのマネージドスケーリング | 配置待ちのタスクも含めた必要量 (CapacityProviderReservation) からASGの台数を増減します。 |
インスタンスのCPU使用率でASGを伸縮させても、配置できずに待っているタスクは映らないため、EC2不足でタスクが置けない状態は解消しにくくなります。
試験対策
| 要件 | 選択 |
|---|---|
| AWSネイティブな管理 | |
| Kubernetes とエコシステム | |
| ホスト管理を避ける | ECS on |
| 特殊なや詳細なホスト制御 | ECS on EC2 |
ECSサービスは必要タスク数を維持しますが、データの永続化を保証するものではありません。