Написать пост

Непрерывная интеграция и доставка (СI/CD): идеальная методика разработки или отраслевой хайп?

Аватар Типичный программист

К методике CI/CD сегодня проявляется много интереса. Они буквально на пике хайпа. Разбираемся, заслуженно ли.

Обложка поста Непрерывная интеграция и доставка (СI/CD): идеальная методика разработки или отраслевой хайп?

Рассказывает Евгений Филатов, глава направления Infrastructure Services компании Accenture Russia

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

Конвейер качественного кода

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

На этапе разработки возможность непрерывного тестирования и доставки кода позволяет увеличить скорость и качество готовых решений. Непрерывное (несколько раз в день) слияние рабочих копий программного кода в общую основную ветвь и тестирование результатов оформилось в «концепцию непрерывной интеграции и доставки софта» (англ. Continuous Integration & Continuous Delivery или сокращённо CI/CD). Впервые её предложил Гради Буч в 1991 году.

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

CI/CD-платформы, на базе которых реализуется концепция, поддерживают выполнение регулярной автоматизированной сборки проекта для оперативного выявления дефектов и решения интеграционных проблем. При стандартном подходе (каскадная разработка ПО или Waterfall-методика), где разработчики независимо трудятся над разными частями системы, стадия интеграции является заключительной, и при выявлении ошибок может непредсказуемо задержать окончание работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость работы и сделать её более предсказуемой за счёт раннего и непрерывного обнаружения и устранения ошибок и противоречий.

По своей сути концепция CI/CD реализует идеологию сращивания разработки и эксплуатации ПО (Development & Operations, DevOps) и соответствует основным принципам Agile в части рекомендаций по использованию автоматического тестирования для быстрой отладки рабочей версии софта.

Если Agile – это устранение зазора во взаимодействии заказчика и разработчика, а DevOps – снятие границ между разработчиком и администратором, то CI/CD – это воплощение стратегий и компонентов DevOps на практике.

Overhype 80 lvl

Сегодня CI/CD – самая хайповая методика софтверной разработки, которую стремятся применять практически для всех задач. Со временем, скорее всего, найдётся какая-то ниша, где CI/CD признают оптимальным инструментом со статусом «золотого стандарта», но и waterfall-метод при этом полностью тоже не исчезнет.

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

Для внесения корректив в монолитные ИТ-системы без дополнительной доработки (например, крупные процессинговые системы для банков с релизами обновлений 3-4 раза в год) CI/CD не подходит, поскольку для таких задач требуется полная перестройка всей архитектуры.

Другой вопрос, что не везде даже новую архитектуру, создающуюся под новую систему, можно заточить под CI/CD. Пока что очевидный спектр задач для методологии включает в себя всё, что касается веб-разработки, e-commerce, омни-канальных решений, словом, всего комплекса frontend и middleware компонентов. Для существующих core-систем каскадная парадигма пока остаётся оптимальным выбором.

Особенности развёртывания CI/CD-платформы

Главная сложность перехода на CI/CD заключается в адаптации подхода, где на первом месте находятся процессы, а технологии – только на втором. Необходимо выстраивать новые процессы, определять новые роли людей, находить точки интеграции уже существующих и новых процессов. Смещение акцента с софта и «железа» на людей и организационные аспекты работы для многих становится серьёзным вызовом.

Второй момент – в CI/CD ответственность разработчика за конечный результат становится гораздо выше. Теперь он не просто пишет абстрактный код по ТЗ, а ещё и мгновенно его тестирует своими же силами. Отсюда вытекают более высокие требования к компетенциям специалистов.

В CI/CD разработчик не просто пишет абстрактный код по ТЗ, а ещё и мгновенно его тестирует своими же силами.

При этом не стоит путать классических «инфраструктурщиков», которые конфигурируют оборудование, заливают системное ПО и проводят настройку инфраструктурных компонентов системы, с новым поколением CI/CD-профилированных сотрудников. CI/CD-специалисты должны разбираться не только в инфраструктуре, но и в её надстройках – Kubernetes, TeamCity, Jenkins и другом платформенном ПО. Можно сказать, что в CI/CD-концепции поддержка платформы добавляется к стандартной поддержке ИТ-инфраструктуры компании.

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

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

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

Бонусы и profit

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

Инструменты CI помогают быстро ответить на вопросы о причинах дефектов для каждого коммита, обеспечивая раннее выявление и устранение ошибок. CI/CD-платформа помогает не только оперативно тестировать, но и выводить новую функциональность для конечного пользователя таким образом, чтобы в случае выявления ошибки всегда существовала возможность либо быстро её устранить, либо «откатить» итерацию решения на шаг назад.

Одни ошибки в ПО могут содержать другие, которые включают в себя третьи и так далее. Чем больше ошибок накапливается, тем сложнее тестировать и находить их, что в результате может привести к неприятным последствиям. Между тем в CI/CD-разработке автоматизированные тесты в случае провала покажут, что именно нужно исправить. Конечно, для внедрения системы потребуется время, но это поможет разрабатывать софт максимально быстро и удобно.

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

Главные плюсы CI/CD:
Скорость вывода новой функциональности от запроса клиента до запуска в эксплуатацию. CI/CD позволяет запускать обновления за считанные дни или недели по сравнению с целым календарным годом при классическом waterfall-подходе. Новые сервисы – новые конкурентные бизнес-преимущества. Появляется возможность не просто воспроизводить функциональность решений конкурентов, но и значительно опережать их в разработке и внедрении новых инструментов.
Возможность выбора оптимального варианта за счет оперативного тестирования и большего числа итераций. Отказавшись от работы над бесперспективными решениями, вы сэкономите ресурсы компании.
Качество итогового результата выше: автотестирование охватывает все аспекты продукта, что труднореализуемо при стандартном релизном подходе. Все ошибки и тонкие места выявляются и удаляются ещё на ранних этапах разработки.
Главные минусы CI/CD:Искушение перевести на Agile, DevOps и CI/CD сразу всё, что связано с корпоративными ИТ-системами, включая core-уровень, без приобретения первичного опыта. Это может серьёзно нарушить работу компании, особенно при плохой организации перехода на новую методологию.Поддержка должного уровня координации между CI и CD. Быстрые и качественные результаты от применения методики возможны только после длительной и тщательной настройки взаимодействия между командами DevOps, инженерами, scrum-экспертами и руководством компании. Самое сложное в CI/CD – человеческий фактор, налаживание здоровой командной работы, которую запрограммировать и автоматизировать невозможно.

Мода и дефицит

Важно понимать, что все методики и технологии являются не взаимоисключающими, а взаимодополняющими. Вопрос только в том, какая методология и технология займёт определённое место в общей ИТ-экосистеме.

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

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

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

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

Смотрите также: Кто такой DevOps и как им стать
Следите за новыми постами
Следите за новыми постами по любимым темам
80К открытий80К показов