Осторожный DevOps

24.05.21

Разработка - DevOps и автоматизация разработки

Начальник отдела разработки в компании «Билайн» Игорь Сухоруков на Meetup Infostart DevOps поделился особенностями работы своего ИТ-подразделения и рассказал о том, как устроено производство и внедрение ПО в режиме нон-стоп в компании, подразделения которой работают по всей России: от Москвы до Владивостока.

Я руковожу отделом разработки в компании «Билайн». Поделюсь с вами опытом применения практик DevOps на крупном проекте. Мой доклад будет носить обзорный характер, хардкора практически не будет, но, тем не менее, мне есть, что рассказать.

 

О предмете доклада

 

 

Перед тем, как поделиться нашими практиками, расскажу о нашем проекте.

  • Мы обеспечиваем продажи в салонах «Билайна» по всей России: от Москвы до Дальнего Востока. Также за нами процессы товародвижения, дилерские отгрузки, обработка заказов интернет-магазина.

  • Особенности нашей базы: единая, ключевой момент – 8 тыс. пользователей работают одновременно. Я уверен, что по этому показателю мы в топе.

  • Каждую секунду проводятся от 3 до 6 документов, в новогодние праздники может быть и больше.

  • Пользователи работают в режиме 24/7, потому что компания распределена по разным часовым поясам: Москва, Сибирь, Дальний Восток.

  • Конфигурация – сильно допиленная УТ 11 версии.

  • Объем базы – 5,5 Тб. Обычная реакция на такие характеристики : «Как вы там вообще держитесь?» или, если речь идет о найме, «Я хочу у вас работать!».

 

 

У нас большая для проекта 1С команда – 20 разработчиков, 8 аналитиков и 8 тестировщиков. Также в команде есть админы, problem-менеджеры и даже выделенный релиз-менеджер. По Scrum мы работаем порядка двух лет.

Расшифрую, какой у нас Scrum, потому что бытует мнение, что Scrum у каждой команды свой, свои отличия есть и у нас.

  • Задачи мы бьем на клиентские истории, если понимаем, что целиком ее выпустить не можем.

  • Цель выпуска задачи – понимание того, что мы хотим ее проанализировать или провести демонстрацию у заказчика.

  • У каждой команды есть владелец продукта, который помогает сформировать очередь задач.

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

  • После реализации начинается самое интересное. Мы проводим приемочное тестирование или демонстрацию, куда наравне с бизнес-заказчиком и владельцем продукта приглашаем группу поддержки – поддержка во время просмотра может высказать свои замечания и предложения. Можно сказать, что это одна из практик DevOps – тесная взаимосвязь с поддержкой.

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

 

 

Снова эта всеми любимая картинка. Зачем нам DevOps?

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

Дополнительная особенность – обкатка новых версий платформы. Об этом чуть позже.

 

 

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

 

 

Так как «Билайн» – компания огромная, у нас были и есть определенные ограничения: организационные и технические.

Организационные ограничения выражаются в том, что у нас несколько сотен процедур по выпуску ИТ-систем. Ограничения установлены из-за того, что «Билайн» – публичная компания, торгуется на бирже SOX.

Примеры ограничений, с которыми мы вынуждены мириться:

  • разработчик не имеет права доступа к продуктивной базе;

  • еще одно ограничение – разработчик не может быть тестировщиком. Это отклонение от чистого Scrum, но ничего не поделаешь, бюрократия имеет место быть.

 

 

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

К сожалению, EDT 18 версию не догнал, поэтому мы вынуждены использовать конфигуратор. Верим, что EDT скоро догонит платформу, тогда мы его и поюзаем.

 

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

 

 

Автосборки проекта у нас нет, но постоянная интеграция есть.

  • Ежедневно 20 разработчиков делают 40-50 помещений в хранилище,

  • Каждую ночь отрабатывают автотесты – проверяется синтаксис и запускаются дымовые тесты.

  • По результатам автотестов тестировщики судят о качестве кода в хранилище и фиксируют баги. Причем все это делается оперативно и правится быстро. Непрерывность точно есть.

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

 

