Что такое CI/CD и как эта практика связана с DevOps

Кибербезопасность для бизнеса
Наши партнеры
CI/CD — это практика, которая сегодня сменяет архаические подходы к разработке программного обеспечения. Она названа по первым буквам фразы «Continuous Integration/Continuous Delivery», что переводится, как непрерывная интеграция и непрерывное развертывание. Иногда CD означает еще и Continuous Delivery, непрерывная доставка (кода).
Наши инженеры давно успешно используют CI/CD в своей работе, ведь он позволяет ускорить выпуск, снизить риски производства и повысить качество проектов. В этой статье мы хотим рассказать о том, что такое CI/CD, про преимущества и недостатки этого подхода, про его цели и принципы.
  • Что такое Continuous Integration (CI) непрерывная интеграция

    Интеграция — это процесс объединения части кода, написанной программистом, с остальными частями ПО. В CI/CD интеграция автоматизированна и поэтому происходит без прерывания остальных процессов разработки ПО, почему и называется «непрерывная интеграция» — это бесшовный процесс. Цель CI — автоматически интегрировать изменения в общий код и проверить его работоспособность после этого.
  • Что такое Continuous Delivery (CD) непрерывная доставка

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

Что такое Continuous Deployment (CD) непрерывное развертывание

  • Развертывание — это процесс автоматизированного развертывания свежей версии ПО в тестовое или рабочее окружение. Это составная часть доставки кода, поэтому в аббревиатуре подхода обозначается теми же буквами: CD.

В чем отличие от DevOps. Роль CI/CD в DevOps

CI/CD — это DevOps-практика. DevOps (акроним от англ. development & operations, разработка и операции) представляет собой более широкий подход к организации всех процессов в IT-компании, в которых задействованы и команды разработки, и финансисты, и менеджеры. CI/CD — основной элемент этого подхода; методология, которая относится непосредственно к процессам разработки ИТ-продукта.

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

Цели и принципы CI/CD

Цель CI/CD-практики проста: ускорить выпуск программного продукта, повысив его качество и снизив риски. Чтобы достичь этих целей, в CI/CD придерживаются четырех принципов:
  • Разделение ответственности между всеми заинтересованными сторонами.
    Этими интересантами являются как различные специалисты по разработке программного продукта, так и пользователи. Стадии жизненного цикла проекта разделяются между ними в зависимости от компетенций участников. Команда может быть разной, но в среднем разделение следующее: программисты и дизайнеры отвечают за бизнес-логику и опыт пользовательского взаимодействия с системой; инженеры по качеству занимаются тестированием и вводом сквозных функций; DevOps-инженеры берут на себя работу по доставке кода; пользователи (или заказчики) дают обратную связь о работе продукта, к которой относится следующий принцип.
  • Быстрая обратная связь.
    Медленное внесение изменений в ПО может вести к финансовым и репутационным рискам его владельцев, а порой и к более серьезным последствиям (например, если это медицинское приложение). Возможность быстрого добавления и тестирования нового функционала, внесения правок в проект обеспечивает короткий цикл обратной связи с пользователями программного продукта. Сокращению этого цикла способствует автоматизация процессов сборки и тестирования, а также минимизирование посредников в передаче информации.
  • Снижение рисков.
    Участники проекта, ответственные за свой этап его жизненного цикла, должны стремиться к тому, чтобы минимизировать возможность ошибок. Для этого они используют инструменты, позволяющие контролировать, оптимизировать и мониторить соответствующие процессы разработки и поддержки ПО.
  • Общая среда.
    Реализация единого окружения, в котором работает команда разработки, позволяет эффективно и прозрачно построить процессы CI/CD: версионность кода, контроль качества, тестирование, масштабирование, сборка и другие действия при разработке продукта.

Этапы CI/CD

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

