すべてのプロダクト
Search
ドキュメントセンター

Enterprise Distributed Application Service:アプリケーションをデプロイする環境の選択

最終更新日:Jan 07, 2025

Enterprise Distributed Application Service (EDAS) は、Elastic Compute Service (ECS) 環境と Kubernetes 環境をサポートしています。どちらの環境でもアプリケーションをホストできます。ただし、ECS と Kubernetes は異なる機能を提供します。ビジネス上の意思決定を行う際、またはワークロードを移行する環境を決定する際に、疑問が生じる場合があります。このトピックでは、ECS 環境と Kubernetes 環境について説明し、比較します。ビジネス要件に基づいて環境を選択できます。

背景情報

EDAS は、ECS 環境と Kubernetes 環境をサポートしています。ECS または Kubernetes クラスターにアプリケーションをデプロイできます。ECS と Kubernetes はどちらも、Spring Cloud、Apache Dubbo、High-Speed Service Framework (HSF) マイクロサービスフレームワークをサポートしています。EDAS を使用すると、上記のフレームワークを使用する Java アプリケーションをホスト、管理、および監視できます。ECS と Kubernetes には、アプリケーションとテクノロジスタックに関して異なる要件があります。EDAS はまた、ECS と Kubernetes に異なるアプリケーション管理機能を提供します。

選択方法

Kubernetes はほとんどのシナリオに適用できます。EDAS は Container Service for Kubernetes (ACK) と統合されており、リソース使用率を高めるのに役立つ幅広いアプリケーション管理機能を提供します。

実際のビジネス要件に基づいて環境を選択することをお勧めします。

シナリオ環境
  • コンテナーイメージまたは非 Java アプリケーション
  • 同じインスタンスにデプロイされた複数のアプリケーション、または同じ環境にデプロイされた多数のアプリケーション
  • アプリケーションを管理するために必要な kubectl などの Kubernetes の機能またはツール
Kubernetes
  • 環境にデプロイされた多数の非コンテナー化アプリケーション

    ECS は、既存のアプリケーション O&M システムを再利用する簡単な方法を提供するため、非コンテナー化アプリケーションをホストするより良い代替手段です。

  • モノリシックアプリケーションのパフォーマンスと安定性に対する高い要件
ECS
説明 アプリケーションが既に ECS クラスターにデプロイされており、Kubernetes によって提供される高度な機能を使用する場合、アプリケーションを Kubernetes クラスターに移行できます。

ECS または Kubernetes でサポートされる機能

次の表は、ECS または Kubernetes でサポートされる機能を示しています。「Y」はサポートされていることを、「N」はサポートされていないことを示します。
機能ECSKubernetes備考
アプリケーションのデプロイYYKubernetes は、インスタンスをデプロイするためのより多くの種類のスケジューリングポリシーを提供し、同じインスタンスに複数のアプリケーションをデプロイできます。
アプリケーションの起動YY該当なし
アプリケーションの停止YY該当なし
アプリケーションの削除YY該当なし
アプリケーションのスケーリングYY該当なし
アプリケーションのリセットYNこの機能は Kubernetes 環境では必要ありません。アプリケーションをリセットするには、アプリケーションがデプロイされている Kubernetes ポッドを削除します。
コンテナーのアップグレードまたはダウングレードYY該当なし
アプリケーションのロールバックYY該当なし
水平スケーリングYYECS と Kubernetes の方法とルールは異なります。
スケジュールされたスケーリングNY該当なし
バッチデプロイYY該当なし
アプリケーショングループYN該当なし
アプリケーショングループの構成YN該当なし
リアルタイムログ配信YY該当なし
ログディレクトリYY該当なし
Log ServiceYY該当なし
負荷分散YY該当なし
ヘルスチェックYYKubernetes は、readiness プローブと liveness プローブを使用してヘルスチェックを実行します。ヘルスチェックのメカニズムは ECS のものとは異なります。
Java 仮想マシン (JVM) パラメーターYY該当なし
Tomcat パラメーターYY該当なし
ライフサイクルフックYYKubernetes は、PostStart フックと PreStop フックをサポートしています。これらは ECS が提供するものとは異なります。
環境変数YY該当なし
カナリアリリースYY該当なし
トラフィック監視YY該当なし
トラフィック調整YYKubernetes は、アプリケーションコードを変更することなく、アプリケーションのトラフィック調整を実装します。
サービスリストYY該当なし
構成プッシュYY該当なし
イベントセンターYY該当なし
アラートYY該当なし
アプリケーション診断YYKubernetes は、監視サービスと統合された高度なアプリケーション診断機能を提供します。
リソース購入YN該当なし
サービスメッシュNY該当なし
イメージからのデプロイNY該当なし
さまざまなプログラミング言語で記述されたアプリケーションNY該当なし
ネットワークアタッチトストレージ (NAS)NY該当なし