Code-review

 

 

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

  • Code-review мы используем очень активно, применяем для всех задач.

  • И здесь возникает Git. Т.е. несмотря на то, что EDT нет, Git у нас есть.

  • Gitsync и Jenkins мы на текущий момент не используем. Мы используем цепочку: Хранилище 1С – > 1С:ГитКонвертер – > GitLab – > Crucible. Crucible – продукт для проведения ревью кода.

  • Причина неиспользования Jenkins и утилиты Gitsync в том, что мы хотели ускорить процесс. У нас большая, развесистая конфигурация. От момента помещения в хранилище до возможности начать ревью кода проходит порядка 15 минут. После использования 1С:ГитКонвертера нам удалось сократить это время до 3 минут. 1С:ГитКонвертер – это конфигурация от фирмы 1С, инструмент для синхронизации помещений в хранилище. Его можно скачать с сайта ИТС. Тот же Gitsync, только от фирмы «1С». Сам 1С:ГитКонвертер пришлось немного допилить, сейчас он нас полностью устраивает. В планах написать статью на эту тему на Инфостарте.

  • Процесс code-review мы административно ограничиваем 4 часами. Поэтому непрерывная сборка в итоге у нас есть – это помогает процессу.

На слайде показан скрин из 1С:ГитКонвертера – как он настраивается.

 

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

 

 

Как мы релизимся?

  • Релиз выходит раз в две недели: столько занимает у нас процесс сборки релиза, и это совпадает со временем спринта.

  • Все баги мы правим расширениями. Пять лет назад расширения только начинались, и это время мне страшно вспоминать.

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

  • Динамическое обновление мы не используем – базы падают. На продуктиве мы его никогда не использовали, но тестовые базы из-за динамического обновления падали регулярно.

 

Сценарное тестирование

 

 

Практика написания автотестов в среде 1С мало распространена. И это одна из первых практик DevOps, с которой мы начали. Мы не знали, с чего начать. Было непонятно направление, куда двигаться в этой части, но два года назад Артур Аюханов нас обучил и помог выбрать инструменты для тестов.

  • Для целей сценарного тестирования используем Vanessa-Behaviour.

  • Сейчас у нас 240 тестов, ими обложено больше половины всех тест-кейсов. В пике доходили до 75%. Здесь основная особенность в том, что новые возможности появляются быстро, поэтому есть некое отставание.

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

  • И, так как кейсов у нас много и тестировщиков немало, у нас сценарное тестирование поделено на предметные области.

 

 

Что нам дало сценарное тестирование?

  • Оно нам дало ощутимую экономию: 55 человекочасов регулярно, каждые две недели. Раньше регресс длился полтора-два дня, постоянно были срывы выпусков. Сейчас регрессионное тестирование перед выпуском релиза длится полдня, иногда меньше.

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

  • И, самый приятный момент, я стал высыпаться.

 

Дымовые тесты

 

 

Для запуска дымовых тестов используем Vanessa Runner.

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

Утром разработчики правят найденные ошибки.

 

 

Что нам дают дымовые автотесты? С их помощью мы можем:

  • отлавливать глупые ошибки на стадии появления;

  • снижать риски отмены релиза и дедлайна

Из плохого:

  • Мы не можем запускать дымовые тесты на каждое помещение в хранилище, так как у нас более 40 помещений в хранилище. Проверка длится 11-20 минут, мы стали бы отставать. Но ночного запуска нам хватает с головой.

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

 

Непрерывное развертывание

 

 

Для непрерывного развертывания мы используем Центр контроля качества (ЦКК) из состава корпоративного инструментального пакета (сейчас они вынесли эту функциональность также в Центр администрирования). Ранее мы разворачивали конфигурацию на продуктив путем написания разрозненных скриптов нашими админами, но теперь же мы заменили их на сценарии в ЦКК.

  • Текущий сценарий выполняет операции перед установкой релиза в продуктив: блокировка базы, завершение сеансов, очистка сеансовых данных, завершение процессов, перезапуск кластеров.

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

  • Непосредственное обновление продуктива – пока ручная операция. Администратор выполняет команду Обновить, связано это с бюрократическими моментами.

  • Времени на обновление мало, так как режим работы нашей компании 24/7. Применяемый подход непрерывного развертывания дал нам возможность существенно сократить время обновления. Плюс ко всему, перед выпуском релиза мы всегда производим тестовое обновление: запускаем процесс обновления продуктива на его копии, замеряем время, фиксируем ошибки. Тем самым стремимся избежать ошибок при обновлении настоящего продуктива.

