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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
101
Y
T
= T
0
/ T
1
= 33120 / 207 = 160
К стоимостным показателям относятся: абсолютное снижение
стоимостных затрат (
C) в рублях за год, коэффициент относительного
снижения стоимостных затрат (К
C
) индекс снижения стоимостных затрат (Y
C
),
рассчитываемые аналогично.
Cрок окупаемости затрат на внедрение проекта машинной обработки
информации
ок
), рассчитываемые в годах, долях года или в месяцах года:
Т
ок
= К
П
/
C = (4000*4)/(4000*7*12) = 0,0476
Где К
П
- затраты на создание проекта (проектирование и внедрение).
Рисунок 55 Диаграмма изменения трудовых затрат
0
5000
10000
15000
20000
25000
30000
35000
Category 1
T0 T1 DT
102
Рисунок 56 Затраты на разворачивание продукта
Рисунок 57 Тестирование продукта
Рисунок 58 Разворачивание инфраструктуры
0
50
100
150
200
250
Manual Ci/CD
DLT MTTR MTTD
0
50
100
150
200
250
Manual Ci/CD
DLT MTTR MTTD
0
100
200
300
400
500
600
700
800
900
1000
Manual Ci/CD
DR MTTR
103
Вывод к 3 главе
Применение DevOps практик и инструментов значительно ускорили
доставку программного обеспечения и ускорили развёртывание в 213 раз. Также
это позволило сократить количество ошибок, которые случаются при ручном
разворачивании сервисов и инфраструктуры. Также увеличилась скорость
тестирования продукта и обнаружение ошибок в 200 раз. Скорость
разворачивания инфраструктуры увеличилась в 400 раз. Это позволяет добавлять
новых клиентов с новыми требованиями значительно быстрее, что позволяет
увеличить клиентов и прибыль в 4 раза при существующих объёмах
инфраструктуры.
104
Заключение
В проекте удалось сократить значительно время движения кода по
конвейеру доставки к клиенту. Вместо 3-8 недель инфраструктура
разворачивается и проходит тестирование от 45 минут до 2 часов, и Time to
market теперь составляет 2 недели — ровно столько необходимо для проведения
одного спринта и доставки нового релиза сервисов.
В результате мы смогли автоматизировать следующие шаги:
Сборка кода и зависимостей
Создание артефактов для доставки в окружения
Разворачивание контейнерной инфраструктуры на
основе Docker
Тестирование
Наблюдаемость всех компонентов платформы (сбор
метрик и событий в процессе доставки и работы)
Доставка артефактов в выбранное окружение
Автоматизация выкладки программного обеспечения и методы и
подходы, которые подразумевают DevOps практики и инструменты — одна из
самых востребованных технологических идеологий последнего времени.
Благодаря им мы смогли достичь:
Снижение трудозатрат на развёртывание
Снижение трудозатрат на тестирование, благодаря
автоматизации запуска тестов в тестовых окружениях
Понимание того, что происходит с системой, высокая
наблюдаемость системы, благодаря агрегации метрик и логов
Быстрая обратная связь на каждом этапе разработки,
благодаря агрегации метрик и логов
Быстрое развёртывание окружение с нуля, что помогает
избегать слайд-эффектов от предыдущих настроек
105
Идемпотентная система, которая ведёт себя каждый раз
одинаков при одних и тех же условиях
Код является частью документации
Работа с инфраструктурой как с кодом значительно
снижает количество ошибок по сравнению с ручным
развёртыванием
Мы можем приносить больше нового функционала для
наших заказчиков, сосредоточившись на написании кода, а не на
эксплуатации
Мы быстрее вносим правки в код, и они попадают в
производственное окружение в течение часа с момента обнаружения
Отсутствие слайд-эффектов после предыдущих
конфигураций
Идемпотентность системы.
Значительно удешевили затраты на разворачивание
инфраструктуры
106
Список использованной литературы
[1]
Постигая Agile. Ценности, принципы, методологии, Москва: Миф.
IT, 2019.
[2]
К. Рубин, Essential Scrum: A Practical Guide to the Most Popular Agile
Process, Pearson Education, 2013.
[3]
К. Моррис, Infrastructure as Code, O'Reilly, 2016.
[4]
«The Hospitality Industry Becomes a “HAPI-er” Place with the Launch
of HAPI’s Integrated Data Platform,» [В Интернете]. Available:
https://www.hospitalitynet.org/news/4088431.html.
[5]
Apache, «Kafka,» Apache Software Foundation, 2020. [В Интернете].
Available: https://kafka.apache.org/.
[6]
М. В. Андреас Виттиг, Amazon Web Services in Action, Manning,
2015.
[7]
Amazon, «Amazon Container Services,» [В Интернете]. Available:
https://aws.amazon.com/ru/ecs/.
[8]
Э. Моуэт, Использование Docker, Москва: ДМК, 2017.
[9]
Apache, «maven.apache.org,» Apache, [В Интернете]. Available:
https://maven.apache.org/.
[10]
Amazon, «Amazon Container Registry,» Amazon, 2020. [В Интернете].
Available: https://aws.amazon.com/ru/ecr/.
[11]
К. Д. У. Д. Х. Д. Патрик Дюбуа, Руководство по DevOps, Москва:
ООО Манн, Иванов и Фербер, 2018.
[12]
Amazon, «AWS Security Groups,» Amazon, 2020. [В Интернете].
Available:
https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html.
[13]
Д. Айвалиотис, Администрирование сервера NGINX, Москва: ДМК,
2015.
107
[14]
Amazon, «Amazon IAM,» Amazon, 2020. [В Интернете]. Available:
https://aws.amazon.com/ru/iam/.
[15]
Amazon, «EC2,» Amazon, 2020. [В Интернете]. Available:
https://aws.amazon.com/ru/ec2/.
[16]
Ф. Д. Хамбл Джез, Непрерывное развертывание ПО. Автоматизация
процессов сборки, тестирования и внедрения новых версий программ,
Вильямс, 2016.
[17]
JetBrains, «TeamCity CI/CD Server,» JetBrains, 2020. [В Интернете].
Available: https://www.jetbrains.com/ru-ru/teamcity/.
[18]
Л. Хохштейн, "Запускаем Ansible" Простой способ автоматизации
управления конфигурациями и развертывания приложений, Москва: ДМК-
Пресс, 2018.
[19]
T. Fukuda, «Trivy - Vulnerability Scanner for Containers,» [В
Интернете]. Available: https://github.com/aquasecurity/trivy.
[20]
ElasticSearch, «ELK Stack,» в Elasticsearch, Kibana, Logstash и
поисковые системы нового поколения , Санкт-Петербург, Питер, 2018.
[21]
Athlassian, «OpsGenie Полное управление инцидентами для команд
разработчиков и ИТ-команд,» Athlassian, 2020. [В Интернете]. Available:
https://www.atlassian.com/ru/software/opsgenie.
[22]
Y. Brikman, Terraform: Up & Running: Writing Infrastructure as Code,
O'Reilly.
[23]
Amazon, «S3,» Amazon, 2020. [В Интернете]. Available:
https://aws.amazon.com/s3/?nc=sn&loc=0.
[24]
Amazon, «AWS Systems Manager,» Amazon, 2020. [В Интернете].
Available: https://aws.amazon.com/ru/systems-manager/.
[25]
Р. К. Джесс Рассел, Сетевая модель OSI, Книга по Требованию ,
2012.
108
[26]
Amazon, «RDS, Amazon Relational Database Service,» Amazon, 2020.
[В Интернете]. Available: https://aws.amazon.com/ru/rds/.
[27]
J. Turnbull, THE PACKER BOOK, 2017.
[28]
И. т. —. М. о. б. —. С. у. и. б. —. Требования, ISO/IEC 27001:2013.
[29]
S. S. Council, «PCI DSS,» Security Standarts Council, [В Интернете].
Available: https://ru.pcisecuritystandards.org/minisite/env2/.
[30]
И. технология, Системная и программная инженерия. Процессы
жизненного цикла программных сред, 01.03.2010.
[31]
В. Л. Р.Г. Асадуллаев, Системный анализ и управление, Белгород:
Научные ведомости, 2017.
[32]
Ф. А. П. Т. Р. И. МЕТРОЛОГИИ, Информационные технологии.
Системная и программная инженерия. УПРАВЛЕНИЕ ЖИЗНЕННЫМ
ЦИКЛОМ. Часть 2. Руководство по применению ИСО/МЭК 15288, Москва:
Стандартинформ, 2016.
[33]
B. Dorn, «more set headers,» 2017. [В Интернете]. Available:
https://github.com/openresty/headers-more-nginx-module.
[34]
Amazon, «AWS AMI,» Amazon, [В Интернете]. Available:
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html.
[35]
Amazon, «CloudWatch,» Amazon, 2020. [В Интернете]. Available:
https://aws.amazon.com/ru/cloudwatch/.
109
Приложения
Запуск сборки на сервере интеграции с разворачиванием сервисов
в ECS
#!/bin/bash
%aws_access%
echo "Account keys is " $AWS_ACCESS_KEY_ID
$AWS_SECRET_ACCESS_KEY
export AWS_DEFAULT_REGION=%region%
PROJECT_LOCATION=$(eval pwd)
echo project location is $PROJECT_LOCATION
PATH_TO_TASK_DEFENITION=%path_to_json%
vers=%maven.project.version%
VERSI="${vers//[!0-9\.]/}"
echo $vers
echo $VERSI
JSON=.json
FILE=file://
CLUSTER=%cluster_env%
ECR_ID=%ecr_id%
ENV=%infra%
PROJ=hapi-
SLASH=/
DASH=_
echo $PROJECT_LOCATION
cd $PROJECT_LOCATION
BUILD_NUMBER=%build.number%
GIT_HASH=%build.vcs.number.Hapi_ProdEu_Bitbucket%
echo $GIT_HASH
GIT_HASH_SHORT=${GIT_HASH:0:7}
echo $GIT_HASH_SHORT
110
version=`echo $ENV$DASH$VERSI`
echo 'Version will be used:' $version
#echo "##teamcity[buildNumber
'$BUILD_NUMBER.${GIT_HASH_SHORT}']"
GIT_TAG=$GIT_HASH_SHORT
find . -name "report*.txt" -exec rm -rf {} \;
cd %system.teamcity.build.workingDir%
#install trivy
#export TRIVY_VERSION=$(curl --silent
"https://api.github.com/repos/knqyf263/trivy/releases/latest" | grep '"tag_name":' | sed
-E 's/.*"v([^"]+)".*/\1/')
#wget
https://github.com/knqyf263/trivy/releases/download/v${TRIVY_VERSION}/trivy_
${TRIVY_VERSION}_Linux-64bit.tar.gz
#tar zxvf trivy_${TRIVY_VERSION}_Linux-64bit.tar.gz
find . -name Dockerfile | while read -r d; do
part1=`dirname "$d"`
part2=`basename "$d"`
echo 'Folder is ' $part1
# Currently next applications are excluded from deployment process, as
aren't used
if [[ ! ($part1 == *"test-message-receiver"* || $part1 == *"roomkey-
producer"* || $part1 == *"logus-producer"* || $part1 == *"sample-app"* || $part1 ==
*"rlh-il-consumer"* || $part1 == *"generic-router"* || $part1 == *"generic-
transformer"*) ]]; then
FULL_HAPI_APP_NAME=`echo "$part1" | sed 's#./##'`
FULL_HAPI_REPO_NAME=`echo
$PROJ$ENV$SLASH$FULL_HAPI_APP_NAME`
aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID

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

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