Розгортання масштабованої програми за допомогою AWS ElasticBeanstalk та Docker

Щоб досягти нашої мети, ми створимо повну референсну архітектуру.

pic

1. Back-end:

Почнемо з бекенду, створивши API (Інтерфейс програмування додатків) REST за допомогою Java та фреймворку Spring Boot.

Spring Boot широко використовується у світі та на ринку через свою масштабованість, продуктивність та універсальність. Наприклад, Netflix використовує цей фреймворк для досягнення кращої доступності своїх мікросервісів по всьому світу:

pic

Швидкий огляд цього кроку на бекенді

Я використаю spring data rest, data jpa та Postgre для створення реалізації CRUD, а також H2 для тестування та Lombok для абстракції всіх шаблонних кодів Java:

pic

Я буду використовувати JIB для упакування моєї програми з фронтендом в один jar файл, створюючи профілі та використовуючи плагін Maven для створення Docker-образу:

pic

pic

2. Front-end:

Фронтенд використовуватиме концепцію SPA (Single Page Application) з React.js, JavaScript-фреймворком, створеним компанією Facebook, який багато компаній використовують у своїх проєктах з низки причин:

  • Безкоштовна та з відкритим вихідним кодом бібліотека;
  • Хороша продуктивність;
  • Перевикористовуваність компонентів;

pic

pic

Приклад програми:

pic

Отже, на цьому етапі наша програма складається з одного SPA React-додатка на фронтенді, REST API на Java Spring Boot, що працює на бекенді, отримує та обробляє запити, використовуючи базу даних Postgre.

Все це буде упаковано плагіном JIB Maven в один jar файл і створить образ на Docker Hub через Docker Compose.

pic

3. Створення Docker-образу:

Плагін JIB побудує фронтенд та бекенд програми, упакує їх в один jar файл і відправить на Docker Hub.

pic

pic

4. AWS ElasticBeanstalk:

AWS EB (ElasticBeanstalk) є PaaS (Platform-as-a-Service), де можна керувати:

  • AWS інстансами: служба EC2
  • Групами безпеки
  • Масштабуванням (AutoScale)
  • Балансуванням навантаження (ELB)
  • Деплоєм коду та політикою розгортання
  • Версіонуванням артефактів: для зберігання використовується S3
  • Конфігурацією під час деплою (та, що відрізняється між тестом, staging та продакшеном…)

Кожен із цих сервісів AWS зазвичай потребує певної експертної підготовки, але в EB цього не потрібно. Ось чому EB може бути особливо привабливим для команд і компаній, що мають нестачу людських ресурсів або для стартапів, де ви надаєте права EB для керування вашими EC2, S3, ELB, AutoScale, моніторингом, розгортанням від вашого імені.

Деякі інші опції:

  • Heroku
  • Azure Web Sites
  • Google App Engine

Основним чином, PaaS зазвичай не дозволяє вам доступ до ОС (Операційної системи) та Middleware.

Різниця між IaaS-PaaS-SaaS:

pic

Середовище підтримує наступні мови:

  • Java
  • .NET
  • Go
  • PHP
  • Ruby
  • node.js
  • Python
  • Docker

Ми обрали деплой за допомогою Docker.

5.

Розгортання програми в AWS ElasticBeanstalk:

Наступна модель представляє нашу програму, що працює в AWS ElasticBeanstalk з потужністю еластичності, яка визначає, скільки інстансів нашої програми потрібно створити для задоволення попиту.

pic

Отже, в EB ми створюємо групу безпеки та визначаємо дозволи для роботи з програмою та її розгортання.

pic

pic

Далі, при реалізації з Docker-образом, ми вибираємо файл Docker Compose для завантаження всього образу в EB:

pic

pic

Сподіваюся, ця стаття допоможе вам у ваших дослідженнях або реальних програмах.

Ось приклад коду для ElasticBeanstalk:

https://github.com/deivisutp/igti-cicd-projeto-aplicado

Перекладено з: Deploying a scalable application with AWS ElasticBeanstalk and Docker

Leave a Reply

Your email address will not be published. Required fields are marked *