Непрерывная интеграция и развертывание ПО на примере системы BIOCAD

Выступление Колесова Александра, руководителя отдела разработки ПО Biocad, посвящено вопросу непрерывной разработки и интеграции кода. В качестве примера спикер использует систему Botanique – собственную разработку компании Biocad. Описан функционал и цели использования, а также, как именно происходило создание системы.

Кратко о системе Biocad

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

Система состоит из веб-приложения и бота для Telegram. С ее помощью работники могут:

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

Это только часть функционала. Подобная система упрощает и ускоряет работу компании. Многие работники сторонней организации заинтересованы в таком продукте.

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

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


Появляется еще один вопрос – стоимость. Тут нельзя ответить однозначно. Зависит от программиста и его уровня навыков.

Как реализуется CI/CD?

Работу просто представить в виде четкого плана:

1. Планирование задач. Нужно понять, что именно важно сделать за определенный промежуток времени. Задачи должны быть четкими и понятно сформулированными.

2. Разработка. Работа над новым кодом в соответствии с поставленными задачами.

3. Сборка кода. Соединение частей в одно целое.

4. Тестирование. Проверка кода на ошибки и фиксация их при выявлении.

5. Релиз программного обеспечения.

6. Деплой. ПО становится доступным для всех пользователей.

7. Мониторинг. Важно отслеживать пользовательский опыт и фиксировать баги.

Немного подробнее рассмотрим каждый этап реализации системы CI/CD.

Планирование

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

В Jiro одну большую задачу можно разбить на мелкие. Для нее создается группа, и каждая строка в ней – отдельная цель. Для крупной задачи организуется работа команды. Только совместная деятельность позволяет ставить актуальные цели.

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

В Jiro можно смотреть:

  • диаграмму Ганта (график с действиями и продолжительностью времени);
  • приоритеты;
  • загруженность разработчиков.

Это помогает точно понимать, что стоит выполнить в первую очередь на новом спринте.

Разработка

В ходе работы были использованы разные инструменты, и от некоторых в итоге отказались. Команда тоже претерпевала изменения. Не было девопс-инженеров, разработчиков было 2-3 человека. На этом этапе проблем с работой не было. Один программист выкладывал файл с кодом, и он сразу синхронизировался с тем, что есть на компьютерах других участников.

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

Сейчас используется «Гитлаб». У нас в департаменте есть группа девопс-инженеров. Один из них прикреплен к нашей команде для оперативного обмена информацией.


Пока разработчиков трое, проблем с общением и планированием не будет. Сложности начнутся при увеличении команды. Так, у нас в бэкенде 10 разработчиков, во фронтеде меньше. Они не должны мешать друг другу, но и на переговоры уйдет больше времени.

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

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

Может произойти так, что конечный потребитель выявит ошибку. В этом случае важно сделать хотфикс, чтобы программа нормально работала. Получается, что между версиями ПО 1.0 и 2.0 команда проводит работу над фичами, устранением ошибок.

Тесты

Автотесты упрощают работу и ускоряют получение результата. В случае ошибки разработчик видит, где возникла проблема. Он уже понимает, как работать над устранением сбоя.

Итог

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


Проверки делаются в тестовой среде

Готовая схема CI/CD

Для внедрения системы разработали разветвленную поэтапную схему работы. Для удобства восприятия каждая ветка имеет свой цвет:

  • синяя – разработчики;
  • оранжевая – тестировщики;
  • красная – продакшен.

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

Если все нормально, то продукт доставляется на проверку в QA-среду. Там специалист тестирует его и при выявлении ошибок отправляет программисту на доработку. Если все нормально, код передается на продакшн.


Такая схема позволяет четко выстраивать все рабочие процессы. Обновление происходит раз в неделю. Для быстрого исправления ошибок код передается в небольшом количестве. В итоге пользователь получает стабильную работу программы с регулярными обновлениями.

Вопросы и ответы

1. В каком продукте делается регрессионное тестирование?

В схеме выделена зона Selenium. Именно в ней происходит тестирование на обнаружение ошибок в уже проверенных участках кода. Используем ручные и автоматические методы. За счет такого подхода добились стабильной работы системы.

2. Исходя из представленной схемы, на слайде среди инструментов поддержки можно выделить зарубежные коммерческие продукты. Есть идеи, на что переходить в случае проблем?

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

3. Чем будете заменять Jira? Изучали отечественные продукты?

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

4. Как в системе CI/CD работает система разработки? Она облачная или On-Premises?

У нас есть собственная система СОД, и мы не используем ни внутреннее облако, ни внешнее. Только собственные мощности.


6564

Комментировать могут только авторизованные пользователи.
Предлагаем Вам в систему или зарегистрироваться.

Предметная область
Отрасль
Управление
Мы используем файлы cookie в аналитических целях и для того, чтобы обеспечить вам наилучшие впечатления от работы с нашим сайтом. Заходя на сайт, вы соглашаетесь с Политикой использования файлов cookie.