В этом модуле выполняется разбивка приложения 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. Каждый контейнер обрабатывает только одну функцию.
Изоляция повреждений
Даже лучшие проектные организации не застрахованы от критических повреждений в производственной среде. В дополнение к следованию всем стандартным рекомендациям по корректному устранению повреждений, одним из подходов, который может ограничить их воздействие, является создание микросервисов. Если микросервис имеет правильную архитектуру, в случае повреждения какого-либо элемента выйдет из строя только эта часть. Остальные элементы сервиса будут работать должным образом.
Изоляция для безопасности
Если одна функция монолитного приложения имеет уязвимость в системе безопасности, например возможность удаленного выполнения кода, следует предположить, что злоумышленник мог получить доступ к любой из функций системы. Это может быть опасным. К примеру, если функция загрузки аватара имеет проблему с безопасностью, в итоге под угрозой оказывается база данных с паролями пользователей. Разделение функций на микросервисы с помощью сервиса Amazon ECS позволяет защитить доступ к ресурсам AWS путем предоставления каждому сервису собственной роли AWS Identity and Access Management (IAM). Использование микросервисов – это оптимальный способ защиты. Если злоумышленник взломает один сервис, у него будет доступ только к его ресурсам. Он не сможет получить параллельный доступ к ресурсам из других сервисов, не взломав также их.
Независимое масштабирование
При разделении функций на микросервисы можно по отдельности увеличивать и уменьшать объем инфраструктуры и количество инстансов, используемых каждым классом микросервисов. Это облегчает измерение стоимости конкретной функции и определение функций, которые необходимо оптимизировать в первую очередь. Если для одной конкретной функции необходимы дополнительные ресурсы, это не оказывает влияния на другие функции, и производительность не снижается.
Скорость разработки
Использование микросервисов снижает риски в процессе разработки, что позволяет ускорить работу. Добавление новой функции в монолитное приложение может оказать отрицательное влияние на любую из уже имеющихся. Разработчики должны внимательно изучать влияние любого добавляемого кода и проверять, не нарушает ли он работу каких-либо функций. В правильной архитектуре микросервиса, в свою очередь, для каждой функции, добавляемой в новый сервис, создается новый код. Разработчики могут быть уверены, что никакой новый код не сможет повлиять на уже существующий, если не записана явная связь между двумя микросервисами.