DevOps. Как это выглядит у нас

01.10.19

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

DevOps в департаменте разработки 1С в крупной компании.

В июне этого года мне предложили выступить на конференции. Тайминг был 25 минут, поэтому я подготовил выступление из двух частей, первая - о проекте, а вторая - о том, как мы понимаем и используем DevOps. В самый последний момент время на выступление сократили в два раза, из-за чего я рассказал только первую часть, а вторая пылилась на яндекс-диске. Сейчас, разбирая залежи я случайно наткнулся на презентацию и расшифровку, которую планировал читать. Не пропадать же добру? Наверное статья кому-то покажется сырой, ведь фактически формат предполагал быстренько рассказать "а как у нас", а потом уже в кулуарах обсудить детали. Кто-то попрекал меня, что я превращаю инфостарт в личный дневник. Пожалуйста, закройте страницу и не читайте дальше. Дальше будет жесткое IMHO!
Так как изначально это была презентация - я сохраню формат, сначала слайд - потом текст.

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

Интеграция команд 

Начнем с определения взятого с википедии: 

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

Бизнес заводит Запрос на изменение в специальной системе, так называемый RFC. RFC поступает к владельцу продукта. Все приложение поделено на 5 условных частей и есть соответственно 5 scrum-команд: 

  • Продажи 

  • Товародвижение 

  • B2B 

  • Дилеры 

  • Интернет-магазин. 

Что значит эти команды и чем занимаются для нашего рассказа не важно, не буду заострять на этом внимание. Итак, задача поступает к владельцу продукта, он ставит ее в беклог. Каждые две недели выполняется так называемый грумминг, когда RFC делятся на мелкие задачи, которые можно поручить одному человеку, будь то бизнес-аналитик, разработчик, тестировщик или администратор. Администраторы, кстати не относятся ни к какой команде, а привлекаются по мере необходимости. Затем уже прогрумленные задачи включаются в спринт. Таким образом в спринт может, например войти – «провести анализ по RFC», следовательно над задачей уже работают, но в релиз она не войдет. По окончании разработки, но до передачи задачи в тестирование проводится УАТ, приемочное тестирование, на котором заказчик смотрит, что сделали именно то, что он хотел. В УАТ обязательно участвует сотрудник технической поддержки и как раз вот этот момент – это чистый DevOps. Сотрудник техподдержки так же как и заказчик может сразу высказать свои замечания, например сообщить, что вот эти моменты нужно переделать, здесь обязательно добавить логирование, уточнить по планируемой нагрузке на систему в условных попугаях и дать предположение о необходимости оптимизации решения ДО его выпуска в продуктив. 

Перед выпуском релиза команда сообщает список задач, которые готовы к выпуску в релиз и помещает весь готовый к выпуску в продуктив код в релизное хранилище. Я не буду тут углубляться в технические детали, сколько у нас хранилищ, кто и когда помещает в них код, это для данной темы не очень важно. После сборки релиза все тестировщики перестают быть членами скрам-команд и превращаются в команду тестировщиков. Начинается регрессионное тестирование. На текущий момент оно длится около полутора дней и состоит примерно из 240 регрессионных тестов. По окончании регрессионного тестирования принимается решение о выпуске релиза. После выпуска релиза свою работу начинает техподдержка, анализируются основные показатели работоспособности системы, такие как APDEX, нагрузка на систему, анализ технологического журнала на количество эксепшенов, время ожиданий на блокировках и еще несколько десятков параметров. Кроме того внимательно изучаются все поступающие инциденты. На основании полученных данных заводятся дефекты с критичностью от 1 до 4, где 1 – полная остановка системы в результате дефекта, а 4 – есть ошибка на неосновном функционале имеющая обходное решение. 

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

СI/CD. 

Священная корова DevOps. 

Начнем с неприятного. Мы не используем EDT. Причины со сцены я озвучивать не буду. Примем как данность. Значит у нас нет гита. 

Continuous Integration.  

У нас нет автоматической сборки проекта, однако часть CI присутствует. На проекте работают 12-15 разработчиков, которые ежедневно, а иногда и несколько раз в день помещают свой код в хранилище разработки, из которой уже обновляются базы, в которых работают тестировщики. Статистика показала, что в день проходит примерно 20-40 таких пул-реквестов. 5-10 раз в сутки основная база для тестирования обновляется из хранилища разработки. Каждую ночь запускаются автотесты, по результатам выполнения которых тестировщики заводят дефекты. Пока вручную. Можно ли считать это непрерывной сборкой? Считаю что да. 

