Amazon ECS タスクサイズのベストプラクティス - Amazon Elastic Container Service

Amazon ECS タスクサイズのベストプラクティス

Amazon ECS にコンテナをデプロイする際に選択を要する最も重要な項目の 1 つが、コンテナとタスクのサイズです。コンテナとタスクのサイズ決定は、スケーリングとキャパシティプランニングに不可欠な要素です。Amazon ECS では、キャパシティには CPU 量 とメモリという 2 つのリソースメトリクスが使用されます。CPU 量 は、フル vCPU の 1024 分の 1 の単位で測定されます (1024 ユニットは 1 つの vCPU 全体に相当します)。メモリはメガバイト単位で測定されます。タスク定義では、リソースの予約と制限を宣言できます。

予約の宣言により、タスクに最低限必要な量のリソースを宣言します。タスクは少なくとも要求された最低限の量のリソースを受け取ります。アプリケーションは、宣言された予約量よりも多くの CPU またはメモリを使用できる可能性があります。ただし、これには宣言した制限が適用されます。予約量を超えるリソースを使用することをバーストと呼びます。Amazon ECS では、予約量が保証されます。たとえば、Amazon EC2 インスタンスを使用してキャパシティを提供する場合、Amazon ECS は予約量を満足できないインスタンスにタスクを課しません。

制限は、コンテナまたはタスクが使用できる CPU ユニットまたはメモリの最大量です。この制限を超える CPU 量 を使用しようとすると、スロットリングが発生します。それ以上メモリを使おうとすると、コンテナは停止します。

これらの値の決定は簡単ではありません。これは、各アプリケーションに最も適した値は、そのアプリケーションのリソース要件に大きく依存するためです。適切にリソース要件を計画し、アプリケーション要件を正確に把握するには、アプリケーションの負荷テストを行うことが重要です。

ステートレスアプリケーション

ロードバランサーの背後にあるアプリケーションなど、水平スケーリングするタイプのステートレスアプリケーションでは、まずそのアプリケーションがリクエストを処理するときに消費するメモリの量を確認することをお勧めします。これは、pstop などの従来のツール、あるいは CloudWatch Container Insights などのモニタリングソリューションを使用して実施できます。

CPU 予約を決定する際には、ビジネス要件を満たすにはアプリケーションをどのようにスケーリングすべきかを考慮すること。256 CPU ユニット (つまりフル vCPU の 4 分の 1) などの小さめの CPU 予約を行うことで、コストを最小限に抑えながらきめ細かくスケールアウトできます。ただしその場合、需要が急増した時にスケーリング速度が追い付かない可能性があります。CPU 予約量を増やすとより迅速にスケールイン/スケールアウトできるため、需要の急増にもスムーズに対応できます。ただし、CPU の予約量が多いほどコストが高くなりますのでご注意ください。

その他のアプリケーション

シングルトンワーカーやデータベースサーバーなど、水平スケーリングしないタイプのアプリケーションでは、利用可能な容量とコストが最も重要な考慮事項となります。サービスレベル目標達成のためのトラフィック処理にはどの程度のメモリと CPU 量が必要かを負荷テストで確認した上でメモリおよび CPU 量を決定する必要があります。Amazon ECS は、アプリケーションが十分な容量のあるホストに配置されるよう保証します。