このモジュールでは、node.js アプリケーションをいくつかの関連するサービスに分割し、各サービスのイメージを Amazon Elastic Container Registry (Amazon ECR) リポジトリにプッシュします。 構築を開始する
最終的なアプリケーションアーキテクチャでは、Amazon Elastic Container Service (Amazon ECS) と Application Load Balancer (ALB) を使用します。

a.クライアント
クライアントがポート 80 経由でトラフィックリクエストを行います。
b.ロードバランサー
ALB は、外部トラフィックを適切なサービスにルーティングします。ALB は、クライアントリクエストを調査し、ルーティングルールに基づきながら、このリクエストを適合するターゲットグループのインスタンスとポートに転送します。
c.ターゲットグループ
各サービスには、そのサービスのために実行されているコンテナごとのインスタンスとポートを記録するターゲットグループがあります。
d.マイクロサービス
Amazon ECS は、EC2 クラスター全体で各サービスをコンテナにデプロイします。各コンテナは単一の機能のみを処理します。
クラッシュの隔離
優秀なエンジニアリング企業であっても、本番環境で致命的なクラッシュが起こる可能性があり、実際に起こっています。クラッシュを適切に処理するためのすべての標準的なベストプラクティスに加えて、このようなクラッシュの影響を制限する方法の 1 つにマイクロサービスの構築があります。優れたマイクロサービスアーキテクチャとは、サービスのある微小な断片がクラッシュした場合、サービスのその部分のみが停止することを意味します。他のサービスは引き続き正常に機能します。
セキュリティのための隔離
モノリシックアプリケーションでは、アプリケーションの機能の 1 つでリモートコード実行を許す脆弱性などのセキュリティ侵害が起こった場合、攻撃者がそのシステムの他のすべての機能にもアクセスできると想定する必要があります。これは危険です。例えば、アバターのアップロード機能に内在するセキュリティ上の問題が原因となり、データベースのユーザーパスワードが盗まれる可能性があります。Amazon ECS を使用して機能をマイクロサービスに分割することにより、各サービスに固有の AWS Identity and Access Management (IAM) ロールを持たせ、AWS リソースへのアクセスを保護できます。マイクロサービスのベストプラクティスに則っていれば、攻撃者がサービスに侵入した場合でも、アクセスできるのは侵入したサービスのリソースのみです。他のサービスが提供する他のリソースには、再びそのサービスにも侵入しなければアクセスできません。
独立したスケーリング
機能をマイクロサービスに分割すると、各マイクロサービスクラスで使用されるインフラストラクチャの規模とインスタンスの数を、独立してスケールアップおよびスケールダウンできます。これにより、特定機能のためのコストが計測しやすくなります。また、優先して最適化すべき機能を発見することにも役立ちます。仮に、一つの固有な機能にリソースの要件に関する問題があったとしても、他の機能には影響はおよばず、パフォーマンス上の信頼性を維持することができます。
開発速度
マイクロサービスは、開発におけるリスクを低減するため、チームは構築時間を短縮できます。モノリスで新しい機能を追加する場合、モノリスに含まれる他のすべての機能に影響を与える可能性があります。開発者は、追加するすべてのコードについて影響を注意深く検討し、どのような障害も生じないことを確認する必要があります。一方、適切なマイクロサービスアーキテクチャでは、新しい機能のための新しいコードは、新しいサービスとなります。開発者は、2 つのマイクロサービス間の接続を明示的に記述している場合を除き、自分の記述したコードが既存のコードにまったく影響を与えないことを確信できます。