Что такое CI/CD и зачем оно нужно?

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

  1. Разработка. Реализуем функционал и покрываем тестами. Под функционалом в этом пункте понимается одна маленькая функциональная единица, например, добавили кнопку, исправили баг, изменили формулу расчета рейтинга пользователя и так далее.
  2. Сборка и автоматическое тестирование. Инструмент для интеграции (Gitlab CI, Jenkins, TeamCity, Travis CI) собирает проект (для разных проектов это происходит по-разному) и запускает автоматическое тестирование (модульные и функциональные тесты).
  3. Ручное тестирование. Проект переходит на ручное тестирование тестировщикам. Они пытаются выявить баги, которые трудно проверить через автотесты.
  4. Создание релиза. Протестированная в прошлом шаге версия (она же теперь релиз-кандидат) становится на очередь для публикации на боевой (или иной, смотря что нужно для проекта) сервер. Релизу присваивается версия (например, 1.0.0).
  5. Развертывание (оно же деплой). Новая версия отправляется на боевой сервер. Все необходимые для этого команды и операции выполняются автоматически.
  6. Мониторинг работы и правки багов. Если программисты недопрограммировали, тестировщики недотестировали или UX/UI-спецы недопродумали и недорисовали что-то, то исправляем ошибки.
  7. Планирование. На этом этапе фронтендеры и бэкендеры смотрят в список задач и начинают над ними работать, другими словами мы возвращаемся к первому пункту и цикл начинается заново.

Для разработчика поменяется не очень много, если эта методология ранее не использовалась. Весь код системы также как и раньше находится в репозитории. Есть несколько веток, опять же их количество зависит от нужд проекта, в каждую из которых код переливается по мере готовности и статусу проверки. Обычно все выглядит приблизительно так: при получении новой задачи создается ветка от dev-ветки для её решения, а после готовности содержимое ветки вливается обратно в dev. Если все хорошо, то dev вольют в prod и ваш код отправиться прямиком к пользователям, а ветка для решения задачи удаляется.

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

15.03.2020

Категория(-и): Разработка

#

Добавить комментарий