Администрирование и выпуск: публикация, кластеры, фоновые задания и мониторинг
Связь с предыдущими темами курса
До этой статьи курс был сфокусирован на создании функциональности
внутри конфигурации: модель данных, проведение, запросы/СКД, интеграции, безопасность, производительность, командная разработка и качество.
Эта тема добавляет эксплуатационный слой промышленной разработки: как сделать так, чтобы ваше решение:
стабильно работало в многопользовательской среде;
корректно публиковалось для пользователей (тонкий клиент и веб);
выдерживало регламентные операции и фоновые обработки;
было наблюдаемым (можно понять, что происходит, и почему “тормозит”);
выпускалось в релизы предсказуемо и с минимальным риском.Полезные точки входа в официальные материалы по технологии платформы:
Платформа 1С:Предприятие 8
Технологии платформы 1С:Предприятие!Общее представление, какие компоненты участвуют в публикации, выполнении фоновых задач и наблюдаемости
Контуры среды: dev, test, prod как основа администрирования
В промышленной разработке важно не только
что вы сделали, но и
где это работает.
Типовой набор контуров:
Dev: разработка и быстрые проверки.
Test: регрессия, проверка прав, производительности, интеграций.
Prod: рабочая среда.Ключевая мысль для разработчика: часть проблем видна только на “похожей на прод” инфраструктуре.
поведение фоновых заданий и регламентных операций в файловой базе и в кластере отличается;
производительность запросов и влияние RLS в одиночной базе и при нагрузке отличаются;
интеграции (HTTP/обмены) в “локалке” часто работают иначе, чем через реальный контур сети и прокси.Публикация: как пользователи подключаются к вашей системе
Публикация в 1С обычно означает организацию доступа пользователей к информационной базе.
Основные варианты доступа
| Вариант | Как подключаются пользователи | Типичная область применения | Главный риск/ограничение |
|---|---|---|---|
| Файловая база | напрямую к каталогу базы | обучение, малые установки | слабая масштабируемость, риски при многопользовательской работе |
| Клиент-сервер | тонкий клиент → сервер 1С → СУБД | промышленная эксплуатация | требуется настройка сервера 1С и СУБД |
| Веб-клиент | браузер → веб-сервер → сервер 1С → СУБД | удаленный доступ, “ничего не ставить” | ограничения веб-клиента, требования к публикации на веб-сервере |
Практический вывод: промышленная эксплуатация почти всегда опирается на клиент-сервер и, часто, на веб-публикацию.
Публикация веб-клиента и HTTP-сервисов: что важно понимать
Веб-доступ и входящие HTTP-интеграции обычно требуют веб-сервера.
На практике чаще встречаются:
Microsoft IIS
Apache HTTP ServerЧто важно как разработчику (не углубляясь в системное администрирование):
веб-клиент и HTTP-сервисы живут в “веб-контуре”, и ошибки там часто связаны не с вашим кодом, а с маршрутизацией, сертификатами, правами, заголовками и ограничениями окружения;
код должен учитывать отличие окружения: то, что работает в тонком клиенте, может требовать другого подхода в веб-клиенте;
безопасность интеграции (аутентификация, авторизация, валидация входных данных) остается серверной задачей конфигурации, даже если “внешний периметр” прикрыт веб-сервером.Публикация и безопасность: зона ответственности разработчика
Публикация сама по себе не делает систему безопасной.
Минимальные правила, которые должен удерживать разработчик:
не полагаться на скрытие кнопок: серверные проверки обязаны быть в модулях объектов и серверных сервисах;
разделять пользователей и роли: отдельные роли для интеграций, ограниченные права и RLS там, где требуется;
логировать критичные операции: хотя бы на уровне журнала регистрации и прикладного аудита для важных действий.Кластер серверов 1С: зачем он нужен и как он устроен
Кластер серверов 1С нужен, чтобы обеспечить многопользовательскую работу, распределение нагрузки и управляемость.
Термины кластера, которые нужно знать разработчику
| Термин | Смысл | Почему важно разработчику |
|---|---|---|
| Кластер | логическая группа серверов 1С | влияет на масштабирование и отказоустойчивость |
| Рабочий процесс | процесс, в котором выполняется серверный код и обслуживаются сессии | тяжелые операции и утечки памяти проявляются здесь |
| Сессия | подключение пользователя/интеграции | влияет на нагрузку, блокировки, конкуренцию |
| Фоновые задания | выполнение кода без UI, обычно по расписанию или очереди | нужно писать код так, чтобы он был устойчивым и наблюдаемым |
Что меняется в логике разработки, когда появляется кластер
В кластерной среде “неочевидные” вещи становятся критичными.
любой лишний клиент-серверный вызов масштабируется на число пользователей;
запрос “в цикле” превращается в массовую нагрузку на СУБД;
неконтролируемые исключения в фоне приводят к лавине ошибок и повторов;
кэширование “на модульных переменных” может стать источником нестабильности, если вы не понимаете жизненный цикл процессов.Балансировка и отказоустойчивость: практическая картина
Кластер обычно стремится:
распределять сессии между рабочими процессами;
выдерживать перезапуск отдельных процессов без падения всей системы;
выполнять фоновые задания на серверной стороне.Для разработчика главный вывод такой: ваш код должен быть безопасен к повторным запускам и конкуренции.
если операция может быть выполнена дважды, вы должны либо сделать ее идемпотентной, либо вести учет выполненных операций;
если два фоновых задания могут работать параллельно, нужен контроль конкурентного доступа (например, через блокировки на уровне данных и аккуратные транзакции).!Упрощенная модель кластера, чтобы понимать, где реально исполняется ваш код
Фоновые задания и регламентные операции: как делать правильно
Фоновые задачи в 1С нужны для всего, что не должно выполняться в UI-сценарии:
обмены и интеграции по расписанию;
загрузки данных;
пересчеты итогов, подготовка витрин;
рассылки уведомлений;
длительные обработки.Чем фоновое выполнение отличается от “нажали кнопку на форме”
Ключевые отличия:
нет пользователя, который “дождется” или “поймет ошибку”;
выполнение может быть прервано перезапуском процесса или узла;
типичны повторы и необходимость возобновления;
критичны журналирование, устойчивость и ограничение ресурсов.Правила промышленного фонового кода
Только сервер
- фоновый код должен быть серверным и не зависеть от формы;
- предпочтительно
&НаСервереБезКонтекста для сервисной логики.
Идемпотентность
- повторный запуск не должен приводить к дублям документов, повторному списанию или “разъезду учета”;
- если внешняя система прислала повтор, это должно обрабатываться как “уже сделано”.
Наблюдаемость
- фиксируйте старт, параметры, итог, ошибки;
- используйте понятные сообщения, чтобы поддержка могла понять причину без чтения кода.
Пакетность вместо циклов запросов
- собирайте ключи и делайте один запрос;
- избегайте “для каждой строки отдельный запрос”.
Ограничение времени и объема
- большие операции делите на порции;
- храните прогресс (например, “последний обработанный идентификатор/период”).
Типовая архитектура фоновой операции
Удобная схема, которая хорошо сочетается с темами про интеграции, производительность и качество:
общий модуль СервисФона &НаСервереБезКонтекста:
- получить порцию задач;
- обработать порцию;
- зафиксировать статус;
регистр сведений ЖурналФоновыхОпераций:
- идентификатор операции;
- статус;
- время начала/окончания;
- текст ошибки;
UI-форма (опционально):
- показать состояние и историю;
- запустить вручную.
Важная дисциплина: фоновые операции не должны “прятать” бизнес-логику. Если фоновая задача создает документы, эти документы должны проходить те же проверки записи и проведения.
Мониторинг: как понимать, что происходит в системе
Мониторинг в 1С нужен, чтобы отвечать на практические вопросы:
почему “тормозит” открытие формы или проведение;
что сейчас нагружает сервер;
почему не отработали фоновые задания;
почему интеграция дает ошибки;
где искать причину инцидента.Слои мониторинга: от приложения до СУБД
| Слой | Что наблюдаем | Типовые симптомы проблем |
|---|---|---|
| Клиент | время реакции UI, частые действия, ошибки на форме | “подвисает при вводе”, “долго открывается список” |
| Сервер 1С | выполнение процедур, проведение, фоновые задания, сессии | “проведение стало в 5 раз дольше”, “очередь фоновых растет” |
| СУБД | планы и стоимость запросов, блокировки, нагрузка | “запросы стали тяжелыми”, “блокировки”, “рост времени ответа” |
| Инфраструктура | сеть, CPU/RAM, диск, веб-сервер | “все медленно”, “ошибки таймаута”, “падает веб” |
Для разработчика главная мысль: диагностика почти всегда начинается с вопроса в каком слое проблема.
Журналирование: что важно фиксировать на уровне приложения
Даже если в компании настроены системные журналы, разработчик должен обеспечить минимальную наблюдаемость на уровне прикладной логики.
Что особенно важно логировать:
ошибки проведения и отказ в проведении с контекстом (какой документ, какая номенклатура, какое ограничение);
ошибки интеграций и входящих HTTP-вызовов (идентификатор запроса, статус, причина);
результаты фоновых задач (сколько обработано, за сколько времени, какие ошибки).Практический принцип: лог должен отвечать на вопрос что делать дальше, а не только “произошла ошибка”.
Метрики производительности, которые полезны разработчику
Не обязательно сразу строить сложный APM, но полезно договориться о базовых измерениях:
среднее/максимальное время проведения ключевых документов;
время формирования ключевых отчетов;
количество ошибок интеграции в сутки;
размер очередей фоновых заданий;
наличие длительных блокировок в СУБД.Смысл этих метрик напрямую связан с темами курса про производительность и качество: вы не “угадываете”, а видите деградацию по цифрам.
!Карта, откуда брать данные для расследования проблем
Выпуск изменений: как разработка превращается в релиз
Выпуск в 1С — это не только “залить конфигурацию”. Это управляемая последовательность действий, где важны безопасность, повторяемость и возможность отката.
Из чего состоит поставка
В зависимости от проекта в релиз могут входить:
изменения конфигурации или расширения;
обновление конфигурации базы данных;
миграции данных (обработки заполнения, переносы, пересчеты);
изменения прав/ролей;
изменения интеграций и настроек публикации;
обновление платформы (отдельный контур, но влияющий на поведение).Почему релиз опасно делать “вручную по памяти”
Типовые риски:
забыли применить изменение структуры и “на проде не появилось поле”;
обновили расширение, но не проверили права и команды стали недоступны;
выпустили изменение, которое ломает фоновую задачу, и очередь начала расти;
не проверили под ролью с RLS, и отчет стал работать медленно.Поэтому промышленный подход всегда опирается на регламент и чеклисты.
Минимальный промышленный регламент релиза
Подготовка
- фиксация состава изменений;
- проверка, что изменения в Git/хранилище соответствуют задаче;
- наличие инструкции по обновлению (что, где, в каком порядке).
Прогон в тестовом контуре
- автоматические проверки (статический анализ, тесты);
- регресс ключевых сценариев: проведение, отчеты, печать, интеграции;
- проверка прав и RLS на реальных ролях.
Резервное копирование
- до обновления в рабочем контуре должна быть понятная точка возврата.
Выпуск
- обновление конфигурации/расширения;
- применение изменений к базе данных;
- запуск обработок заполнения и регламентных операций, если требуется.
Постконтроль
- проверка критичных метрик и журналов ошибок;
- контроль фоновых заданий;
- контроль интеграций.
!Упрощенный пайплайн выпуска изменений в промышленной 1С
Практические ошибки на стыке разработки и администрирования
Ниже список ошибок, которые чаще всего “вылезают” уже после публикации, и как их предотвращать архитектурно.
Бизнес-логика в форме
Последствия:
интеграция или фоновая обработка обходит правила;
в веб-клиенте часть поведения отличается;
при нагрузке растет число клиент-серверных вызовов.Профилактика:
серверные сервисы &НаСервереБезКонтекста;
проверки в модуле объекта и проведении.Запросы в цикле и мелкие серверные вызовы
Последствия:
на объеме данных и количестве пользователей система деградирует;
“в тесте работало, в проде тормозит”.Профилактика:
пакетные запросы;
один серверный метод на операцию;
измерение времени и профилирование сценариев.Фоновая операция без контроля повтора
Последствия:
дубли документов;
повторные списания;
рассинхронизация интеграций.Профилактика:
идентификаторы операций;
журнал обработки;
идемпотентность.Отсутствие наблюдаемости
Последствия:
инциденты “не расследуются”, их только “перезапускают”;
регресс производительности замечают слишком поздно.Профилактика:
прикладное журналирование;
понятные сообщения об ошибках;
базовые метрики и контроль после релиза.Итоги
Администрирование и выпуск в 1С — это продолжение разработки, а не отдельная “чужая область”. Промышленный разработчик должен уметь проектировать решение так, чтобы оно:
корректно публиковалось и работало в клиент-серверной среде;
было устойчивым в кластере и под нагрузкой;
выполняло фоновые задачи предсказуемо и безопасно;
было наблюдаемым через логи и метрики;
выпускалось в релизы по повторяемому регламенту.Это замыкает курс в промышленную картину: архитектура и код → эксплуатация и выпуск → контроль качества и стабильности.