Технологические вопросы крупных внедрений
10.10.2023
Развитие информационных технологий приводит к постоянному изменению требований к разработке и внедрению программного обеспечения. В условиях быстрого развития бизнеса и стремительного темпа изменений на рынке необходимо найти эффективные методы и инструменты для ускорения и автоматизации процессов разработки, тестирования и доставки программных продуктов.
В этом контексте концепция DevOps приобретает все большую популярность с каждым годом. DevOps представляет собой подход к разработке программного обеспечения, основанный на тесном сотрудничестве между разработчиками и операционными специалистами.
Главная идея DevOps заключается в том, чтобы объединить разработку, тестирование и доставку программных продуктов в единый, непрерывный процесс.
В этой статье мы рассмотрим основные подходы и практики применения DevOps-подхода в контексте разработки на платформе 1С:Предприятие.
Введение основных инструментов DevOps в разработку на платформе 1С:Предприятие может значительно повысить эффективность и скорость процессов разработки.
Мы рассмотрим основные принципы DevOps, такие как автоматизация процессов, контроль версий, непрерывная интеграция и развертывание, мониторинг и логирование. Мы также обсудим инструменты и практики, которые можно применить при внедрении DevOps в разработку на прикладном языке платформы 1С:Предприятие.
Целью данного руководства является предоставление инструментов, которые помогут вам успешно внедрить DevOps-практики в среду разработки 1С. Мы надеемся, что данное руководство станет справочным материалом для вас и поможет вам повысить эффективность вашей разработки, сократить время доставки продуктов и улучшить качество вашего программного обеспечения.
В DevOps существует несколько ключевых компонентов, которые помогают обеспечить эффективное взаимодействие между разработчиками и операциями.
К основным можно отнести
Continuous Integration, CI
Continuous Delivery, CD
Infrastructure as Code, IaC
Автоматизация тестирования
Мониторинг и анализ
В данной статье мы разберем несколько подходов и инструментов, которые могут быть применены для площадок, обслуживающих преимущественно программное обеспечение на базе платформы 1С:Предприятие.
Пожалуй, начнем с ключевого компонента - Continious integration (CI). CI - это процесс автоматической сборки и интеграции кода разработчиков в единую общую основную ветку разработки. При непрерывной интеграции можно быстро обнаружить и устранить конфликты слияния кода, а также обеспечить процесс выявления ошибок и конфликтов на ранних этапах разработки.
В инструментарии разработчика на платформе 1С:Предприятие имеется два основных инструмента: конфигуратор и 1C:Enerprise Development Tools (1C:EDT). Что в конфигураторе, что в 1C:EDT поддерживается групповая разработка. Но выглядит она по-разному. Для того, чтобы понять как можно организовать конвейер Ci, рассмотрим оба инструмента в части возможности его построения.
В независимости от выбранного инструмента разработки (конфигуратор/1С:EDT), масштаб группы разработчиков неограничен - каждый разработчик программирует в своей собственной информационной базе и не мешает остальным разработчикам. Также разработчикам доступен выбор формата информационной базы: кто-то выполняет небольшие доработки на файловой информационной базе, а другому принципиально использование конкретной СУБД, такой как PostgreSQL (оптимизация критичных участков кода).
Но помимо выбора формата, разработчик также волен самостоятельно решать:
Начнем с классики - конфигуратора. Традиционно, для более-менее больших команд, групповая разработка в конфигураторе ведется с использованием хранилища разработки конфигураций. Подключиться к хранилищу конфигурации можно как напрямую через директорию хранилища в сети, так и с помощью специального сервера хранилища конфигурации. В независимости от типа соединения у такого подхода есть большой минус - при таком подходе, минимальными единицами версионируемых объектов становятся целая конфигурация и/или расширение. И в целом, работа с конфигурацией в конфигураторе выполняется в рамках бизнес-объектов.
В больших компаниях, конфигурации которых построены на "гигантских" решениях, такой подход неприемлем. Отсутствует гибкость работы с хранилищем. Увеличиваются сроки проведения Code review, слияния разных версий и откат изменений. Но это не значит, что такой подход непреминителен для относительно малых команд. С помощью пакетного режима конфигуратора можно выгружать изменения в итории хранилища или выполнять выгрузку конфигурации для определенной версии в хранилище в файлы на дайске для последующего анализа. Выгруженную в файлы конфигурацию можно влить в ствол разработки любого репозитория. Например, так можно проводить Code review. Такой подход тоже применим, однако следует всегда помнить, что таким образом будут оствутсвовать инструменты контроля (по крайней мере в автоматическом режиме) по управлению исходным кодом. В результате процесс из автоматического превращается в "бюрократический": при решении об откате изменений сложно найти и сопоставить конкретную версию в хранилще с версией выгруженных файлов, Ответственный за кодовую базу должен в ручном режиме контролировать нормальный ход вещей.
Кроме этого, в разработке в хранилище конфигурации полностью отсутствует ветвление. Все работают в одной кодовой базе без разделения на основные контуры (разработческий, для запуска тестов, производственный и т.д.). Вместо этого для каждого контура создается отдельное хранилище, изменения между которыми выполняется с помощью скриптов или в ручном режиме.
При разработке в хранилище конфигурации процесс автоматизации будет выглядеть следующим образом (при учете, что используется SVN):
разработка всеми участниками в одном хранилище;
раз в n-часов происходит выгрузка конфигурации в файлы;
обнаруженные изменения в файлах заливаются в репозиторий;
контроль выполняется "номинально" (сложно отличить изменения одного разработчика от другого);
на отдельно выделенном ПК выполняется сборка готовой конфигурации с помощью пакетного режима конфигуратора;
ответственный сотрудник вручную переносит все изменения между хранилищами;
ответственный сотрудник запускает тесты;
если тесты были успешно выполнены, ответственный сотрудник готовит регламент обновления продуктивного контура (выполняет подготовительные процедуры);
с помощью пакетного режима конфигуратора продуктивная информационная база обновляется из хранилища в автоматическогом режиме.
Совсем по-другому обстоят дела у 1C:Enterprise Development Tools (1C:EDT). В 1C:EDT уже идет встроенная поддержка популярной системы контроля версий - Git. В данном случае все максимально прозрачно: 1C:EDT интегрируется с хранилищем Git. Доступно создание различных веток, выполнять слияние с различными ветками, получать все изменения в кодовой базе моментально по запросу. А если у себя на площадке вы используете системы управления репозиториями исходного кода (Gitlab, Gogs, Gitea и другие), то вам доступна тесная интеграция с другими инструментами DevOps. Например, при слиянии ветки задачи с веткой с тестами, могут автоматически быть запущены тесты. При слиянии с производственной веткой - может быть собрана конфигурация для загрузки в продуктивную информационную базу.
Для 1C:EDT как и для конфигуратора доступен интерфейс управления с помощью командной строки. Особенно он будет полезен при сборке конфигураций. 1C:EDT напрямую собирать конфигурацию не умеет. С помощью cli (command line interface - интерфейс командной строки) можно сконвертировать исходный код 1C:EDT в код понятный для конфигуратора. Далее с помощью пакетного режима конфигуратора можно загрузить этот код и сохранить уже конфигурацию. Далее эту конфигурацию можно передавать как для автоматического, так и для ручного тестирования.
В данном случае, на благо автоматизации конфигуратор и 1C:EDT должны "работать" вместе:
вся разработка ведется в 1C:EDT с использованием Git (встроенная поддержка из коробки). Разработчики создают ветви, выполняют задачи, сливают ветви и т.д.;
при выполнении слияния с веткой разработки на отдельно выделенном ПК выполняется сборка готовой конфигурации с помощью 1C:EDT CLI и пакетного режима конфигуратора;
одновременно запускается процесс статического анализа кода с генерацией отчета;
после сборки и анализа запускается процесс загрузки готовой конфигурации в базу с тестами с помощью пакетного режима конфигуратора;
если тесты были успешно выполнены, запускается процесс подготовки к обновлению продуктивного контура;
автоматически выполняется загрузка конфигурации и обновление информационной базы.
Предположим, что вы остановились на разработке с помощью 1C:EDT. Тогда вам понадобится удобная система, которая умеет управлять всей кодовой базой ваших репозиториев. Система управления репозиториями исходного кода играет важную роль в разработке программного обеспечения. Управление исходным кодом — это процесс организации и контроля изменений в исходных файлах программного обеспечения. Использование соответствующей VCS помогает сосредоточиться на разработке и управлении кодом, содействуя коллаборации и упрощая процесс интеграции изменений от разных разработчиков.
Одним из важных аспектов работы является возможность отслеживания изменений и версий кода. Каждое изменение фиксируется и сохраняется в системе, что позволяет разработчикам возвращаться к определенной версии кода, если это необходимо. Это особенно полезно при поиске и устранении ошибок, так как разработчики могут сравнивать различные версии кода и определить, какие изменения привели к проблеме.
Еще одним важным преимуществом является возможность совместной работы над проектом. Разработчики могут работать над одним и тем же кодом, но в разных ветвях, что позволяет избежать конфликтов при одновременных изменениях. Кроме того, система предоставляет механизмы слияния изменений, которые позволяют объединить различные ветви кода в одну, сохраняя все изменения.
Еще одним важным преимуществом является возможность совместной работы над проектом. Разработчики могут работать над одним и тем же кодом, но в разных ветвях, что позволяет избежать конфликтов при одновременных изменениях. Кроме того, система предоставляет механизмы слияния изменений, которые позволяют объединить различные ветви кода в одну, сохраняя все изменения.
Система также обеспечивает возможность отслеживания и анализа изменений в коде. История изменений в репозитории исходного кода сохраняется, что позволяет разработчикам анализировать, кто, когда и зачем вносил изменения. Это полезно для обратной связи, обучения новых разработчиков и поддержки безопасности проекта.
Без системы управление исходным кодом может стать сложной задачей. Отслеживание и контроль изменений становится затруднительным, а совместная работа над проектом становится неорганизованной и подверженной конфликтам. Поэтому важно осознавать и использовать преимущества таких систем при разработке программного обеспечения. Системы управления репозиториями исходго кода помогают сохранять целостность кода, облегчает совместную работу и делает процесс управления исходным кодом более эффективным и продуктивным.
Вы можете выбрать как публичную систему, такую как Github, либо выбрать дистрибутив сервера, который можете развернуть у себя на площадке:
Со средой разработки, в целом, разобрались. И например, решили использовать систему управления репозиториями исходного кода. Конвейер вот-вот заработает. Разработчики уже научились работать с ветками. Создают, вливают, объединяют. Ответственный за Code review смотрит и не пропускает ни одну логическую ошибку. Следит за всеми стандартами. Кодовая база - идеальна. Казалось бы - куда еще лучше? А лучше - освободить ответственного за Code review (по крайней мере в части соблюдения стандартов разработки) и "загрузить" его основными обязанностями. Вместо сотрудника это будет делать система, отвечающая за статический анализ кода.
Статический анализ исходного кода - это процесс проверки программного кода без его фактического выполнения. Он основан на анализе структуры, синтаксиса и семантики кода, с целью выявления потенциальных проблем и ошибок.
Статический анализ помогает разработчикам обнаружить ошибки и потенциальные проблемы в коде на ранних этапах разработки, еще до его компиляции или выполнения. Это позволяет сэкономить время и усилия, которые могли бы быть затрачены на поиск и исправление ошибок в более поздние стадии разработки или даже после выпуска продукта.
Статический анализ исходного кода может обнаружить различные виды проблем, такие как неправильное использование переменных, неиспользуемый код, неправильное применение функций или недостаточное или избыточное использование области памяти. Он также может обнаружить потенциальные проблемы безопасности, такие как уязвимости, связанные с контролем доступа или обработкой данных.
В мире разработки на платформе 1С:Предприятие распространены два готовых инструмента:
Вот так, например, выглядит список ошибок и направление ответственному ошибок в АПК, обнаруженных после выполнения анализа :
И все это выполняется при слиянии с разработческой веткой. Автоматически. Единственное, нужно распределять "вручную" ответственных за исправление этих ошибок.
Сценарное тестирование является важной частью процесса разработки программного обеспечения, включая и системы 1С. Оно направлено на проверку соответствия функциональным требованиям и спецификациям продукта, а также на установление его работоспособности в различных сценариях использования.
Сценарное тестирование на платформе 1С:Предприятие может включать в себя проверку основных функций и возможностей системы. Это может быть тестирование функций, таких как создание и редактирование документов, управление пользователями и правами доступа, работа с отчетами и аналитическими инструментами и т.д.
Один из основных подходов к сценарному тестированию - это проведение тестовых случаев. Тестовые случаи составляются на основе функциональных требований и описывают конкретные шаги и ожидаемые результаты для каждой функциональной возможности системы. В процессе тестирования эти случаи выполняются с целью проверить, работает ли функциональность правильной, и соответствует ли она требованиям.
Важным аспектом сценарного тестирования является также проверка работы системы в различных сценариях использования. В экосистеме платформы 1С:Предприятие существует ряд программных продуктов, которые могут отвечают за функциональное тестирование:
Кроме того, при сценарном тестировании стоит уделить внимание проверке соответствия системы установленным стандартам и регламентам. Например, может быть проверено соответствие системы требованиям безопасности или правилам обмена данными с другими системами.
Здесь ключевой момент - это регистрация и анализ обнаруженных дефектов. При проведении тестирования неизбежно могут быть найдены ошибки, неправильное поведение системы или недостатки в функциональности. Важно тщательно регистрировать все обнаруженные проблемы, а также проводить их анализ с целью определения причин и разработки мер по их устранению.
Сценарное тестирование может является неотъемлемой частью процесса разработки и обеспечивать высокое качество и надежность системы. Оно позволяет проверить соответствие системы функциональным требованиям и спецификациям, а также установить ее работоспособность в различных сценариях использования. Автоматизированные инструменты и тестовое оборудование помогают упростить и ускорить процесс тестирования, а также повысить его эффективность. Регистрация и анализ обнаруженных дефектов важны для обеспечения дальнейшей разработки и улучшения системы.
Инфраструктура как код (IaC) является передовым подходом в сфере системного администрирования и разработке программного обеспечения. Она предлагает возможность описывать и управлять инфраструктурными ресурсами с помощью кода, что позволяет автоматизировать процессы развертывания и управления инфраструктурой. Один из инструментов, предоставляющий функциональность IaC, это 1С:Центр администрирования.
1С:Центр администрирования (1С:ЦА) входит в состав Корпоративного инструментального пакета (КИП). Предоставляет инструменты для управления и администрирования информационными системами, используя инфраструктуру как код. Позволяет как экспертам, так и администраторам эффективно управлять инфраструктурой, повышая гибкость и автоматизацию процессов развертывания и управления.
Вся функциональность 1С:ЦА реализована с помощью выполнения внешних скриптов на целевом компьютере (сервере). Поддерживается любой скриптовый интепретатор и язык программирования к нему. Благодаря этому нет ни единой потребности в автоматизации, которую не сможет покрыть 1С:ЦА.
Одной из главных преимуществ использования 1С:ЦА для реализации инфраструктуры как кода является простота и удобство разработки. Инструмент предлагает интуитивно понятный пользовательский интерфейс, который позволяет разработчикам описывать инфраструктуру в виде кода, даже без глубоких знаний в области системного администрирования. Это делает процесс разработки и настройки инфраструктуры более доступным и понятным для широкого круга специалистов. Еще одним преимуществом 1С:ЦА является его гибкость и возможность интеграции с другими инструментами и технологиями. Это позволяет создавать комплексные и гибкие решения в области инфраструктуры и деплоя. Например, интеграция с системами мониторинга позволяет отслеживать состояние инфраструктуры и производительность системы. Это помогает быстро выявлять проблемы и реагировать на них.
1С:ЦА предоставляет мощные возможности автоматизации процессов. С его помощью можно автоматически настраивать и разворачивать инфраструктуру. Это упрощает и ускоряет процесс настройки и обеспечивает согласованность состояния инфраструктуры. Автоматизация также помогает предотвратить ошибки, связанные с опечатками при вводе команд и правильностью указания аргументов этих команд, и гарантирует повышенную безопасность и надежность инфраструктуры.
Не менее важным можно считать интеграцию с конвейерами CI/CD (с помощью вызовов сервисов удаленного управления 1С:ЦА). С помощью такой интеграции можно манипулировать инфраструктурой любой сложности и в любом объеме.
Помимо этого, 1С:ЦА также обладает возможностями многопользовательского доступа, что позволяет разработчикам и администраторам эффективно сотрудничать при настройке и развертывании инфраструктуры. Каждый участник команды может вносить изменения и взаимодействовать со своими сценариями и группами автоматизации, что способствует эффективной работе и сокращает время разработки и настройки.
Но, все же, основные преимущества 1С:Центр администрирования - удобство разработки и автоматизации при интеграции с другими инструментами. Благодаря такому подходу можно повысить гибкость, надежность и безопасность процессов развертывания и управления инфраструктурой, что является важным аспектом в современной разработке программного обеспечения.
Если взглянуть на схему в начале статьи, то можно заметить что 1С:Центр администрирования занимает лидирующую роль в построении конвейера сборки и доставки обновлений.
Вот одни из немногих "явных" обязанностей "конвейера", которые берет на себя 1С:ЦА:
Нагрузочное тестирование является важной составляющей процесса разработки больших конфигураций, например, таких как 1С:ERP или 1C:Комплексная автоматизация. Нагрузочное тестирование позволяет оценить производительность, стабильность и готовность системы к работе при высоких нагрузках. Одним из важных инструментов, который обеспечивает возможность проведения нагрузочного тестирования, является 1С:Тест-центр.
1С:Тест-центр предоставляет гибкое и удобное решение в виде расширения. Оно предлагает разработчикам и тестировщикам широкую функциональность, позволяющую создавать реалистичные сценарии использования системы, настраивать параметры тестирования и проводить тестирование системы при различных условиях и нагрузках.
Одним из основных преимуществ 1С:Тест-центра является его удобный пользовательский интерфейс, который обеспечивает простоту в создании и настройке тестовой среды и запуска сценариев. С помощью графического интерфейса разработчики могут определить различные сценарии использования системы, настроить параметры тестирования, включая количество виртуальных пользователей, и задать нагрузку на сервер. Это позволяет создавать наиболее реалистичные и требовательные сценарии использования, учитывая поведение реальных пользователей системы.
Важным критерием 1С:Тест-центра является его возможность распределенного тестирования. Это означает, что разработчики могут создать группу тестовых агентов, которые могут выполнять нагрузочное тестирование с разных машин. Распределенное тестирование позволяет симулировать большое количество пользователей и проверить стабильность работы системы при высоких нагрузках. Оно также повышает скорость процесса тестирования и эффективность использования ресурсов.
1С:Тест-центр дает возможность анализа результатов нагрузочного тестирования с помощью дополнительных отчетов и выгрузки в файлы (для последующего анализа в сторонних информационных системах). Анализ результатов нагрузочного тестирования является важной частью процесса постоянного улучшения производительности и качества системы.
С помощью 1С:Тест-центра эксперты и разработчики могут проводить нагрузочное тестирование системы с оптимальной гибкостью и удобством. А также могут создавать "реалистичные" сценарии использования системы, моделировать различные типы нагрузки и проводить тестирование в распределенной среде. А уже анализ результатов тестирования позволяет выявить узкие места и оптимизировать производительность системы.
Постоянный запуск тестов 1С:Тест-центра и контроль результатов тестов могут гарантировать высокую производительность и стабильность системы при высоких нагрузках, что является ключевым аспектом успеха проектов разработки программного обеспечения.
1С:Центр контроля качества (1С:ЦКК) предоставляет большой набор инструментов мониторинга, которые помогают отслеживать и анализировать состояние и производительность системы, а также заранее выявлять и предупреждать о возможных системных ошибках. С помощью 1С:ЦКК можно следить за различными показателями площадок эксплуатации, таких как доступность, производительность, нагрузка, а также статус и работоспособность серверов (1С:Предприятие, СУБД, веб-серверы) и компонентов.
1С:ЦКК предлагает гибкую настройку и настраиваемые мониторинговые инструменты, что позволяет адаптировать мониторинг под конкретные потребности конкретной площадки. Администраторы 1С:ЦКК могут свмостоятельно определять необходимые метрики и пороги для отслеживания, настроить уведомления о возникающих проблемах и настроить автоматические действия при достижении определенных условий (например, создание инцидентов при отсутствии доступа к информационному ресурсу).
Одним из ключевых преимуществ 1С:ЦКК является его широкий спектр возможностей мониторинга. Мониторинг в 1С:ЦКК позволяет отслеживать доступность системы и сервисов через "пинг" контроль, отслеживать производительность с помощью мониторинга ресурсов (процессора, памяти, дискового пространства, сетевых интерфейсов и др.), а также выполнять мониторинг работы процессов серверов 1С:Предприятие. Такой комплексный подход позволяет полноценно контролировать и анализировать состояние системы в целом. 1С:ЦКК также предоставляет функциональность аналитики и отчетов. Администраторы могут анализировать собранные данные, которые отображают состояние системы, производительность и другую информацию, необходимую для принятия решений. Это помогает легко определить причины проблем, прогнозировать возможные узкие места и планировать дальнейшие улучшения и оптимизации системы.
Гибкость и настраиваемость 1С:ЦКК позволяют создавать системы мониторинга, соответствующие конкретным требованиям к производительности экспулатируемых площадок. Администраторы могут настроить мониторинг различных параметров и аспектов системы, учитывая ее уникальные особенности и условия эксплуатации. Такой подход позволяет максимально эффективно контролировать качество и производительность системы.
Своевременный контроль и мониторинг качества работы производственных площадок, которые предоставляет 1С:Центр контроля качества, является неотъемлемой частью успешного управления информационными системами.
Анализ проблем производительности является важной частью процесса управления информационными системами. Выявление и решение проблем, связанных с производительностью, помогает обеспечить оптимальное функционирование системы и повысить удовлетворенность пользователей. Одиним из таких мощных инструментов является 1С:Центр управления производительностью.
1С: Центр управления производительностью (1С: ЦУП) предоставляет разработчикам и администраторам информационных систем возможности для обнаружения и анализа проблем, связанных с производительностью. С помощью этого инструмента можно получить информацию о состоянии системы, нагрузке на процессор, память, дисковую подсистему, сеть и другие ресурсы.
1С: ЦУП предлагает гибкую конфигурацию, которую можно настроить в соответствии с требованиями системы. Этот инструмент предоставляет возможность установить определенные пороги для параметров производительности, такие как использование процессора, память, пропускная способность сети и другие. Когда значения параметров превышают заданные пороги, 1С: ЦУП автоматически генерирует предупреждения или оповещения, чтобы предотвратить возможные проблемы производительности.
Анализ проблем производительности с помощью 1С: ЦУП начинается с сбора данных. Инструмент предоставляет возможность мониторинга и сбора информации о различных аспектах системы, таких как процессор, память, дисковое пространство, сетевая активность и другие. Эксперты могут настроить параметры мониторинга и выбрать интересующие их аспекты для дальнейшего анализа. Полученные данные могут быть визуализированы и проанализированы с помощью специального монитора 1С: ЦУП. 1С:ЦУП содержит множество диаграмм и отчетов, отображающих динамику и показатели производительности системы. С помощью них можно выявить аномалии и проблемные области, которые могут влиять на производительность производственной площадки.
Все выявленные проблемы могут быть автоматически зарегистрированы как ошибки в Система проектирования прикладных решений (СППР). В системе, которая предназначена для проектирования прикладных решений (конфигураций) на платформе 1С:Предприятие и ведения технической документации проекта. СППР может быть использована как в качестве инструмента для проектирования новых информационных систем, разрабатываемых в среде 1С:Предприятия, так и для описания и документирования существующих систем, разработанных ранее без использования СППР.
Гибкость и настраиваемость 1С: ЦУП позволяют адаптировать анализ проблем производительности под требования конкретной эксплутационной площадки. С помощью 1С:ЦУП можно контролировать и анализировать состояние системы, выявлять и устранять проблемы производительности и оптимизировать ее работу. Использование 1С: ЦУП является важной составляющей успешного наблюдения за производственными информационными системами.