Научная статья на тему 'НЕПРЕРЫВНОЕ РАЗВЕРТЫВАНИЕ ПО'

НЕПРЕРЫВНОЕ РАЗВЕРТЫВАНИЕ ПО Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
212
37
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
КОНВЕЙЕР / ТЕСТИРОВАНИЕ / АВТОМАТИЗАЦИЯ / РАЗВЕРТЫВАНИЕ / ДОСТАВКА ПРИЛОЖЕНИЙ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Нуртдинов Э.Э.

Статья посвящена процессу автоматизированной сборки, тестирования и развертывания программ. В ней описывается необходимость подхода, использующего автоматизированные конвейеры для доставки изменений на серверные контуры

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

CONTINUOUS SOFTWARE DEPLOYMENT

The article is devoted to the process of automated assembly, testing and deployment of programs. It describes the need for an approach that uses automated pipelines to deliver changes to server loops.

Текст научной работы на тему «НЕПРЕРЫВНОЕ РАЗВЕРТЫВАНИЕ ПО»

УДК 004.453.4

Нуртдинов Э.Э.

магистрант 2 курса, кафедра автоматизированных систем управления Уфимский государственный авиационный технический университет

(г. Уфа, Россия)

НЕПРЕРЫВНОЕ РАЗВЕРТЫВАНИЕ ПО

Аннотация: статья посвящена процессу автоматизированной сборки, тестирования и развертывания программ.

В ней описывается необходимость подхода, использующего автоматизированные конвейеры для доставки изменений на серверные контуры.

Ключевые слова: конвейер, тестирование, автоматизация, развертывание, доставка приложений.

Автоматизированный шаблон развёртывания

Наиболее важная проблема, с которой сталкиваются разработчики при развертывании ПО, состоит в следующем: как в кратчайший срок предоставить пользователям очередную версию приложения после добавления в него нового средства? Новые полезные идеи появляются весьма часто. Кроме того, после обнаружения ошибки в приложении необходимо как можно быстрее устранить ее и предоставить пользователям исправленную версию. В настоящий момент существует много методик развертывания ПО, однако они посвящены, главным образом, управлению требованиями к развертыванию и влиянию этих требований на разработку приложения. Что же происходит, когда требования определены, решение найдено, а приложение создано и протестировано? Как объединить эти этапы таким образом, чтобы весь процесс был как можно более быстрым и надежным? Как организовать взаимодействие разработчиков, тестировщиков и администраторов наиболее эффективным образом? [1, С. 24]

Главный шаблон называется конвейером развертывания. В сущности, это реализация автоматизированных процессов сборки, установки, тестирования и поставки релиза. Конвейеры развертывания могут быть организованы по-разному, в зависимости от технологических особенностей поставки релизов, однако фундаментальные принципы непрерывного развертывания одинаковы в любых ситуациях. Пример конвейера развертывания приведен на рис. 1.

Стадия фиксации Автоматический Ручное

Компиляция Автоматический тестирование Релиз

Модульные гесты приемочным тест Демонстрация

Анализ тест производитель- Исследовательское

Инсталляторы сборок ности тестирование

Рис. 1. Типичный конвейер развертывания

Скорость и качество сборки продукта — главные конкурентные преимущества в разработке программного обеспечения. Поэтому на смену архаическим моделям программирования, таким как императивная, структурная или модульная, начала приходить новая концепция CI/CD — Continuous integration и Continuous delivery - непрерывная интеграция и непрерывная доставка. Она помогает свести к минимуму ошибки, повысить темпы сборки и качество разрабатываемого продукта. [1, С. 31]

CI/CD — одна из практик DevOps, подразумевающая непрерывную интеграцию и доставку. Этот набор принципов предназначен для повышения удобства, частоты и надежности развертывания изменений программного обеспечения или продукта. CI/CD относится к agile-практикам и позволяет разработчикам уделять внимание реализации бизнес-требований, качеству кода и безопасности продукта. [2, С. 184]

Цели CI/CD:

- обеспечение последовательного и автоматизированного способа сборки, упаковки и тестирования продуктов или приложений;

- автоматизация развертывания в разных окружениях;

- сведение к минимуму ошибок и проблем.

Принципы CI/CD:

- Разделение ответственности. Каждый из участников процесса делит ответственность за те или иные этапы жизненного цикла продукта. Проектируется бизнес-логистика, внедряются сквозные функции, проводятся приемочные тесты и организуется логистика кода.

- Снижение рисков. Каждая команда, участвующая в разработке продукта, стремится к снижению рисков — контролируется корректность бизнес-логистики, проверяется пользовательский опыт, улучшается хранение и обработка данных и прочее.

