Amazon ECRとロードバランシングECSを使用して Amazon に Java マイクロサービスをデプロイする - AWS 規範ガイダンス

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

Amazon ECRとロードバランシングECSを使用して Amazon に Java マイクロサービスをデプロイする

作成者: Durga Prasad Cheepuri (AWS)

環境:PoC またはパイロット

ソース: Java

ターゲット: Amazon ECS

R タイプ:該当なし

テクノロジー: コンテナとマイクロサービス、ウェブとモバイルアプリ

AWS サービス: Amazon ECS

[概要]

このパターンでは、Amazon Elastic Container Service (Amazon ECS) にコンテナ化された Java マイクロサービスアーキテクチャをデプロイして、アプリケーションの開発を容易にし、より迅速にスケーリングできるようにする手順の概要を説明します。これにより、イノベーションが可能になり、新機能 time-to-market の高速化が可能になります。 

このパターンでは、Amazon Elastic Container Registry (Amazon ECR) を使用して Docker ベースのコンテナを保存および管理し、Python スクリプトを含む AWS CloudFormation テンプレートを使用してインフラストラクチャのセットアップを自動化します。このパターンは、コンピューティングブログで公開されている Amazon Elastic Container Service での postDeploying Java Microservices AWS に基づいています。

マイクロサービスは、ソフトウェア開発に対するアーキテクチャおよび組織的なアプローチを提供します。ソフトウェアは、明確に定義されたアプリケーションプログラミングインターフェイス () を介して通信する小規模で独立したサービスで構成されますAPIs。これらのサービスは小規模で自己完結型のチームが所有しています。 

Amazon ECS は、非常にスケーラブルで高性能なコンテナオーケストレーションサービスです。Docker コンテナをサポートし、コンテナ化されたアプリケーションを でAWSすばやく実行およびスケーリングできます。Amazon を使用するとECS、コンテナオーケストレーションソフトウェアのインストールと運用、仮想マシンのクラスターの管理とスケーリング (VMs)、それらの でのコンテナのスケジュールが不要になりますVMs。

簡易API呼び出しを使用すると、Docker 対応アプリケーションを起動および停止し、リクエストの完全な状態をクエリし、AWSIdentity and Access Management (IAM) ロール、セキュリティグループ、ロードバランサー、Amazon CloudWatch Events、AWS CloudFormation テンプレート、AWS CloudTrail ログなど、多くの自然機能にアクセスできます。

前提条件と制限

前提条件

  • アクティブなAWSアカウント  

  • Java 開発キットバージョン 1.7 以降の Java マイクロサービスソースコード

  • アカウント内のユーザーのアクセスキーとシークレットアクセスキー

  • AWS コマンドラインインターフェイス (AWS CLI)

  • Java、 AWS Software Development Kit (SDK) for Python (Boto3)、および Docker ソフトウェア

  • 前述のテクノロジーの使用に精通していること

  • Amazon ECS、、AWS CloudFormationElastic Load Balancing などのAWSサービスに精通していること

アーキテクチャ

ソーステクノロジースタック

  • Java で実装され、オンプレミス環境の Apache Tomcat にデプロイされたマイクロサービス

ターゲットテクノロジースタック

  • クライアントのリクエストを検査する Application Load Balancer。ロードバランサーは、ルーティングルールに基づいて、状態と一致するターゲットグループのインスタンスとポートにリクエストを送信します。

  • 各マイクロサービスのターゲットグループ。ターゲットグループは、使用可能なコンテナインスタンスに登録するために対応するサービスによって使用されます。各ターゲットグループにはパスがあるため、特定のマイクロサービスを呼び出すと、正しいターゲットグループにマッピングされます。これにより、1 つのApplication Load Balancer を使用して、パスによってアクセスされるすべてのマイクロサービスにサービスを提供できます。たとえば、https:///owner/ * はオーナーマイクロサービスにマッピングされ、指示されます。

  • 各マイクロサービスのコンテナをホストする Amazon ECSクラスター。

  • Amazon ECSクラスターおよび関連するセキュリティグループをホストするための Amazon Virtual Private Cloud (Amazon VPC) ネットワーク。

  • 各マイクロサービスの Amazon Elastic Container Registry (Amazon ECR) リポジトリ。

  • Amazon ECSクラスターのインスタンスでコンテナをスピンアップする、各マイクロサービスのサービスまたはタスク定義。

ターゲット アーキテクチャ

Amazon にコンテナ化された Java マイクロサービスアーキテクチャをデプロイする手順ECS。

ツール

  • Amazon ECS – Amazon ECS では、シンプルなAPI呼び出しでコンテナベースのアプリケーションを起動および停止したり、一元化されたサービスからクラスターの状態を取得したり、使い慣れた多くの Amazon Elastic Compute Cloud (Amazon EC2) 機能にアクセスしたりできます。

  • Amazon ECR – Amazon Elastic Container Registry (Amazon ECR) は、開発者が Docker コンテナイメージを簡単に保存、管理、デプロイできるようにするフルマネージドレジストリです。Amazon ECR は Amazon と統合されておりECS、 development-to-production ワークフローを簡素化します。Amazon は、可用性が高くスケーラブルなアーキテクチャでイメージをECRホストするため、アプリケーションにコンテナを確実にデプロイできます。AWS Identity and Access Management (IAM) との統合により、各リポジトリのリソースレベルの制御が可能になります。

エピック

タスク説明必要なスキル

Amazon EC2 Linux インスタンスをプロビジョニングし、Docker をインストールして、マイクロサービスごとに Docker ファイルを作成します。

Ops

Amazon で Docker イメージを設定しますECR。

(オプション) プッシュするイメージの Dockerfile がある場合は、イメージを構築し、新しいレポジトリ用にタグを付けます。各マイクロサービスにも同じ操作を行います。リポジトリにタグ付けされたイメージをプッシュします。

Ops

AWS CloudFormation テンプレートを作成します。

テンプレートAWS CloudFormation を作成して、仮想プライベートクラウド (VPC)、Amazon ECSクラスター、Amazon Relational Database Service (Amazon ) をプロビジョニングしますRDS。

Ops
タスク説明必要なスキル

前に作成した CloudFormation テンプレートを使用してAWSインフラストラクチャを作成します。

で Python スクリプト https://github.com/awslabs/amazon-ecs-java-microservices/blob/master/2_ECS_Java_Spring_PetClinic_Microservices/setup.py を使用して、前に作成したAWS CloudFormation テンプレートを呼び出します。このテンプレートは、ターゲット環境に必要なAWSインフラストラクチャを作成します。

Ops

Amazon ECRリポジトリ、タスク、サービス、Application Load Balancer 、およびターゲットグループを作成します。

Python スクリプトはAWS CloudFormation テンプレートの出力を読み取り、BOTO3API呼び出しを使用して Amazon ECR リポジトリ、タスク、サービス、Application Load Balancer 、およびターゲットグループを作成します。

Ops

関連リソース