Статья подготовлена для студентов курса «CI/CD» в образовательном проекте OTUS.
Основная сложность перехода на CI/CD — адаптация подхода, при котором на первом месте у нас находятся процессы, а только на втором — технологии. Следовательно, надо определять новые роли и выстраивать новые процессы, а также находить точки соприкосновения новых и уже существующих процессов. В этом-то и заключается сложность, ведь смещая акцент с «железа» и софта на организационные аспекты работы и людей, многие сталкиваются с серьёзным вызовом.
Есть и другой нюанс, связанный с ответственностью разработчиков за конечный результат. Дело в том, что эта ответственность существенно повышается. Ведь теперь разработчик не просто пишет абстрактный код согласно ТЗ, но ещё и тут же тестирует его собственными силами. В результате можно сказать о более высоких требованиях к компетенции специалистов.
Однако не следует смешивать классических «инфраструктурщиков» с современными CI/CD-профилированными сотрудниками. Первые заливают системное ПО, конфигурируют оборудование, настраивают инфраструктурные компоненты системы. Вторые обязаны понимать не только инфраструктуру, но и её многочисленные надстройки – TeamCity, Kubernetes, Jenkins и прочее платформенное ПО. Таким образом, концепция CI/CD предполагает, что к стандартной поддержке ИТ-инфраструктуры добавляется ещё и поддержка платформы.
Другая особенность CI/CD – большой выбор open source-инструментов, которые используются для формирования платформы. Сегодня CI/CD-специалисты обеспечивают оптимальную подборку среди инструментов, имеющихся на рынке, с учётом задач и специфики проекта, пожеланий клиента.
Можно сказать, что переход на CI/CD представляет собой комплексный процесс, поэтому при реализации этого перехода компании традиционно сталкиваются со сложностями. Да и при переобучении сотрудников неизбежен пересмотр существующего рабочего процесса, что нередко вызывает недовольство.
Каков profit?
В CI/CD большое значение имеет быстрый цикл обратной связи, который позволяет практически мгновенно понять, насколько качественны изменения в функциональности продукта и коде. Также CI-инструменты помогают нам быстро ответить на вопрос, каковы были причины дефектов для каждого коммита, что обеспечивает раннее выявление ошибок и их устранение. Ведь платформа CI/CD позволяет не только быстро тестировать, но и выводить новую функциональность для пользователя так, чтобы в случае ошибки была возможность или её быстро устранить, или «откатить» итерацию на шаг назад.
Как известно, одни ошибки в программном обеспечении могут содержать другие, а они, в свою очередь, включают в себя третьи и т. д. И чем больше ошибок накопится, тем сложнее будет протестировать и найти их. В CI/CD-разработке автотесты в случае провала покажут нам, что конкретно надо исправить. Разумеется, для внедрения такой системы потребуется время, зато на выходе разработка софта станет быстрее и удобнее.
Автоматизированные процессы помогут существенно уменьшить трудозатраты различных отделов предприятия. При отсутствии автоматизации CI/CD могут возникать ошибки, которые вызваны человеческим фактором и ручными операциями.
Основные плюсы CI/CD:
• повышается скорость вывода новой функциональности. CI/CD даёт возможность запускать обновления в течение считанных дней/недель. При этом речь идёт о возможности не просто воспроизводить функциональность решений бизнес-конкурентов, но и существенно опережать их в разработке новых инструментов и их внедрении;
• оперативное тестирование и большое количество итераций предоставляет возможность выбора оптимального варианта из имеющихся решений. А отказавшись от реализации малоперспективных решений, вы сэкономите ресурсы;
• обеспечивается более качественный итоговый результат, в том числе и за счёт автоматизированного тестирования, охватывающего все аспекты продукта (при стандартном релизном подходе это труднореализуемо). Ошибки и слабые места выявляются и устраняются на ранних этапах разработки.
Основные минусы CI/CD:
• появляется искушение перевести на CI/CD, Agile и DevOps сразу всё, что связано с ИТ-системами, в том числе и core-уровень, причём без первичного опыта. Такой подход может нарушить работу компании, особенно если переход на новую методологию организуется недостаточно грамотно;
• должна быть обеспечена чёткая координация между CI и CD. Применение этой методики позволит достичь быстрых и качественных результатов лишь после долгой и кропотливой настройки взаимодействия между инженерами, Scrum-экспертами, DevOps-командами, руководством компании. Исходя из такого положения вещей, можно с уверенностью сказать, что самое сложное в CI/CD – это пресловутый человеческий фактор и здоровая командная работа, а запрограммировать и автоматизировать их невозможно.
По материалам статьи «Непрерывная интеграция и доставка (СI/CD): идеальная методика разработки или отраслевой хайп?».
Хотите познакомиться с преподавателем и узнать больше о процессе обучения? Регистрируйтесь на день открытых дверей 6 августа в 20:00 мск. Преподаватель Константин Брюханов (Lead DevSecOps) ответит на все вопросы по CI/CD, программе курса, особенностях онлайн-формата, навыках, компетенциях и перспективах, которые ждут выпускников после обучения.