Эффективная разработка по с помощью ci/cd.
В статье рассматриваются актуальный подход разработки ПО с использованием CI/CD. Продемонстрированы механизмы непрерывной интеграции и доставки, который упрощают и ускоряют все этапы разработки, автоматизируют ключевые процессы.
Авторы публикации
Рубрика
IT-Технологии
Журнал
Журнал «Научный лидер» выпуск # 20 (65), май ‘22
Дата публицакии 13.05.2022
Поделиться

Информационные технологии давно стали неотъемлемой частью современной экономики, и их значимость только продолжает расти [1]. Такой стремительный спрос побуждает бизнес не только внедрять новые цифровые решения, но и постоянно модернизировать уже применяемые технологии, поддерживать их бесперебойную работу и обеспечивать безопасность [2].
Возникает вопрос, как организовать разработку ПО так, чтобы конечный продукт мог подстраиваться под потребности пользователей. С поставленной задачей отлично справляется методология CI/CD, которая в настоящий момент активно применяется в разработке.
CI/CD (Continuous Integration, Continuous Delivery) – технология непрерывной интеграции и непрерывной доставки, которая позволяет существенно повысить качество продукта, упростить и ускорить все этапы разработки, автоматизировать ключевые процессы.
Непрерывная интеграция CI – подход к разработке, при котором каждый программист регулярно проводить слияние своего программного кода в основную ветку разработки. Таким образом основная ветка всегда находится в актуальном состоянии. Чем чаще происходит слияние рабочих копий программного кода в общую ветвь, тем проще контролировать и устранять конфликты, возникающие при слиянии кода.
Любое изменение в коде приводит к автоматическому запуску сборки и тестирования проекта. При совместной работе нескольких разработчиков каждый из них должен быть уверен, что его изменения не приведут к сбою в работе приложения. Для этого после слияния кода, изменения, внесенные программистами, проверяются путем выполнения модульного и интеграционного тестирования. Тщательное тестирование позволяет убедиться в корректной работе приложения и в том, что внесенные изменения не вызывают ошибок.
Если конфликты между новым и существующим кодом все-таки будут обнаружены CI облегчает исправление этих ошибок.
Стандартный подход к разработке подразумевал, что программисты пишут код независимо друг от друга и стадия интеграции выступает заключительным этапом. При таком подходе слияние всех участков кода в основную ветку было затруднено и приводило к выявлению внушительного количества ошибок, решение которых сильно задерживало релиз проекта.
Переход к непрерывной интеграции позволяет снизить трудоёмкость работы и сделать её более предсказуемой за счёт раннего и непрерывного обнаружения и устранения ошибок и противоречий.
Непрерывная доставка + непрерывное развертывание CD – автоматизации процессов отправки кода в репозиторий и выпуска протестированных и готовых к работе сборок.
После интеграционного и модульного тестирования в CI непрерывная доставка автоматизирует выпуск проверенного кода в репозиторий. Основная цель непрерывной доставки — иметь кодовую базу, полностью готовую к развертыванию в производственной среде.
Благодаря непрерывной доставке процесс развертывания перестает быть таким трудоемким так, как каждый этап — от слияния изменений кода до поставки готовых сборок — включает автоматизацию тестирования и автоматизацию выпуска кода.
Когда изменения в коде успешно прошли все предыдущие этапы начитается непрерывное развертывание, которое автоматизирует и позволяет быстро и легко развернуть приложение в производственной среде. Такой подход гарантирует, что никакой новый релиз не станет причиной сбоя в работе приложения.
При традиционном подходе обновления выходили довольно редко, так как процесс их выпуска требовал серьезной подготовки, а отсутствие непрерывного тестирования на всех этапах приводило к тому, что выпущенное обновление было непригодно к использованию из-за различных конфликтов и сбоев.
Рис 1. Этапы CI/CD.
Концепция CI/CD играет одну из ключевых ролей в идеологии DevOps (Development & Operations), которая активно применяется для устранения жестких границ между программистами, тестировщиками и системными администраторами. Именно DevOps-инженеры занимаются созданием и поддержкой CI/CD процессов, тем самым упрощая взаимодействие между разными командами специалистов и ускоряя разработку проекта без ущерба для качества.
Кроме того, концепция CI/CD соответствует гибкой методологии Agile, которая является предшественником DevOps и также призвана оптимизировать этапы разработки.
Для реализации CI/CD практик существуют готовые инструменты– наиболее популярными являются Jenkins, GitLab, Docker, CircleCI и другие [6].
Метод разработки с применением CI/CD подойдет для широкого спектра задач, однако существуют сферы, в которых применение данной методологии будет неоправданно — например, в сферах с редким обновлением софта.
Однако в остальных сферах в условиях жесточайшей конкуренции CI/CD становится незаменим. Методология обеспечивает тестирование на протяжении всего цикла разработки, значительно упрощает слияние кода и сокращает сроки разработки и релиза продукта.
Кроме вышеизложенных преимуществ использование данной методологии повышает качество кода за счет раннего обнаружения ошибок, минимизирует человеческий фактор при написании кода и обеспечивает обратную связь с клиентами, которые в качестве отклика на свои запросы получают от разработчиков регулярные обновления.
Список литературы
- What is CI/CD? Continuous integration and continuous delivery explained [Электронный ресурс] https://www.infoworld.com/article/3271126/what-is-cicd-continuous-integration-and-continuous-delivery-explained.html
- Best 14 CI/CD Tools You Must Know | Updated for 2022 [Электронный ресурс] https://katalon.com/resources-center/blog/ci-cd-tools
- Уринцов А.И. СИСТЕМА ФОРМИРОВАНИЯ И ПРИНЯТИЯ РЕШЕНИЙ В УСЛОВИЯХ ИНФОРМАТИЗАЦИИ ОБЩЕСТВА Москва, 2008.
- Уринцов А.И., Дик В.В. СИСТЕМЫ ПОДДЕРЖКИ ПРИНЯТИЯ РЕШЕНИЙ И УПРАВЛЕНИЯ ЭФФЕКТИВНОСТЬЮ БИЗНЕСА Москва, 2009
- Уринцов А.И. СТРУКТУРНЫЙ АНАЛИЗ И ПРОЕКТИРОВАНИЕ РАСПРЕДЕЛЕННЫХ ЭКОНОМИЧЕСКИХ СИСТЕМ Экономика и математические методы. 1997. Т. 33. № 4. С. 141-152.
- What is CI/CD? [Электронный ресурс] https://www.redhat.com/en/topics/devops/what-is-ci-cd
- Краткий обзор методологии CI/CD: принципы, этапы, плюсы и минусы [Электронный ресурс] https://sbercloud.ru/ru/warp/cicd-about
Предоставляем бесплатную справку о публикации, препринт статьи — сразу после оплаты.