Преимущества CI/CD

  • Подход позволяет оперативно выводить на рынок программные продукты и оперативно вносить в них изменения и новые функции по запросам заказчиков. По сравнению с классическими моделями разработки этот метод сокращает Time To Market с нескольких месяце до нескольких дней. Ранний вывод на рынок способствует конкурентным преимуществам.
  • Повышается качество продукта (более стабильный код) благодаря параллельному тестированию, исправлению ошибок на ранних этапах цикла разработки и оперативному внесению изменений. Автоматическое тестирование в начале разработки также позволяет снизить расходы за счет вариативности кода. Всегда готовая к работе новая сборка кода используется, как правило, без прерывания функционирования сервиса, что приводит к большей удовлетворенности заказчика и лояльности конечных пользователей.

Недостатки CI/CD

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

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

В CI/CD для автоматизации тестирования, развертывания и других процессов разработки принято использовать узко-специальные инструменты, которые покрывают полный жизненный цикл разработки SDLC (Software Development Life Cycle).
Их количество постоянно возрастает, появляются новые. Мы же расскажем о наиболее популярных и хорошо зарекомендовавших себя инструментах CI/CD, которые успешно применяют и наши инженеры, грамотно подбирая под каждый проект.
  • DevOps‑платформа для управления репозиториями (хранилищами) проекта. Позволяет вести историю тестирования и изменений, мониторинг ошибок. Для описания CI/CD-процессов используется YAML.
  • CI/CD-платформа для тех, кто использует GitHub — веб-сервис для совместной разработки и хостинга IT-проектов. Тоже использует YAML.
  • Система непрерывной доставки и развертывания (CD), позволяющая контейнеризировать проект. Для управления (оркестрации) кластерами микросервисного проекта можно использовать Kubernetes.
  • Cloud-сервис непрерывной интеграции. Легко интегрируемый с GitHub при минимуме настроек, не требует установки.
  • Один из самых востребованных DevOps- и CI/CD-инструмент, работающий с огромным количеством плагинов, что обеспечивает гибкость процессов разработки и адаптации под задачи проектов. Для описания CI/СD-процессов использует Groovy, имеет собственный DSL в Jenkinsfile.
  • CI-сервер для автоматизации сборки проектов, написанных на PHP. Работает с библиотеками для тестирования PHP Spec, Atoum и Behat, а также с разными репозиториями, включая GitLab. Требует хостинг и настройку.
  • Популярный из-за простоты и надежности инструмент для полноценной разработки с использованием кода с GitHub, GitLab и Bitbucket.
  • Инструмент для одновременной сборки, тестирования и развертывания нескольких проектов с анализом ошибок. Поддерживает импорт из Jenkins и совместим с Selenium, JUnit и PHPUnit.
  • Платформа для комплексного развертывания с автоматизацией тестирования и сборки кода. Поддерживает различные системы контроля версий, механизмы поставки, облачные сервисы и контейнерные системы.
  • Среда для развертывания кода из GitHub и Bitbucket напрямую. Совместима с разными языками и технологиями.
  • Работает с агентами сборки (в бесплатной версии их количество ограничено тремя). Если подписаться — будет техподдержка.
  • Rex
    Автоматизирует CI-процессы в дата-центрах. Работает на Perl-скриптах.
  • Автоматизирует CI/CD-процессы при разработке дистрибутивов приложений.
  • Автоматизирует тестирование и сборку, которую к тому же гибко настраивает через помощью Python-компоненты. Поддерживает различные VCS.

CI/CD в GitinSky

Методы и инструменты CI/CD мы применяем в работе уже не первый год и имеем большой опыт перевода других компаний на эту практику. Если вы пришли к решению внедрить непрерывную разработку в свою компанию, мы можем взять на себя все процессы по внедрению.
Узнать больше про наш опыт вы можете в кейсе о внедрении CI/CD в большой организации, у которой однажды перестал работать сервис с 10 млн пользователей.

Отзывы клиентов