- Сокращение цикла обратной связи. Разработчик и клиент должны стремиться к увеличению скорости внесения изменений и согласования правок. Сборку и тестирование кода можно автоматизировать. А для ситуаций, когда требуется участие человека, можно минимизировать число информационных посредников.

- Реализация среды. У разработчиков должно быть общее рабочее пространство с основной и вспомогательными ветками для контроля версий и качества, приемлемости, отказоустойчивости и других критериев. [2, стр 185].

- Главной целью методологии непрерывного развертывания является автоматизация тестов. Ручные тесты обходятся недешево, особенно когда тестировать приходится часто. Каждый тест должен выполняться и анализироваться человеком. Автоматизированные тесты, с другой стороны, должны быть автоматизированы только один раз. Последующие запуски автоматизированных тестов практически ничего не стоят. Благодаря методологии непрерывного развертывания приложения часто развертываются и, соответственно, часто тестируются. Поэтому тестирование приходится автоматизировать, иначе его стоимость будет слишком высока. [3, С. 213].

Проблемы ручного развертывания

Со временем технологии развертывания все больше автоматизируются. В идеале при ручном развертывании ПО в средах разработки и тестирования и в

рабочей среде должны решаться две задачи: первая - выбор версии и предопределенной среды, вторая - щелчок на кнопке ''Установить''. Выпуск пакета ПО должен быть одним автоматизированным процессом, создающим инсталляторы.

• Когда развертывание автоматизировано не полностью, часто возникают ошибки. Единственный вопрос: насколько они существенны. Даже если тесты хорошо спрограммированы, тяжело отследить источники ошибок.

• Когда развертывание не автоматизировано, оно не может выполняться как надежный, часто повторяющийся процесс. В результате тратится много времени на обнаружение и устранение ошибок развертывания, а не приложения.

• Процесс ручного развертывания должен быть документирован. Поддержка документации - сложная задача. На ее решение тратится много времени, и требуется вовлечение многих людей. Тем не менее документация чаще всего неполная и всегда устаревшая. В то же время в автоматизированном процессе в качестве документации служат сценарии развертывания.

• Автоматизация развертывания способствует сотрудничеству участников процесса, потому что все, что необходимо для развертывания, явно отображено в сценарии.

В то же время при ручном развертывании документация предполагает определенный уровень знаний читателя и часто представляет собой не более чем ''записную книжку'', в которую разработчик записывает отдельные важные сведения. Другим людям тяжело читать такой ''конспект''.

• Следствие вышесказанного: ручное развертывание зависит от квалификации исполнителя, и когда он увольняется или уходит в отпуск, приемник оказывается в затруднительном положении.

• Развертывание вручную - весьма рутинный процесс, тем не менее требующий высокой квалификации. Когда квалифицированные специалисты делают скучную, рутинную работу, они неизбежно совершают ошибки самых

разных типов. Автоматизация развертывания освобождает высокооплачиваемых специалистов для более интеллектуальной работы.

• Единственный способ проверки процесса ручного развертывания состоит в его повторении. Часто это дорогостоящий процесс, требующий много времени. Автоматизированное развертывание дешевле, и его легче проверить.

• Автоматизированное развертывание следует использовать всегда; оно должно быть единственной технологией выпуска ПО. Сценарий развертывания можно запустить в любой момент, когда это необходимо. Благодаря этому в критический день поставки релиза используется сценарий, протестированный сотни раз. Если возникают проблемы с поставкой релиза, можно быть уверенным, что они связаны с конфигурацией среды, а не сценарием. Иногда ручное развертывание проходит довольно гладко, но чаще всего это не так. Общепризнанно, что процесс развертывания может содержать ошибки и существенно задерживать выпуск.

СПИСОК ЛИТЕРАТУРЫ:

Джез Хамбл, Дейвид Фарли АВТОМАТИЗАЦИЯ ПРОЦЕССОВ СБОРКИ, ТЕСТИРОВАНИЯ И ВНЕДРЕНИЯ НОВЫХ ВЕРСИЙ ПРОГРАММ // Вильямс, 2011. 433с.

Руководство по DevOps. Как добиться гибкости, надежности и безопасности мирового уровня в технологических компаниях | Хамбл Джез, Ким Джин. // Mann 2018. 507с.

Continuous delivery. Практика непрерывных апдейтов | Вольф Эберхард 2018. 312 с.

Nurtdinov E.E.

2nd year Master student, Department of Automated Control Systems Ufa State Aviation Technical University (Ufa, Russia)

CONTINUOUS SOFTWARE DEPLOYMENT

Abstract: the article is devoted to the process of automated assembly, testing and deployment of programs.

It describes the need for an approach that uses automated pipelines to deliver changes to server loops.

Keywords: pipeline, testing, automation, deployment, application delivery.

i Надоели баннеры? Вы всегда можете отключить рекламу.