Непрерывный цикл разработки — это как?

Непрерывный цикл разработки — это как?

CI/CD на простых примерах

В разработке любого софта есть два подхода: итеративный и непрерывный. Они отличаются методами работы и сложностью организации. Если будете работать в сфере ИТ, наверняка вам встретятся оба подхода.

Непрерывный цикл разработки — это как?

Итеративный подход

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

👉 В итеративном подходе заказчик или пользователи видят результат только в самом конце этапа и до этого пользуются старой версией.

Непрерывный цикл разработки — это как?

Непрерывный подход

Непрерывный подход — это когда разработка идёт маленькими шажками каждый день, и каждый день в репозиторий отправляются какие-то мелкие изменения. Если вы не знаете, что такое репозиторий, почитайте наш гит-словарик, с ним будет гораздо проще.

👉 При непрерывном подходе пользователи каждый день получают новую версию, которой уже можно пользоваться.

Непрерывная интеграция

Чтобы непрерывная разработка работала как задумано, для неё нужно подготовить особые условия работы:

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

👉 В программировании непрерывный подход называют непрерывной интеграцией (Continuous Integration, CI), потому что результаты работы за день сразу интегрируются в мастер-ветку продукта.

Непрерывная доставка

Ежедневная внутренняя сборка ещё не означает, что эта версия сразу попадёт к пользователям. Для этого нужно настроить другие процессы:

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

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

Кто это настраивает 

Почти всё из этого зависит от тестировщиков и девопсов

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

Задача девопсов — подготовить среду разработки и тестирования, чтобы всё работало максимально автоматически:

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

Зачем это нужно

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

Кому не подходит 

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

А ещё есть области, в которых важна не скорость появления новых фич, а стабильность — медицина, космонавтика, пассажирские перевозки. Там новые версии могут выходить раз в три года, и это нормально — главное, чтобы работало без сбоёв.

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Олег Вешкурцев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
Мальчик заливает на FTP, мужчина поднимает Git

Зачем нужен контроль версий и что делать, если ваши друзья его используют.

hard
SSL-сертификаты и безопасный интернет

Ваше соединение надёжно защищено. Или нет.

easy
TypeScript — как JavaScript, но может больше
TypeScript — как JavaScript, но может больше

Способ избежать проблем JavaScript в больших проектах.

easy
Что такое «Докер» и зачем он нужен
Что такое «Докер» и зачем он нужен

Это как полуфабрикаты из супермаркета, только с программами.

easy
Домены для вашего сайта
Домены для вашего сайта

Где брать, сколько стоят, какие классные и как там с персданными обстоит вопрос

easy
Что такое FTP и зачем оно нужно

Это очень надёжно, но очень небезопасно.

easy
Как выиграть в самой сложной игре мира
Как выиграть в самой сложной игре мира

Поручим это нейронке.

easy
Что такое форк в программировании
Что такое форк в программировании

Это когда делаешь свою версию какого-то софта

medium
Кто такой дата-сайентист

Если вы не знаете, чем заняться ближайшие 15 лет, — идите в дата-сайенс, помогите нейросетям захватить мир.

easy
Facebook хранил наши пароли в виде текста. Что это значит?
Facebook хранил наши пароли в виде текста. Что это значит?

Тут такое!

easy
medium