Айри.рф работает как SaaS, обеспечивая ускорение и защиту сайтов. Нам важна 100% доступность серверов и максимальная отказоустойчивость. Нам как специалистам по облакам приятно иметь дело с профессионалами!
Николай Мациевский, генеральный директор Айри.рф
Мы открыли портал на базе системы управления сайтами UMI.CMS. Работая с 1998 года, мы накопили несколько десятков тысяч материалов и статей. В 2010 году мы призвали читателей активно комментировать статьи, и база стала расти еще быстрее. Вместе с ней росло и количество читателей. В определенный момент мы начали испытывать трудности, так как административная панель часто «подвисала», и порой приходилось ждать до нескольких минут, пока статья сохранится или откроется для редактирования. Все это серьезно замедляло нашу работу. Мы обратились к Сергею Житинскому, и уже через неделю «подвисания» исчезли, база стала работать нормально. Скорость работы редакторов с контентом возросла, мы стали размещать больше материалов, перестали тратить время на бесполезное ожидание. Что касается посещаемости ресурса, то она существенно увеличилась. Мы сотрудничаем с Житинским на постоянной основе и теперь стали клиентами его предприятия Git in Sky, хотя русскому уху приятнее официальное название его компании — ООО «Жить в небе».
Анатолий Степанов, главный редактор портала «Русская народная линия»
Поскольку почтовые рассылки - это один из основных элементов деятельности - к ТП Git in Sky чаще всего обращаемся по поводу каких-то неполадок с почтой, хотя в последнее время они случаются совсем редко - может быть - раз в полгода".
Денис Каланов, генеральный директор, ООО «АйТи-Событие»
На простом языке наша задача звучала так: «Мы хотим, чтобы сайт не падал, и чтобы ни при каких условиях (сбой, человеческий фактор, наводнение и т.п.) данные наших пользователей не пропали».

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

Также стоит отметить доступность коллег и быстрый отклик, а особенно — наличие "аварийного" чата, где всегда кто-то дежурит и где можно рассчитывать на оперативную поддержку.
Олег Баша, генеральный директор, Learme
Успешно сотрудничаем с конца 2013 года. Компания Git In Sky помогла нам перенести данные в «облака», оптимизировать инфраструктуру. Оперативно помогает справляться с возникающими сложностями.
— Кузнецов Антон, системный администратор
Стек технологий
Ansible • Terraform • MS Center • Puppet
Anycast • CDN • GeoIP • Multicast
postgers • MySQL • MSSQL • Redis • Mongo • Tarantool • ClickHouse
postgersql / pgbouncer / pgpool / patroni • Nginx • Rabbitmq • Redis / Sentinel • mysql / percona / maxscale / sqlproxy
Nginx • Apache • Openrestry • Traefik
Nginx • HAProxy • Traefik • Envoy
Frontend / Backend балансировка
Управление инфраструктурой
Кластеризация и отказоустойчивость
Ansible
Terraform
MS Center
Puppet
postgersql / pgbouncer / pgpool / patroni
nginx
rabbitmq
redis / sentinel
mysql / percona / maxscale / sqlproxy
postgres
mySQL
MSSQL
redis
mongo
tarantool
ClickHouse
anycast
CDN
geoIP
multicast
Nginx
openresty
Traefik
Apache
Nginx
HAProxy
Traefik
Envoy
СУБД
Сетевые технологии
Web серверы
Libvirt • VMware • KVM
LOM • BMC • ILo • IPvkm • Idrac
cPU • Mem • disk • net • HAProxy • Traefik • Load Balancing • Flamegraph
Prometheus • Zabbix • telegraf • Alertmanager • grafana • graphite
IpTables • UFW • WAF • Firewall • Pentests • Selinux • ACL / Exec Bits • Spam • Anti DDOS
Безопасность
Виртуализация
Мониторинг
libvirt
vMware
KVM
Prometheus
Zabbix
telegraf
Alertmanager
grafana
graphite
cPU
MEM
Disk
net
HAProxy
Traefik
Load Balancing
Flamegraph
LOM
BMC
ilo
ipvkm
idrac
iptables
UFW
WAF
firewall
pentests
selinux
ACL / exec bits
spam
Anti DDOS
Высокие нагрузки
Обслуживание датацентров

Часто задаваемые вопросы

Наши клиенты
и реализованные проекты
Git in Sky реализовал 250+ проектов в разных отраслях. Основные группы наших клиентов и кейсы:
Давайте обсудим
ваш проект
Оставьте заявку — наш специалист свяжется с вами для детального обсуждения задачи
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных согласно политике конфиденциальности
Также можете позвонить по номеру
8 800 222 19 68
Читайте также