При проектировании облачной инфраструктуры для решений «1С:Предприятие» часто возникает идея использовать полностью управляемую облачную СУБД в формате PaaS (Platform as a Service), такую как Microsoft Azure SQL Database. Подобный подход выглядит привлекательно за счет отсутствия необходимости администрировать операционную систему сервера СУБД, автоматического резервного копирования и масштабируемости ресурсов. Однако на практике подключение сервера 1С к изолированной облачной базе сталкивается с непреодолимыми техническими ограничениями. Разберем детально, почему изолированная база данных Azure SQL не подходит для кластера 1С и какие существуют проверенные варианты развертывания.
Проанализируем архитектуру взаимодействия платформы «1С:Предприятие» и Microsoft SQL Server. Сервер приложений 1С рассчитывает на полный контроль над экземпляром СУБД, а не только на доступ к отдельной изолированной схеме данных. Выделим ключевые препятствия:
master, системным таблицам и процедурам. Платформа выполняет команды переключения контекста вида USE [имя_базы] и управляет временной базой tempdb на уровне сервера. В изолированной Azure SQL Database доступ к уровню экземпляра заблокирован архитектурно, что приводит к фатальным ошибкам при первой же попытке инициализации информационной базы 1С.Collation), прав мгновенной инициализации файлов данных (Instant File Initialization), блокировки страниц в оперативной памяти (Lock Pages in Memory) и разделения очередей дисковой подсистемы под tempdb, .mdf и .ldf. В рамках модели PaaS данные параметры скрыты от пользователя.Выясним причину, по которой даже теоретическое подключение к удаленной облачной СУБД через интернет оказывается неэффективным. Архитектура «1С:Предприятия» является так называемой «болтливой» (chatty):
Рассмотрим проверенные на практике варианты построения облачной инфраструктуры 1С:
Это классический, официально поддерживаемый и рекомендуемый вариант. В облаке создаются виртуальные машины:
На первой виртуальной машине разворачивается сервер приложений 1С, на второй — полноценный Microsoft SQL Server (или PostgreSQL). Обе виртуальные машины обязательно размещаются в единой виртуальной сети и одной группе близкого размещения с минимальными задержками (Proximity Placement Group), что обеспечивает необходимый пинг менее 1 мс.
Управляемый экземпляр (Managed Instance) обеспечивает практически стопроцентную совместимость с локальным SQL Server на уровне экземпляра (поддерживает master, tempdb, агент SQL и переключение контекста). Однако данный вариант не сертифицирован фирмой «1С» как стандартная среда, а стоимость аренды Managed Instance обычно значительно превышает аренду классической виртуальной машины с установленным SQL Server.
Для сокращения расходов на лицензирование СУБД в облачной среде целесообразно разворачивать виртуальные машины на Linux с установленной специализированной сборкой PostgreSQL, адаптированной для работы с платформой 1С.
Таким образом, использование бессерверной или изолированной базы данных Azure SQL PaaS для 1С технически невозможно. Для успешного переноса 1С в облако следует ориентироваться на модель виртуальных машин (IaaS) с классической установкой СУБД.