Разбивка монолитного приложения на микросервисы с помощью 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 на GitHub

 Последнее обновление

31 марта 2023 г.

Модули

Данное руководство разделено на перечисленные ниже модули. Вы должны завершить каждый из них, прежде чем переходить к следующему.

  1. Настройка (20 минут). В этом модуле вы установите и настроите интерфейс командной строки AWS, установите AWS Copilot и Docker.
  2. Контейнеризация и развертывание монолита (30 минут). В этом модуле вы разместите приложение в контейнере, создадите экземпляр управляемого кластера вычислительных инстансов EC2 с помощью AWS Copilot и развернете образ в виде контейнера, работающего в кластере.
  3. Разбивка монолитного приложения (20 минут). В этом модуле вы разделите приложение Node.js на несколько взаимосвязанных сервисов и отправите образ каждого из них в репозиторий Эластичного реестра контейнеров Amazon (Amazon ECR).
  4. Развертывание микросервисов (30 минут). В этом модуле вы выполните развертывание приложения Node.js в виде набора взаимосвязанных сервисов на базе Балансировщика нагрузки приложений (ALB). Затем вы с помощью Балансировщика нагрузки приложений переключите трафик с монолитной архитектуры на микросервисы.
  5. Очистка (10 минут). В этом модуле выполняется удаление ресурсов, созданных в ходе обучения. Вы остановите работу сервисов, запущенных в Amazon ECS, удалите Балансировщик нагрузки приложений и стек AWS CloudFormation, а затем удалите кластер ECS, включая все базовые инстансы EC2.

Помогла ли вам эта страница?