На скринах примеры сценариев из ЦКК.

 

Сбор информации о падениях

 

 

При мониторинге падений мы тесно взаимодействуем с фирмой «1С», собираем, обкатываем новые версии платформы, собираем и передаем данные для анализа. У нас с ними взаимовыгодное сотрудничество.

Как работает сбор информации, если были падения? В Центре администрирования есть сценарий, написанный на Python. Мы подхватываем нужную информацию – дампы – и отправляем их на FTP. Если на смену Python придет 1С:Исполнитель, мы будем использовать его.

 

 

Для нагрузочного тестирования используем Тест-центр:

  • Проверяем работу нашей конфигурации на новых версиях платформы.

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

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

 

 

  • Длительность нагрузочного тестирования от 6 до 24 часов.

  • По результатам тестирования мы формируем отчет, где по каждой операции своя оценка APDEX.

  • Все это отправляем в 1С и вместе с ними принимаем решение об использовании платформы.

  • Были попытки использовать нагрузочное тестирование перед выпуском релиза, но пока мешает длительность – регрессионное тестирование заканчивается ближе к выходным, и есть риски, что нагрузочное тестирование к моменту релиза может еще не закончиться.

 

Мониторинг производительности

 

 

Чтобы избежать перебоев в работе нашей системы, мы постоянно ее мониторим.

  • Мониторим APDEX ключевых бизнес-показателей.

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

  • При отклонении показателей наши админы получают извещение по смс

 

Визуализируем мониторинг

 

 

Визуализируем мониторинг через Grafana, источников данных несколько.

  • Для бизнесовых операций и каналов связи – это 1С.

  • Для доступности системы организуем некий пинг через Центр контроля качества.

  • По загрузке серверов и отчасти каналов связи используем Zabbix и технологический журнал.

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

 

 

Здесь бизнесовая часть мониторинга. С его помощью мы:

  • предупреждаем проблемы оборудования;

  • видим проблемы со смежными системами, которых у нас целая куча;

  • и можем давать информацию бизнесу.

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

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

 

 

Из примеров мониторинга у нас есть мобильный клиент, мы измеряем количество входов с мобильного клиента. Для этого парсим технологический журнал, источником данных является Zabbix, a Grafana эти данные отображает. Таким образом отслеживаем, насколько успешно мы внедряем мобильный клиент в офисах.

 

 

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

  • Мы постоянно балансируем между стабильностью и скоростью работы.

  • У нас есть свои ограничения, которые мы принимаем или обходим.

  • У нас свое прочтение практик DevOps.

  • Идеала нет. Не бойтесь экспериментов, ищите свой путь, свое направление развития – надеюсь, мой доклад вам в этом поможет.

  • И, конечно, работайте в команде – без нее никуда.

 

*************

Данная статья написана по итогам доклада (видео), прочитанного на онлайн-митапе "DevOps в 1С: Тестирование и контроль качества решений на 1С".

 

30 мая - 1 июня 2024 года состоится конференция Анализ & Управление в ИТ-проектах, на которой прозвучит 130+ докладов.

Темы конференции:

  • Программная инженерия.
  • Инструментарий аналитика.
  • Решения 1С: архитектура, учет и кейсы автоматизации на 1С.
  • Управление проектом.
  • Управление продуктом.
  • Soft skills, управление командой проекта.

Конференция для аналитиков и руководителей проектов, а также других специалистов из мира 1С, которые занимаются системным и бизнес-анализом, работают с требованиями, управляют проектами и продуктами!

Подробнее о конференции.

 


См. также

Автотесты для типовых конфигураций ERP Управление предприятием 2 и Комплексная автоматизация 2 (для vanessa automation)

Тестирование QA DevOps и автоматизация разработки Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарии возможно использовать как для vanessa-automation, так и для СППР. Поддерживаемые версии конфигураций ERP2 и КА2: 2.5.15.111.

2220 руб.

