Amazon Web Services (AWS) は、企業のニーズを満たすさまざまなクラウド コンピューティング サービスを提供しています。サービスには、Elastic Compute Service (ECS) と Elastic Compute Cloud (EC2) が含まれています。一方は仮想化に重点を置き、もう一方はコンテナ化を管理するため、これら 2 つのサービスの選択は難しい場合があります。
次の記事では、Amazon ECS と EC2 の違いを説明し、どのサービスがユースケースに適しているかをよりよく理解できるようにします。
Amazon EC2は「Elastic Compute Cloud」の略です。EC2 を使用すると、企業はクラウド コンピューティング リソースにオンデマンドでアクセスできます。最新のプロセッサ、ストレージ、オペレーティング システム、ネットワーク テクノロジーを備えた 500 を超えるインスタンスから選択できます。
Amazon EC2 は、管理された仮想マシン (VM) サービスに似ており、事前設定された VM インスタンスを管理の負担なしにデプロイできます。企業は、VM エクスポート/インポートを介してクラウドで自動変換およびデプロイを行い、オンプレミスの VM 構成を EC2 にアップロードすることもできます。
EC2 インスタンスは、初期費用を軽減するために従量課金制 (PAYG) で、秒単位または時間単位で課金されます。AWS は VM 構成とインフラストラクチャも制御するため、企業は手間をかけずにコンピューティング リソースに直接アクセスできます。
これは、EC2 インスタンスのグループに対して弾性スケーリングが実行される場合に役立ちます。AWS は、パフォーマンスと安定性を維持するためにリソース割り当てを自動的にスケールアップし、一方で、閑散期にはスケールダウンして運用コスト (OpEx) を削減します。
ほとんどの企業にとって最大の問題は、データの継続性です。EC2 データはインスタンスが稼働している間のみ保持され、廃止するとデータが消去されます。幸いなことに、企業は Elastic Block Store (EBS) を使用して EC2 インスタンス データを保持したり、EC2 データを Amazon Simple Storage Service (S3) バケットにバックアップしたりすることができます。
Amazon ECS は「Elastic Container Service」の略です。EC2 が仮想化と仮想マシン (VM) を使用するのに対し、Amazon ECS は Docker コンテナ アプリケーションの管理に使用されます。これは、Kubernetes と同様に機能する、完全に管理されたコンテナ オーケストレーション サービスです。Amazon ECS は、Amazon EC2 経由で実行される Docker コンテナをオーケストレーションします。
Amazon ECS では、スケールアップのために新しい EC2 インスタンスをデプロイするのではなく、コンテナ クラスターを使用します。各クラスターには複数の EC2 インスタンスが含まれており、スケーリングとフェイルオーバーを容易にするために Amazon ECS オーケストレーターによって制御されます。
要約すると、ECS を使用すると、企業はインフラストラクチャ管理の負担なしに、コンテナ化されたアプリケーションを簡単に展開し、オーケストレーションできるようになります。
EC2 の最大の違いは、EC2 では自動スケーリングをサポートする分離された VM インスタンスがデプロイされるのに対し、ECS では管理された Docker コンテナのスケーラブルなクラスターがデプロイされることです。
企業は ECS を使用して Web アプリケーションを拡張し、バッチ処理を実行し、ハイブリッド環境でサービスを実行して、ユーザーに優れたサービスを提供できます。
EC2 は Docker コンテナを必要とせずに機能します。このため、幅広い OS サポートとハードウェア構成により、より高い柔軟性を提供できます。この柔軟性には追加の管理負担が伴いますが、ECS オーケストレーターは企業がその負担を回避するのに役立ちます。
VM インスタンスとクラスターのより技術的な説明は、垂直方向と水平方向のスケーリングです。水平方向のスケーリングではノードを追加し、垂直方向のスケーリングでは現在のマシンにさらにパワーを追加します。
垂直スケーリング –既存のインスタンスまたはノードに追加のコンピューティング能力を追加します。ノードは Docker コンテナのクラスターを制御するために使用され、クラスターにさらに多くのコンテナを追加して垂直にスケーリングできます。
水平スケーリング –既存のインスタンスまたはノードにコンピューティング能力を追加するのではなく、新しいインスタンスを作成し、インスタンスのグループ間でワークロードを均等に再分配します。
垂直方向にスケーリングするとコンピューティング能力の可用性は向上しますが、アプリケーションは単一のノードまたはクラスター グループに依存するようになります。ノードに障害が発生したり、クラスター コントローラーが誤動作したりすると、修復されるまでアプリケーションまたは Web サイト全体がオフラインになる可能性があります。
水平方向にスケーリングすると複雑さが増しますが、サービスの依存関係が複数のインスタンスに分散されます。1 つのインスタンスに障害が発生した場合、修復が行われている間に別のインスタンスがワークロードを吸収できます。
ECS と EC2 は連携して動作することが多いですが、必ずしも連携する必要はありません。EC2 は、ECS と連携して動作する多くの優れたインスタンスや環境で動作します。以下に、その使用例をいくつか示します。
エンタープライズ アプリケーションを実行するには、Windows Server または Linux ディストリビューション マシン イメージ (MI) を選択して展開します。
カスタム アプリケーションを作成してクラウドにデプロイします。
セキュリティ、データ保護、アイデンティティ アクセス管理 (IAM)、ネットワーク ルールを適用した、高度に構成可能な環境またはインスタンス タイプを作成します。
柔軟性を活用して最小、希望、最大容量を定義したり、自動スケーリング グループを使用してアプリケーション リソースの使用率を管理したりできます。
Kubernetes をオーケストレーション レイヤーとして使用せずに Docker を使用してコンテナ化されたアプリケーションをデプロイします。
モノリシック アーキテクチャからマイクロサービスへの移行をサポートします。
Amazon ECS Anywhere を追加して、Google Cloud Platform (GCP) や Microsoft Azure などのマルチクラウド環境にコンテナをデプロイします。
AWS Elastic Load Balancer (ELB) を使用して、複数のクラスター化されたサーバー間で負荷を分散します。
EC2 起動タイプは多数ありますが、DevOps チームが選択できる Amazon ECS 起動タイプは 2 つあります。ユーザーは、スタンドアロンタスクを実行するとき、またはサービスを作成するときに ECS 起動タイプを選択して、タスクとサービスがホストされるインフラストラクチャを決定できます。
EC2 –この起動タイプでは、EC2 インスタンス クラスターの展開と管理が可能です。管理の負担は大きくなりますが、インスタンスとクラスターを完全に制御できます。
AWS Fargate –これは EC2 のサーバーレス バージョンであり、Amazon がインフラストラクチャと構成を制御するため、企業はアプリケーションとタスクの実行に集中できます。
CPU とメモリの要件が高い大規模なワークロードの場合、企業は Amazon EC2 を使用して価格とパフォーマンスのバランスをより適切に最適化できます。
それ以外の場合、AWS Fargate は、オーバーヘッドが低いワークロードに適しています。Fargate は、バースト処理ワークロードやバッチ処理にも最適です。AWS Fargate は秒単位の課金でスケーリングを自動化するため、EC2 と比較してコストを大幅に削減できます。
Trianz は、EC2 および ECS ワークロードの管理に関する豊富な経験を持つ AWS アドバンストコンサルティングパートナーです。当社のコンサルタントチームは、お客様のアプリケーションワークロードに最適な Amazon のサービスを特定し、パフォーマンス、機能性、コスト効率を向上させるためにアプリケーションを体系的に最新化するお手伝いをします。