Дипломная работа: Автоматизация доставки программного обеспечения при помощи DevOps практик и инструментов в облаке AWS в компании ООО "Команда Лабс"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
26
Полный цикл потока данных
Давайте рассмотрим полный цикл движения данных от клиента, затем
внутри HAPI платформы и далее обратно к клиенту, как представлено на схеме
Рисунок 9. Схема движения данных в платформе HAPI
Как мы видим, сообщения из PMS клиента попадают в специальный
роутер, где определяется, по какому пути будут двигаться данные внутри
платформы HAPI, затем данные передаются в соответствующего продюсера,
который их парсит и складывает в топики журналов Kafka. Затем данные
забираются сервисом Producer-converters, где данные нормализуются и
отправляются с помощью Flow-topic-decoder в сервис Flow-topics, который
27
определяет дальнейшее движение данных: они либо складываются в
документно-ориентированную базу данных MongoDB, непосредственно обратно
в PMS или CMS или в платформу, предназначенную для анализа данных,
например, Salesforce.
1.2 Характеристика комплекса задач, задачи и обоснование
необходимости автоматизации
1.2.1 Выбор комплекса задач автоматизации и характеристика
существующих бизнес процессов
Схема инфраструктуры, в которой работает платформа HAPI выглядит
следующим образом:
Рисунок 10. Схема инфраструктуры внутри частного облака AWS [3]
28
Amazon представляет сервис, который называется Elastic Container
Service [7], который позволяет запускать наши Docker [8] контейнеры в Fargate
кластере, абстрагировавшись от поддержки и обслуживания сетевой настройки,
настройки автоскейлинга и поддержки контейнерной платформы, что сильно
удешевляет процесс настройки и поставки программного обеспечения. Из
коробки ECS предоставляет достаточно много инструментов для гибкой
настройки деплоймента. Вначале необходимо создать Docker образ, в который
мы помещаем бинарные артефакты после сборки с помощью Maven [9]
фреймворка для автоматизации сборки проектов на основе описания их
структуры в файлах на языке POM, являющемся подмножеством XML, из кода,
который написан разработчиками на языках Java и Kotlin:
Листинг сборки Docker образа
FROM alpine:3.10
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en'
LC_ALL='en_US.UTF-8'
ENV JAVA_VERSION jdk-12.0.1+12
ENV JAVA_HOME=/opt/java/openjdk \
PATH="/opt/java/openjdk/bin:$PATH"
ADD target/service-distribution/lib /usr/share/jvmservice/lib
ADD target/service-distribution/analytics-api-0.31.0.jar
/usr/share/jvmservice/service.jar
CMD java $JAVA_OPTS -jar /usr/share/jvmservice/service.jar
В примере выше мы берём Docker образ OS Alpine (я не привожу полный
листинг), устанавливаем Java 12.0.1 и затем добавляем внутрь образа артефакт,
который был создан на предыдущем шаге, в данном случае это «ADD
target/service-distribution/analytics-api-0.31.0.jar». Затем мы билдим наш образ при
помощи команды docker build, добавляем теги номера версии и хеша последнего
коммита в гите, чтобы отличать контейнеры друг от друга, и затем отправляем
образ в наше хранилище контейнеров Amazon Container Registry [10].
29
Рисунок 11. Приватное хранилище контейнеров Amazon Container
Registry [7]
Затем полученный образ нам необходимо развернуть на Elastic Container
Service [7]. Для этого нужно пойти в интерфейс ECS и добавить Task Definition.
Рисунок 12. Интерфейс добавления Task Definition
30
Рисунок 13. Конфигурирование опций запуска сервисов в Task
Definition
Здесь мы видим, что необходимо вручную заполнить много полей, что
чревато большим количеством ошибок и потерей времени.
Источник: https://baza.diplomsite.ru/previewfile/1758