04.07.2022    6937    26    1    

24

Автотесты для типовых конфигураций Бухгалтерия предприятия КОРП 3.0 и Бухгалтерия предприятия 3.0 (vanessa automation)

Тестирование QA DevOps и автоматизация разработки Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Бухгалтерия предприятие 3.0 и версии КОРП: 3.0.144.49.

1728 руб.

20.01.2022    6710    10    0    

9

Системы контроля версий для 1С-разработчиков.

1С-программирование DevOps и автоматизация разработки Групповая разработка (Git, хранилище) DevOps для 1С Платформа 1С v8.3 Платные (руб)

Основы командной разработки на 1С. Использование систем контроля версий при разработке на платформе 1С:Предприятие 8

4900 руб.

29.06.2022    9386    78    4    

112

Управление сборкой. Расширение для конфигурации СППР

DevOps и автоматизация разработки Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Подсистема «Управление сборкой GLI» предназначена для динамического формирования сборочных линий Gitlab и отслеживания процесса доработок систем на базе1С:Предприятия Позволяет упростить выпуск новых релизов системы, подготовить описание доработок системы. Интегрируется с GitLab API по событиям Push, Merge-request, Pipeline. Уведомляет пользователей о результатах сборки/тестирования сборочных конвейеров через СВ, либо при её недоступности или отсутствию по E-Mail. Поможет при отправке исправлений ошибок в общую базу тестирования, сформирует запросы на слияние в ветку версии только по протестированному и подтверждённому функционалу. Подсистема рассчитана исключительно на клиент - серверную архитектуру тестовых ИБ. Поддерживаемая версии СППР 2.0.4.15, платформа не ниже 8.3.17.1549, 2.0.7.3 / не ниже 8.3.21.1664, начиная с релиза 1.0.4.30 требуется платформа не ниже 8.3.23 рекомендуемый релиз 8.3.23.1997

7000 руб.

26.08.2022    10774    7    5    

30

Автоматическое подтверждение легальности обновления базы или как обновить 100 типовых баз 1С за 5 часов

DevOps и автоматизация разработки Обновление 1С Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Расширение для конфигураций 1С для автоматического подтверждения легальности обновления и выполнения обработчиков обновления при пакетном автоматическом обновлении большого числа баз 1С. А также сам модуль обработки по автоматическому обновлению баз.

2 стартмани

08.05.2019    24398    56    VPanin56    26    

27

1С, СППР и Архитектура как код

DevOps и автоматизация разработки Бесплатно (free)

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

01.02.2024    2736    roman72    9    

8

TCP прокси-сервер хранилища конфигурации 1С

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Платформа 1С v8.3 Бесплатно (free)

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    3006    kamisov    17    

60

Infrastructure as code: кнопка «Сделать всё», или Упаковываем наше окружение в 5 кБ текста

DevOps и автоматизация разработки Бесплатно (free)

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

01.11.2023    1390    Libelle    5    

14
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. DitriX 2093 24.05.21 14:02 Сейчас в теме
Итересно, а уже перешли на ЕДТ?
2. user1466751 17 24.05.21 15:55 Сейчас в теме
А каким-то образом логируете изменение настроек ЖР или парольной политики, чтобы аудиторам потом показывать контроль за?
3. user1589518 25.05.21 18:58 Сейчас в теме
Добрый вечер, большое спасибо за статью. Если не затруднит, ответьте пожалуйста на несколько вопросов:
1) Расскажите пожалуйста подробнее схему организации баз: N баз разработчиков -> хранилище -> тестовая база -> рабочая база ?
2) Кто, каким образом (автоматически или вручную) и как часто обновляет конфигурацию тестовой базы? Раз в день, перед ночными авто-тестами? Автотесты проходят на тестовой базе?
3) Перед релизом, вы берете всё-всё, что есть в хранилище, и переносите в рабочую базу, или же как-то выборочно человек сравнивает с хранилищем и берет только то, что необходимо?
4) Среднее время написания одного авто-теста в Vanessa Runner?
it-expert; +1 Ответить
4. user1711286 18.01.23 15:13 Сейчас в теме
(3) Не будет ответа, есть бюрократические сложности.
Оставьте свое сообщение