Краткий обзор методологии CI/CD: принципы, этапы, плюсы и минусы

Виртуальная машина
бесплатно навсегда

Забрать
Avatar icon

Марина Суворова

Редактор блога

Статья

Время чтения

3 минуты

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

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

Что такое CI/CD

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

Цели CI/CD:

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

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

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

Принципы CI/CD

Для CI/CD существуют четыре руководящих принципа:

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

Этапы CI/CD

Методология CI/CD подразумевает разделение процесса разработки на семь этапов:

  1. Написание кода. Разработчики пишут код своего модуля и проводят тестирование в ручном режиме. После этого результат работы соединяется в главной ветке с текущей версией проекта. После того, как в главной ветке публикуются все коды модулей, начинается второй этап.
  2. Сборка. Выбранная система контроля версий инициирует автоматическую сборку и последующее тестирование проекта. Триггеры для активации сборки могут быть настроены самостоятельно. Для автоматизации сборки применяется Jenkins или другой инструмент.
  3. Ручное тестирование. После проверки CI-системой работоспособности тестовой версии код передается для ручного исследования.
  4. Релиз.После ручного тестирования в сборку вносятся исправления. Следом проходит релиз версии кода для клиентов.
  5. Развертывание. На этом этапе текущая (рабочая) версия кода размещается на production-серверах разработчика. Клиент может взаимодействовать с программой и изучать ее функции.
  6. Поддержка и мониторинг. Продукт начинает использоваться конечными пользователями. При этом разработчики продолжают его поддерживать и проводят анализ пользовательского опыта.
  7. Планирование. Исходя из пользовательского опыта разрабатывается новый функционал и готовится план доработок. После этого разработчик начинает написание кода — и цикл замыкается.
Этапы CI/CD
Этапы CI/CD

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

Калькулятор виртуальных машин

Виртуальная машина+диск от 96 копеек/час

Рассчитать

Плюсы и минусы CI/CD

У методологии Continuous integration & Continuous delivery есть особенности, определяющие её преимущества и недостатки.

Плюсы Минусы
Минимальное время от запроса клиента до запуска в использование.
Методология уменьшает время запуска обновлений до нескольких дней (в отдельных случаях, недель). Благодаря этому, разработчики получают возможность быстрее опробовать нововведения и внедрять решения быстрее конкурентов.
Требования к опыту.
В теории все корпоративные ИТ-системы можно перевести на CI/CD. Но на практике для получения результата нужен первичный опыт работы с методологией, а также правильная организация перестраивания всех процессов.
Возможность проверки вариантов.
Оперативное тестирование и много итераций помогают разработчику быстро выявлять варианты, не имеющие перспектив, еще на начальных этапах.
Сложность обеспечения взаимодействия.
Непрерывное обновление и непрерывная поставка должны быть четко скоординированы, что возможно только после тщательной настройки взаимодействия между специалистами всех уровней.
Качество результата.
Проведение автоматического тестирования помогает выявить ошибки и другие проблемы на самых ранних этапах разработки. При стандартном релизном подходе это сделать сложно или невозможно.

CI/CD — хайп или необходимость?

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

В условиях жесткой конкуренции эта методология становится необходимостью, ведь она позволяет в разы сократить время от разработки кода до релиза продукта. CI/CD подойдет для задач, касающихся веб-разработки, омниканальных решений, e-commerce и прочего комплекса frontend- и middleware-компонентов. Однако внедрение Continuous integration & Continuous delivery оправдано не всегда — например, в сферах с редким обновлением софта методология себя не оправдает.

Инструменты для CI/CD

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

  • GitLab. Среда дает возможность управления репозиториями проекта, документирования результатов тестов (доработок) и функциональности, а также отслеживания ошибок.
  • Docker. Система автоматического развертывания проектов, поддерживающая контейнеризацию, которая дает возможность упаковки проекта со всем окружением и зависимостями.
  • Travis-CI. Инструмент, способный подключаться к репозиториям в GitHub с наименьшими настройками. Travis-CI — облачный инструмент, поэтому его установка не потребуется.
  • Jenkins. Востребованный DevOps-инструмент, позволяющий работать с разными плагинами для гибкой настройки процессов под конкретные задачи разрабатываемого продукта.
  • PHP Censor. Сервер непрерывной интеграции, предназначенный для автоматизации сборки PHP-проектов. Работает с репозиториями GitLab, GitHub, Mercurial и прочими, а также с библиотеками тестирования Atoum, PHP Spec, Behat. Инструмент документирован, но требует самостоятельной настройки и хостинг.
  • SberCloud K8S (SberCloud Managed Kubernetes). Сервис автоматического развертывания, масштабирования и управления софтом на основе Kubernetes. Позволяет создавать кластеры последних версий, управлять автообновлением, автоматически распределять нагрузку, отслеживать статистику потребления и т.д.

Мы перечислили далеко не все инструменты для CI/CD — для каждой задачи найдется свой.

CI/CD — это не просто методология, но и очень хороший инструмент для команды разработки. Чем дольше планируется разрабатывать и поддерживать проект, тем больше пользы принесет наличие хорошо спроектированного CI/CD. Все ресурсы и затраты на этот инструмент окупаются на дистанции. С его помощью неоспоримо сокращается time-to-market, а также уменьшается вероятность совершить ошибку. Самое главное — это поддерживать инструмент в хорошем состоянии

Кирилл Шеховцовтехнический лидер в SberCloud

Итог

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

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

Источники:

Содержание

  • Что такое CI/CD
  • Принципы CI/CD
  • Этапы CI/CD
  • Плюсы и минусы CI/CD
  • CI/CD — хайп или необходимость?
  • Инструменты для CI/CD
  • Итог
  • Источники:

Вам может понравиться