FAQ

ECS 環境では、同じインスタンスに複数のアプリケーションをデプロイできますか?

いいえ。ECS では、同じインスタンスに複数のアプリケーションをデプロイすることはできません。同じインスタンスに複数のアプリケーションをデプロイする場合は、Kubernetes 環境を選択してください。

ECS 環境は、さまざまなプログラミング言語で記述されたアプリケーションをサポートしていますか?

いいえ。ECS は、異なるプログラミング言語で記述されたアプリケーションをサポートしていません。異なるプログラミング言語で記述されたアプリケーションをデプロイする場合は、Kubernetes 環境を選択してください。

ECS 環境と Kubernetes 環境は開発者ツールをサポートしていますか?

はい。ECS環境とKubernetes環境の両方で開発者ツールがサポートされています。ただし、ツールによって構成要件が異なります。

Kubernetes 環境では、ノードはどのようにスケールアウトされますか?

Kubernetes環境は、Podを自動的にスケールインおよびスケールアウトします。ほとんどの場合、Kubernetesクラスターは新しいノード(ECSインスタンス)を作成したり、既存のノードを解放したりしません。

ACK が提供する機能を使用して、ノードを自動的にスケールインおよびスケールアウトできます。

ECSインスタンスにデプロイされたアプリケーションにスクリプトをマウントしている場合、これらのアプリケーションをKubernetesクラスターに移行するにはどうすればよいですか?

ECS 環境では、アプリケーションにマウントされたスクリプトを使用して、変更オーダーが指定されたステージに入ったときに指定されたコマンドを実行します。 ECS では、インスタンスの作成、アプリケーションの開始、アプリケーションの停止、インスタンスの解放など、アプリケーションのライフサイクルの以下のステージにスクリプトをマウントできます。

Kubernetes は、PostStart および PreStop ライフサイクルフックのみを提供します。 Kubernetes ベースのアプリケーションのライフサイクルステージは、ECS ベースのアプリケーションのライフサイクルステージとは異なります。そのため、アプリケーションを ECS から Kubernetes に移行する前に、スクリプトを変更する必要があります。
  • インスタンスの作成時にスクリプトをマウントする場合は、スクリプトを Dockerfile にコンパイルし、Dockerfile からイメージを作成できます。
  • アプリケーションを起動する前にスクリプトをマウントする場合は、スクリプトを Dockerfile にコンパイルし、Dockerfile からイメージを作成できます。

    Kubernetes ポッドでは、インスタンスの作成とアプリケーションの起動は同じプロセスと見なされます。

  • アプリケーションの起動後にスクリプトをマウントするには、PostStart フックとしてマウントします。
  • インスタンスを停止する前にスクリプトをマウントするには、PreStop フックとしてマウントします。
  • インスタンスの停止後にマウントされたスクリプトを削除できるように、アプリケーションを正常にシャットダウンすることをお勧めします。たとえば、Java アプリケーションに Shutdown フックを追加したり、削除するスクリプトに SIGTERM シグナルを送信したりできます。または、スクリプトを PreStop フックに移動することもできます。
  • インスタンスの解放前にマウントされたスクリプトを削除できるように、アプリケーションを正常にシャットダウンすることをお勧めします。たとえば、Java アプリケーションに Shutdown フックを追加したり、削除するスクリプトに SIGTERM シグナルを送信したりできます。または、スクリプトを PreStop フックに移動することもできます。

    Kubernetes ポッドでは、インスタンスの停止と解放は同じプロセスと見なされます。