Осторожный 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С".

См. также

DevOps для 1С DevOps и автоматизация разработки Программист Стажер Платные (руб)

Данный онлайн-курс (интенсив) предусматривает изучение процессов, инструментов и методик DevOps, их применение при разработке на платформе 1С. 

2500 руб.

20.06.2023    22274    2    4    

310

SALE! 50%

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

Использования систем контроля версий — стандарт современной разработки. На курсе научимся использованию Хранилища 1С и GIT при разработке на 1С:Предприятие 8. Разберем подходы и приемы коллективной разработки, научимся самостоятельно настраивать системы и ориентироваться в них.

4900 2450 руб.

29.06.2022    11934    99    4    

131

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

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

2160 руб.

05.08.2024    1281    12    1    

7

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    12557    10    10    

35

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

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

2400 руб.

04.07.2022    8369    38    1    

29

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

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

1800 руб.

20.01.2022    7783    19    0    

13

DevOps и автоматизация разработки Программист Платформа 1С v8.3 Бесплатно (free)

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

18.09.2024    1731    antonov_av    6    

14

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

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

28.08.2024    6590    yuraid    28    

50
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. DitriX 2101 24.05.21 14:02 Сейчас в теме
Итересно, а уже перешли на ЕДТ?
2. user1466751 18 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) Не будет ответа, есть бюрократические сложности.
Оставьте свое сообщение