コンテナベースのアプリケーション設計 - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

コンテナベースのアプリケーション設計

Java EE のリプラットフォームに関する課題

Java EE アプリケーションを AWS クラウドのコンテナ化されたプラットフォームに移行すると、次の課題に直面する可能性があります。

  • ディスポーザビリティ — コンテナを「ステートレス」に保つために、セッション状態を外部データベースに保存しなければならない場合があります。コンテナベースのアプリケーションでは、より高速で小さいアプリケーションのランタイムが必要であり、Java EE アプリケーションサーバーはコンテナ環境で実行できない場合があります。

  • コンテナプラットフォームの互換性 — クラスタリング、アプリケーションのデプロイ、メモリレプリケーションなど、アプリケーションのランタイム固有の機能を減らさなければならない場合があります。

  • ポータビリティ — コンテナベースのアプリケーションはアプリケーションのランタイムを使用してデプロイされますが、従来の Java EE アプリケーションはアプリケーションパッケージ (.jar または.war ファイル) を使用してデプロイされます。

コンテナベースのアプリケーション設計におけるベストプラクティス

AWS クラウド用のコンテナベースの Java EE アプリケーションを設計するときは、次のベストプラクティスに従うことをお勧めします。

  • コンテナインスタンスを作成後に変更することは避けてください。どうしても変更を加える必要がある場合は、新しいコンテナイメージを構築し、その新しいイメージをすべての環境で再利用してください。

  • 永続的なデータをコンテナ内に保存することは避けてください。

  • 1 つの目的に対応するようにコンテナを設計してください。複数の目的に対応するコンテナの設計については、ブログ記事「Using sidecar injection on Amazon EKS with AWS App Mesh」を参照してください。

  • 必要な API がすべてコンテナに実装されていることを確認してください。

  • CPU 使用率、システムメモリ、永続ストレージを中心にシステム要件が構築されるようにコンテナを設計してください。

ベストプラクティスの詳細については、Kubernetes ドキュメントの「Principles of Container-based Application Design」を参照してください。