Continuous Delivery. 

Тут сложней. Несмотря на то, что динамическое обновление присутствует в 1С уже очень давно – мы его не используем. К счастью, 1С придумала расширения. Одной из самых важных причин перехода с 8.3.10 на 8.3.12 было исправление ошибок по работе с расширениями. На текущий момент все дефекты более-менее высокого приоритета исправляются расширением, новый функционал не выпускается расширениями только из-за бюрократических препон. Технических ограничений выпускать новый функционал по мере готовности никаких нет. 

Automated Testing 

Процесс обкладывания кода автотестами в среде 1С несильно распространен, поэтому данная практика оказалась одной из самых сложных в проекте. Однако опыт, накопленный «Серебряной пулей» позволил нам в течение 3 месяцев подготовить стенд и обучить сотрудников группы тестирования созданию автотестов. На текущий момент порядка 220 кейсов обложены автотестами (см. выше), кроме того после выхода новых задач появляются кейсы в регрессионном тесте, которые так же кладутся в скоуп задач по созданию автотестов. По мере возможности тестировщики берут и разрабатывают автотест для конкретных кейсов. 

Внедрение автотестирования позволило сократить регрессионное тестирование перед выпуском релиза с 90 до 35 человекочасов (с 1.5 до 0.5 рабочего дня при участии 7 тестировщиков) 

Инфраструктура как код (Infrastructure as Code) 

На текущий момент не используется. 

Continuous Deployment 

Не так давно (меньше года назад) 1С представила свой новый продукт: «Центр администрирования». Он позволяет автоматизировать то, что раньше делалось вручную, писались разрозненные скрипты или использовались продукты других компаний. На текущий момент Центр администрирования встроен в Центр контроля качества, который мы активно используем в качестве CMDB и системы мониторинга, поэтому сразу после появления данного продукта наши администраторы начали менять свои самописные скрипты на сценарии в данном продукте. На текущий момент уже выполнена автоматизация установки продуктивного релиза которая включает в себя блокировку базы, перезапуск служб и очистку сеансовых данных, подключение к релизному хранилищу и обновление основной и конфигурации базы данных. Участие человека сводится к запуску скрипта, которая нужна лишь для соблюдения регламента компании. 

Load Testing 

Для проведения нагрузочного тестирования есть специальный стенд, состоящий из 6 физических серверов, полностью повторяющих продуктивную среду. После того, как релиз-менеджер дает отмашку о готовности релиза конфигурация, полностью соответствующая той, что выйдет в продуктив устанавливается на нагрузочный стенд, после чего в течение 6-8 часов 8 тысяч клиентских сессий эмулируют типовую нагрузку на систему, пробивают чеки, проводят накладные на поступление товара и прочее. По итогу нагрузочного теста формируется сводная оценка APDEX согласно методике, рекомендованной компанией 1С. Оценка считается от 0 до 1, где 1 – падения производительности не зафиксировано, а 0 – система фактически не работоспособна. На основании полученной оценке принимается решение о выпуске релиза. 

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

Application Performance Monitoring 

В системе регистрируется время всех основных операций, на текущий момент их около 40. По каждой из операций с бизнес-подразделениями компании заключен формальный договор, какое среднее время операции считать хорошим, какое приемлемым, а какое плохим. Мониторинг в системе настроен таким образом, что если время какой-либо операции отклоняется от «хороших» значений об этом немедленно оповещаются администраторы и в системе ServiceDesk заводится инцидент. В зависимости от количества операций и от степени их отклонения от нормы приоритет инцидента может быть повышен вплоть до критического (система недоступна для работы). 

Выводы

Несомненно разработка в 1С накладывает определенные ограничения для использования современных технологий разработки, однако все эти технологии имеют несколько вариантов прочтения и прикрыв глаза ладошками можно гордо заявить - мы внедрили DevOps :)

DevOps администрирование менеджмент

См. также

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

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

2500 руб.

20.06.2023    22404    7    4    

311

SALE! 50%

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

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

4900 2450 руб.

29.06.2022    11964    100    4    

133

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    1292    15    1    

8

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    12577    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    8383    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    7791    19    0    

13

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

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

18.09.2024    1809    antonov_av    6    

14

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

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

28.08.2024    6674    yuraid    28    

