Почему конвейер создания ПО не срабатывает, и как это исправить
Мнение экспертов

Почему конвейер создания ПО не срабатывает, и как это исправить

285
5 минут

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

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

Но сначала немного ликбеза

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

  • Continuous integration — непрерывная интеграция;
  • Continuous delivery — непрерывная доставка;
  • Continuous deployment — непрерывное развертывание.

Continuous integration (CI) – это упаковка приложения разработчиком и тестирование. На шаге планирования у бизнеса или владельца продукта появляется идея, как улучшить клиентский сервис и какие фичи для этого нужны. На этом же этапе аналитик собирает бизнес-требования и передает их разработчику.

Тот (или скорее те, так как в крупной компании в разработке занято несколько человек) пишет код и загружает так называемый билд — измененное приложение — в отдельную ветку. Билд тестируется — вручную и/или с помощью автотестов — и переходит на следующий этап конвейера.

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

Continuous deployment – это процесс непрерывной доставки кода до продуктива без каких-либо дополнительных согласований и ручных операций. Мониторинг таких выкаток должен также осуществляться постоянно и автоматизированно. Его цель – молниеносно определить проблему с билдом и дать возможность разработчику откатить назад версию приложения и параллельно «пофиксить» ошибки.

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

Распространенные ошибки при реализации CI/CD

Слабо применяется автоматизация

Неработающий конвейер – картина частая. В большинстве случаев это связано с некорректно построенными процессами внутри организации.

Например, даже в крупных компаниях зачастую при разработке очень слабо применяется автоматизация или применяется не оптимально. Это приводит к тому, что каждая операция разработчика, тестировщика, администраторов сопровождается рутинными ручными действиями: написать о статусе, передать информацию, перепоручить «раскатать» инфраструктуру и так далее.

В результате в 2-3 раза увеличивается срок выпуска в эксплуатацию приложения, а вместе с этим растет количество конфликтов внутри команды, так как сложно понять, на каком этапе процесс стопорится.

Нет формально прописанных зон ответственности

Нередко видим другую ситуацию — в целом процесс CI/СD работает неплохо, но иногда даёт сбой. ИТ-директор одного российского банка как-то жаловался, что при выкатке новой версии релиза часть пакетов и скриптов «не доезжает», а обратная связь о неработающих сервисах при этом приходит не от DevOps-инженеров, а непосредственно от пользователей.

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

Чтобы это исправить, рекомендуется использовать RACI-матрицу. Её, к слову, часто применяют провайдеры. Они «на берегу» определяют, кто и за что будет отвечать в проекте. Например, мы прописываем в документе свою обязанность разворачивать и поддерживать виртуальные машины и инфраструктурные компоненты там, где являемся поставщиками инфраструктуры и кластеров Kubernetes. А сам софт и доступность CI остаются на совести клиента.

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

Отказ следовать IaC

На эффективность всей ИТ-разработки также влияет готовность инфраструктуры. Оправданно в данном случае следовать концепции IaC (инфраструктура как код), когда для развёртывания и управления средой пишутся скрипты и шаблоны. Они помогают быстрее развернуть типовую инфраструктуру, произвести изменения без захода в консоль управления или на конкретную виртуальную машину.

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

Так, первичное развёртывание инфраструктуры может стоить условно 100 000 руб, но повторное, основанное на готовом шаблоне, потребует всего 35 000 руб, так как трудозатраты не пойдут ни в какое сравнение с тем, что было до автоматизации.

19 июля 2022
Уйти, чтобы остаться: как иностранные компании локализуют данные в России
Уход международных концернов из России вызвал четырехкратный рост запросов на локализацию данных и систем в облаках отечественных провайдеров. Местные команды, которым передали в управление бизнес, или купившие данный актив игроки стремятся в кратчайшие сроки перевести инфраструктуру на российские рельсы.
4 минуты
350
31 января 2022
CustDev ИТ-компании: через тернии к успешному продукту
Термин Customer Development пришел из мира стартапов, но на сегодняшний день принципами проверки востребованности идей и клиентских продуктов пользуются и в зрелых предприятиях. Однако путь CustDev может существенно отличаться от компании к компании.
1 минута
700
28 декабря 2021
Для чего компании используют облака? Как изменились потребности клиентов за последние полгода
В конце года традиционно подводят итоги. Мы же решили проанализировать тренды, заметные в последние два квартала. Почему именно за этот период, а не за весь год? Начиная со второй половины 2021 г. усилилось влияние кризиса полупроводников фактически на все сегменты.
1 минута
386
17 декабря 2021
Как микросервисы помогают бизнесу
Когда увеличивается конкуренция, на первый план выходит параметр time-to-market. Под ним имеется в виду скорость выпуска на рынок любых доработок клиентских сервисов и продуктов.
4 минуты
370
1 марта 2021
Российский бизнес все чаще переносит в облака не отдельные сервисы, а всю инфраструктуру
В центральных районах России, по данным «КРОК Облачные сервисы», более 70% компаний когда-либо использовали облака в своей работе. О том, как меняется влияние облаков на компании и чем запомнится 2020 пандемический год для всего облачного рынка, в интервью CNews рассказал Сергей Зинкевич, директор по развитию бизнеса «КРОК Облачные сервисы».
7 минут
1192
1 марта 2021
На облачном рынке только и говорят, что о PaaS
Платформенные услуги на базе публичных облаков используются всего ничего: порядка 6-7 лет за границей, в России — и того меньше. Условная «молодость», однако, не мешает потрясающей популярности PaaS — по оценкам аналитиков, объем этого рынка превышает 5 млрд рублей, а рост исчисляется 2-3 десятками процентов ежегодно.
2 минуты
931
scrollup