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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
81
образом совершается полный цикл движения ценности от разработчиков к
заказчикам.
2.2.3 Характеристика результатной информации
Таким образом, мы можем доставлять код в различные окружения в
самые короткие сроки. Если код необходимо экстренно быстро доставить на
производственное окружение, это займёт около 2 часов с интеграционными
тестами. В среднем, доставка кода в тестовое окружение составляет 5-10 раз в
день, тогда как в производственное окружение раз в 2 недели при завершении
периода спринта разработки.
Также мы можем получать информацию из системы в виде логов и
собирать из них аналитику, следить за состоянием системы и реагировать на её
нештатное поведение очень быстро, понимая, что происходит с каждым
компонентом системы.
И затем конечный пользователь может получать и отправлять
информацию из платформы при помощи устойчивой масштабируемой системы
с балансировкой трафика.
Для программистов, системных инженеров и тестировщиков единый
интерфейс взаимодействия инфраструктурой – посредством кода.
82
2.3 Программное обеспечение задачи
2.3.1 Общие положения (дерево функций и сценарий диалога)
Код двигается от программистов в окружение как представлено на
рисунке:
Рисунок 36. Схема построения конвейера выпуска программного
продукта
Код для разработчиков является методом общения с системой как с
чёрным ящиком, абстрагировавшись от поддержки сетей, хранилищ данных,
серверных систем. Они предоставляют свой код в декларативном виде, и система
разворачивает для них необходимую инфраструктуру, в конечном итоге
предоставляя полную информацию о своём состоянии в любой промежуток
времени.
83
Рисунок 37. Дерево функций
84
Рисунок 38. Сценарий диалогов
2.3.2 Характеристика базы данных
Подходы к гибким системам подразумевают отсутствие хранения
состояния при декларативном подходе. Всегда будет ровно то количество
ресурсов, которое будет запрошено непосредственно из кода, поэтому в роли баз
данных используются BitBucket для хранения кодовой базы, Amazon S3 [23]
сервис для хранения запускаемых скриптов и состояния системы Terraform для
удобства совместной работы. Для хранения логов используется ElasticSearch, где
создаются отдельные индексы для каждой конкретной даты из сервисов и
сервера Nginx [13]. Для каждого события создаётся контекст с бизнес-метками и
служебной информацией, по которым затем можно делать выборку и аналитику.
Для хранения метрик используется база данных временных рядов InfluxDB,
ориентированная на хранение событий, связанных со временем
85
Таблица 5
Структура таблицы логов в ElasticSearch
Наименование
поля
Идентификатор поля
Тип
поля
Прочее
Отсечка времени
@timestamp
дата
Идентификационный
нормер
_id
строка
ключевое
поле
Наименование
индекса
_index
строка
Тип документа
_type
строка
Наименование
сервиса
app
строка
ID в CloudWatch
cloudwatch_logs.event_id
число
Поток логов
cloudwatch_logs.log_stream
строка
Имя хоста
hostname
строка
Название логгера
logger_name
строка
Уровень импакта
level
строка
Тело сообщения
message
строка
Название окружения
profile
строка
Трассировка ошибки
stack_trace
объект
Рисунок 39 Общая схема базы данных всех индексов в ElasticSearch
2.3.3 Структурная схема пакета (дерево вызова программных модулей)
Таким образом собирается цельный конвейер, части которого
автоматизированы и связаны друг с другом.
Таблица 6
Структурная схема инфраструктуры
п/п
Наименование
модуля
Функции модуля
1.
BitBucket
Хранение программного и инфраструктурного кода
2.
TeamCity 2019.2
(71499)
Автоматизация запуска сборки, тестов,
деплоймента приложений, разворачивания
инфраструктуры
86
п/п
Наименование
модуля
Функции модуля
3.
Terraform 0.12.23
Разворачивание инфраструктуры внутри AWS
4.
Packer 1.5.4 [27]
Подготовка к запуску образов операционных
систем с предустановленными программами,
модулями и компонентами. В этом кейсе
используется для разворачивания образа Nginx
[13] сервера с предустановленными
AWS CloudWatch [35] Agent для передачи логов
AWS ES Proxy для проксирования трафика до
Kibana сервера
Monit для мониторинга и автоматического
перезапуска вышедших из строя сервисов
5.
Amazon ECR
Для хранения Docker [8] образов, в которые
завёрнуты бинарные файлы сервисов HAPICloud
6.
Amazon ECS
Используется как Runtime для запуска Docker [8]
контейнеров
7.
Ansible 2.9.6
Используется для управления конфигурациями
серверов Nginx, Wazuh, Logstash, SonarQube
8.
Amazon SSM [24]
Cloud Version
Для запуска по расписанию автопатчинга
серверов, управления через консоль,
автоматизации управления конфигурациями.
9.
AWS Cloud Version
В роли виртуального частного облака, где
разворачивается архитектура и необходимые
сервисы
10.
ElasticSearch 7.1
Используется для хранения логов и метрик из
сервисов и серверов
11.
Kibana 7.1
Используется для аналитики и удобной работы с
логами и телеметрией
12.
Logstash 7.6.0
Транспортер логов между пограничными
серверами, CloudWatch и ElasticSearch
13.
OpsGenie Cloud
Version
Используется как средство рассылки оповещений,
алёртинга, организации технической поддержки,
создания инцидентов и постмортемов
14.
Buffer Writer
0.42.0
Читает данные из топиков Кафки и сохраняет
нормализованные сообщения в промежуточном
PostgreSQL
15.
Flow Manager
0.42.0
API для изменения конфигурации (каналы, потоки
и т. Д.)
16.
OXI
Receiver/Producer
0.42.0
Преобразует данные из OXI и отправляет
сообщения обратно в OXI
17.
Command API
0.42.0
API для изменения данных в системах управления
недвижимостью
18.
Repository API
0.42.0
API для доступа к нормализованным данным PMS,
хранящимся в MongoDB
19.
Identity Resolver
0.42.0
Предоставить внутренний API для разрешения
перекрестных ссылок
20.
Mongo Consumer
Принимает нормализованные сообщения от Кафки
и сохраняет их в MongoDB
21.
Sender 0.42.0
Отправляет нормализованные сообщения из
PostgreSQL третьему лицу через HTTPS
87
п/п
Наименование
модуля
Функции модуля
22.
Producers
Converter 0.42.0
Преобразует данные из внешнего формата PMS в
модель данных Hapi
23.
Key Keeper 0.42.0
Authentication API
24.
Hapi Consumer
0.42.0
Отправляет исходящие сообщения HTTP
25.
Hapi Admin
Console 0.42.0
Управление конфигурациями
26.
NGINX 1.17.7 [13]
Web-сервер для проксирования трафика от
клиентов и обратно к сервисам HAPICloud
27.
OpenSSH 8.2
Протокол для удалённого управления серверами
SSH, установленного на Ubuntu 18.04.
Используется как bastion сервер
28.
RDS for
PostgreSQL 10.4
Хранит исходящие HTTP-сообщения и
перекрестные ссылки
29.
MongoDB 4.0.13
Cloud Version
Хранит данные конфигурации (каналы, потоки и
т. д.)
30.
Kafka 2.1 Cloud
Version
Создание конвейеров данных в реальном времени
и стриминг потоков
31.
Prometheus 2.14.0
Мониторинг
88
2.3.4 Описание программных модулей
Рисунок 40. Организация процессов сервера интеграций
89
Рисунок 41. Организация процесса разворачивания среды
90
2.4 Контрольный пример реализации проекта и его описание
Рисунок 42. Административная панель сервера интеграции
Рисунок 43. Сформированные сборки для различных сред

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)