AWS Copilot、Amazon ECS、Docker、AWS Fargate を使用してモノリシックアプリケーションをマイクロサービスに分割する
チュートリアル
はじめに
概要
このチュートリアルでは、モノリシックな ノード.js アプリケーションを Docker コンテナにデプロイし、ダウンタイムなしでアプリケーションをマイクロサービスに分離します。このノード.js アプリケーションでは、スレッド機能付きのシンプルな掲示板とユーザー間のメッセージをホストします。
これが重要な理由
従来型のモノリシックアーキテクチャはスケーリングが困難です。アプリケーションのコードベースが拡大するにつれ、更新と維持が複雑になります。新しい機能、言語、フレームワーク、テクノロジーの導入は非常に難しくなり、イノベーションや新たな発想が制限されます。
マイクロサービスアーキテクチャ内では、各アプリケーションコンポーネントは独自のサービスとして動作し、明確に定義された API を介して他のサービスと通信します。マイクロサービスはビジネス機能を中心に構築され、各サービスが単一の機能を実行します。マイクロサービスは、さまざまなフレームワークやプログラミング言語を使用して作成することができ、単一のサービスとして、またはサービスのグループとして個別にデプロイできます。
実行する内容
このチュートリアルでは、Docker コンテナ内でシンプルなモノリシックアプリケーションを実行する方法、その同じアプリケーションをマイクロサービスとしてデプロイする方法、ダウンタイムなしでトラフィックをこのマイクロサービスに切り替える方法について説明します。終了後、このチュートリアルとチュートリアルで使用されたコードをテンプレートとして使用して、コンテナ化した独自のマイクロサービスを AWS で構築しデプロイできます。
モノリシックアーキテクチャ
ノード.js アプリケーション全体が、単一のサービスとしてコンテナ内で実行されます。各コンテナは他のすべてのコンテナと同じ機能を持ちます。1 つのアプリケーション機能の需要が急激に増加した場合に、アーキテクチャ全体をスケールする必要があります。
マイクロサービスアーキテクチャ
ノード.js アプリケーションの各機能は、コンテナ内で独立したサービスとして実行されます。サービスはスケール可能であり、他のサービスとは独立して更新できます。
前提条件
- AWS アカウント: アカウントをまだお持ちでない場合は、「 AWS 環境のセットアップ」チュートリアルに従うことで、概要を短時間で確認できます。
- AWS CLI をインストールして設定します
- AWS Copilot をインストールして設定します
- Dockerをインストール して設定する
- テキストエディタ。このチュートリアルでは VS Code を使用しますが、お好みの IDE を使用できます。
AWS エクスペリエンス
中級コース
最短所要時間
110 分
完了までにかかるコスト
無料利用枠の対象
必要なもの
- AWS アカウント: アカウントをまだお持ちでない場合は、「AWS 環境のセットアップ」チュートリアルに従うことで、概要を短時間で確認できます。
- AWS CLI をインストールして設定します。
- AWS Copilot をインストールして設定します。
- Dockerをインストールして設定する
- テキストエディタ。このチュートリアルでは VS Code を使用しますが、お好みの IDE を使用できます。
利用するサービス
最終更新日
モジュール
このチュートリアルは次の短いモジュールに分かれています。各モジュールを完了してから次のモジュールに進む必要があります。
- セットアップ (20 分): このモジュールでは、AWS CLI のインストールと設定、AWS Copilot のインストール、Docker のインストールを行います。
- モノリスのコンテナ化とデプロイ (30 分): このモジュールでは、アプリケーションをコンテナ化し、AWS Copilot を使用して EC2 コンピューティングインスタンスのマネージドクラスターをインスタンス化し、そのクラスター上で実行されるコンテナとしてイメージをデプロイします。
- モノリスを壊す (20 分): このモジュールでは、ノード.js アプリケーションを相互に接続された複数のサービスに分割し、各サービスのイメージを Amazon Elastic Container Registry (Amazon ECR) リポジトリにプッシュします。
- マイクロサービスのデプロイ (30 分): このモジュールでは、ノード.js アプリケーションを、Application Load Balancer (ALB) の背後に相互接続されたサービスのセットとしてデプロイします。次に、ALB を使用し、トラフィックをモノリスからマイクロサービスにシームレスに移行します。
- クリーンアップ (10 分): このモジュールでは、チュートリアル中に作成したリソースを終了します。Amazon ECS で実行されているサービスを停止し、ALB を削除し、AWS CloudFormation スタックを削除して、基盤となるすべての EC2 インスタンスを含む Amazon ECS クラスターを終了します。