Эффективная разработка по с помощью ci/cd.

Эффективная разработка по с помощью ci/cd.

В статье рассматриваются актуальный подход разработки ПО с использованием CI/CD. Продемонстрированы механизмы непрерывной интеграции и доставки, который упрощают и ускоряют все этапы разработки, автоматизируют ключевые процессы.

Авторы публикации

Рубрика

IT-Технологии

Журнал

Журнал «Научный лидер» выпуск # 20 (65), май ‘22

Поделиться

Информационные технологии давно стали неотъемлемой частью современной экономики, и их значимость только продолжает расти [1]. Такой стремительный спрос побуждает бизнес не только внедрять новые цифровые решения, но и постоянно модернизировать уже применяемые технологии, поддерживать их бесперебойную работу и обеспечивать безопасность [2].

Возникает вопрос, как организовать разработку ПО так, чтобы конечный продукт мог подстраиваться под потребности пользователей. С поставленной задачей отлично справляется методология CI/CD, которая в настоящий момент активно применяется в разработке.

 

CI/CD (Continuous Integration, Continuous Delivery) – технология непрерывной интеграции и непрерывной доставки, которая позволяет существенно повысить качество продукта, упростить и ускорить все этапы разработки, автоматизировать ключевые процессы.  

 

Непрерывная интеграция CI – подход к разработке, при котором каждый программист регулярно проводить слияние своего программного кода в основную ветку разработки. Таким образом основная ветка всегда находится в актуальном состоянии. Чем чаще происходит слияние рабочих копий программного кода в общую ветвь, тем проще контролировать и устранять конфликты, возникающие при слиянии кода. 

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

Если конфликты между новым и существующим кодом все-таки будут обнаружены CI облегчает исправление этих ошибок.

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

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

 

Непрерывная доставка + непрерывное развертывание CD – автоматизации процессов отправки кода в репозиторий и выпуска протестированных и готовых к работе сборок. 

После интеграционного и модульного тестирования в CI непрерывная доставка автоматизирует выпуск проверенного кода в репозиторий.  Основная цель непрерывной доставки — иметь кодовую базу, полностью готовую к развертыванию в производственной среде.   

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

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

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

 

Поток CI/CD

Рис 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 становится незаменим. Методология обеспечивает тестирование на протяжении всего цикла разработки, значительно упрощает слияние кода и сокращает сроки разработки и релиза продукта. 

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

Список литературы

  1. 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
  2. Best 14 CI/CD Tools You Must Know | Updated for 2022 [Электронный ресурс] https://katalon.com/resources-center/blog/ci-cd-tools
  3. Уринцов А.И. СИСТЕМА ФОРМИРОВАНИЯ И ПРИНЯТИЯ РЕШЕНИЙ В УСЛОВИЯХ ИНФОРМАТИЗАЦИИ ОБЩЕСТВА Москва, 2008.
  4. Уринцов А.И., Дик В.В. СИСТЕМЫ ПОДДЕРЖКИ ПРИНЯТИЯ РЕШЕНИЙ И УПРАВЛЕНИЯ ЭФФЕКТИВНОСТЬЮ БИЗНЕСА Москва, 2009
  5. Уринцов А.И. СТРУКТУРНЫЙ АНАЛИЗ И ПРОЕКТИРОВАНИЕ РАСПРЕДЕЛЕННЫХ ЭКОНОМИЧЕСКИХ СИСТЕМ Экономика и математические методы. 1997. Т. 33. № 4. С. 141-152.
  6. What is CI/CD? [Электронный ресурс] https://www.redhat.com/en/topics/devops/what-is-ci-cd
  7. Краткий обзор методологии CI/CD: принципы, этапы, плюсы и минусы [Электронный ресурс] https://sbercloud.ru/ru/warp/cicd-about

Предоставляем бесплатную справку о публикации,  препринт статьи — сразу после оплаты.

Прием материалов
c по
Остался последний день
Размещение электронной версии
Загрузка материалов в elibrary