Разбивка монолитного приложения на микросервисы с помощью AWS Copilot, Amazon ECS, Docker и AWS Fargate
УЧЕБНОЕ ПОСОБИЕ
Введение
Обзор
В этом учебном пособии вы выполните развертывание монолитного приложения Node.js в контейнере Docker и разделите это приложение на микросервисы, не прерывая его работу. Это приложение Node.js размещает простую доску объявлений, которая поддерживает потоки и обмен сообщениями между пользователями.
Почему это важно
Традиционные монолитные архитектуры очень трудно масштабировать. По мере роста базы кода ее обновление и обслуживание усложняются. Добавление новых возможностей, языков, платформ и технологий становится очень трудным, что ограничивает возможности инновации и внедрения новых идей.
В архитектуре микросервисов каждый компонент приложения становится отдельным сервисом, который взаимодействует с другими сервисами через четко определенные API. Микросервисы основываются на конкретных возможностях бизнеса, и каждый из них выполняет одну конкретную функцию. Для разных микросервисов можно использовать разные среды и (или) языки программирования, а также их можно развертывать независимо друг от друга, по одному или группами.
Что вы узнаете
В этом учебном пособии мы продемонстрируем размещение простого монолитного приложения в контейнере Docker, развертывание аналогичного приложения в формате микросервисов и переключение трафика на микросервисы без прерывания работы. Завершив работу, вы можете применить это пособие и созданный в нем код в качестве шаблона для создания и развертывания собственных микросервисов в контейнерах на AWS.
Монолитная архитектура
Полное приложение Node.js выполняется в контейнере как один сервис, и каждый его контейнер выполняет одни и те же функции.. Если повысится нагрузка на один из элементов такого приложения, придется масштабировать всю архитектуру.
Архитектура микросервисов
Каждая функция приложения Node.js выполняется как отдельный сервис в собственном контейнере. Эти сервисы можно масштабировать и обновлять независимо друг от друга.
Предварительные требования
- Аккаунт AWS. Если у вас его еще нет, ознакомьтесь с кратким обзором в руководстве по настройке среды AWS.
- Установленный и настроенный интерфейс командной строки AWS.
- Установленный и настроенный сервис AWS Copilot.
- Установленный и настроенный Docker
- Текстовый редактор. В этом уроке мы будем использовать VS Code, но его можно заменить любой привычной средой IDE.
Опыт работы с AWS
Средний уровень
Минимальное время выполнения
110 минут
Стоимость выполнения
Доступно для уровня бесплатного пользования
Требования
- Аккаунт AWS. Если у вас его еще нет, ознакомьтесь с кратким обзором в руководстве по настройке среды AWS.
- Установленный и настроенный интерфейс командной строки AWS.
- Установленный и настроенный сервис AWS Copilot.
- Установленный и настроенный Docker.
- Текстовый редактор. В этом уроке мы будем использовать VS Code, но его можно заменить любой привычной средой IDE.
Используемые сервисы
Код
Последнее обновление
Модули
Данное руководство разделено на перечисленные ниже модули. Вы должны завершить каждый из них, прежде чем переходить к следующему.
- Настройка (20 минут). В этом модуле вы установите и настроите интерфейс командной строки AWS, установите AWS Copilot и Docker.
- Контейнеризация и развертывание монолита (30 минут). В этом модуле вы разместите приложение в контейнере, создадите экземпляр управляемого кластера вычислительных инстансов EC2 с помощью AWS Copilot и развернете образ в виде контейнера, работающего в кластере.
- Разбивка монолитного приложения (20 минут). В этом модуле вы разделите приложение Node.js на несколько взаимосвязанных сервисов и отправите образ каждого из них в репозиторий Эластичного реестра контейнеров Amazon (Amazon ECR).
- Развертывание микросервисов (30 минут). В этом модуле вы выполните развертывание приложения Node.js в виде набора взаимосвязанных сервисов на базе Балансировщика нагрузки приложений (ALB). Затем вы с помощью Балансировщика нагрузки приложений переключите трафик с монолитной архитектуры на микросервисы.
- Очистка (10 минут). В этом модуле выполняется удаление ресурсов, созданных в ходе обучения. Вы остановите работу сервисов, запущенных в Amazon ECS, удалите Балансировщик нагрузки приложений и стек AWS CloudFormation, а затем удалите кластер ECS, включая все базовые инстансы EC2.