50
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. genayo 01.10.19 08:15 Сейчас в теме
Вопрос несколько не по теме - а ни разу не пожалели, что 1С для такого крупного проекта выбрали? И интересно было бы узнать причины, почему именно 1С :)
maksa2005; smit1c; chg; zabaluev; +4 3 Ответить
6. Repich 564 01.10.19 12:22 Сейчас в теме
(1) Нет. Нам требовалось решение с возможностью дешевых и быстрых доработок. Ни SAP и Oracle таких вариантов не предоставляют. SCRUM это не про них.
Andreeei; +1 Ответить
7. genayo 01.10.19 12:26 Сейчас в теме
(6) Интересно, кроме SAP Oracle и 1С вообще ничего не рассматривали? Самостоятельная разработка на JAVA или Net вообще не вариант?
8. Repich 564 01.10.19 13:09 Сейчас в теме
(7) Нет, эти варианты не рассматривались.
10. acanta 01.10.19 16:21 Сейчас в теме
Тело не живёт без мозга (с)
Какое СУБД или какие форматы бд есть у Java?
sasha777666; +1 Ответить
11. genayo 01.10.19 18:26 Сейчас в теме
(10) Мы обсуждаем не универсальное, а специализированное решение :))
2. Pr-Mex 136 01.10.19 09:11 Сейчас в теме
Дорогу осилит идущий!
Shmell; support; +2 Ответить
3. botokash 395 01.10.19 09:32 Сейчас в теме
например мы по закону не имеем права предоставлять разработчикам доступ в продуктивную систему, а так же сотрудник, который пишет код – не имеет права самостоятельно его тестировать


А можете прояснить данный момент, что за законы?
sasha777666; user1233595; утюгчеловек; +3 Ответить
4. GreenDragon 01.10.19 10:52 Сейчас в теме
(3) Предположу, что закон о персональных данных
5. Repich 564 01.10.19 12:20 Сейчас в теме
9. Summer_13 01.10.19 15:47 Сейчас в теме
"Несмотря на то, что динамическое обновление присутствует в 1С уже очень давно – мы его не используем"
Сразу можно ставить плюс =)) Постоянно наблюдал и наблюдаю ,как с течением времени отваливаются базы у разработчиков,которые используют динамическое обновление.
12. OPM 352 10.10.19 10:43 Сейчас в теме
(9) Периодически использую динамическое обновление, и ничего - базы работают, главное не забывать делать обновление в монопольном режиме. p.s. от передоза соли тоже можно умереть, ты же не выбрасываешь солонку?
13. Summer_13 10.10.19 11:59 Сейчас в теме
(12) Какой смысл в динамическом обновлении,если Вы можете делать обновление конфигурации в монопольном режиме?
14. OPM 352 10.10.19 16:12 Сейчас в теме
(13) Если для вас норма выкидывать всех из базы в середине рабочего дня - то не вопрос, можно делать только в монопольном, пользователи подождут.
Но чаще всего бизнес не хочет останавливаться, вот здесь и решаешь или пользователи ждут до следующего дня, или динамическое обновление.
Я против того, чтобы обновлять бездумно раз 10 на дню, но говорить, что это абсолютное зло неправильно.
Иногда запрещают использовать динамическое обновление - чтобы не было ситуации когда один попросил и обосновал, второй, третий, и не каждому откажешь, а потом база легла, в этом случае проще запретить для всех, чем разгребать обиды: почему для одного обновили, а второму нет.
15. Summer_13 10.10.19 16:23 Сейчас в теме
(14)Так это Вы же делаете в монопольном режиме "главное не забывать делать обновление в монопольном режиме",как у вас в этот момент работают пользователи? А если Вы всех выгоняете -зачем делать обновление динамическим?
16. OPM 352 10.10.19 16:26 Сейчас в теме
(15)Вечером делаешь в монопольном или в выходные (когда есть окно для обслуживания), когда нет никого.
17. Cyberhawk 135 24.10.19 20:06 Сейчас в теме
динамическое обновление присутствует в 1С уже очень давно – мы его не используем. К счастью, 1С придумала расширения
Ты не поверишь...
18. kwazi 660 15.11.19 17:18 Сейчас в теме
ЦА в ЦКК сами встроили?
19. kwazi 660 15.11.19 17:51 Сейчас в теме
(18) нашел. Его можно использовать как самостоятельное приложение или в составе ЦКК
Оставьте свое сообщение