Для СУБД с интенсивным мелкоблочным вводом-выводом — а это типичный профиль баз 1С и ERP-систем — контейнеризация несёт специфические ограничения, о которых стоит знать до принятия решения. Контейнер без лимита CPU начинает троттлиться при конкуренции за ресурсы, что напрямую бьёт по производительности stateful-нагрузок с интенсивным I/O. Контейнер без лимита памяти рано или поздно получает OOMKilled, что для СУБД означает не просто перезапуск процесса, а риск потери незафиксированных транзакций.
По распространённой в индустрии практике для production-приложений лимит CPU задают в 1,5–2 раза выше запроса, а лимит памяти — в 1,2–1,5 раза выше запроса, чтобы избежать троттлинга и внезапного OOM; точные коэффициенты стоит уточнять нагрузочным тестированием под конкретное приложение, а не брать как жёсткий норматив. Для критичных stateful-нагрузок рекомендуется класс QoS Guaranteed в оркестраторе. Документация Kubernetes определяет его как приоритетный при нехватке ресурсов узла: под с этим классом вытесняется в последнюю очередь, в отличие от классов Burstable и BestEffort. Дополнительная сложность в том, что stateful-нагрузки нельзя свободно перезагружать, удалять или масштабировать в контейнерных группах без сохранения состояния во внешнем хранилище, а storage-драйверы и слои оркестрации добавляют накладные расходы, критичные именно при мелкоблочном I/O баз 1С и ERP.
По совокупности этих ограничений индустриальная практика для СУБД с интенсивным I/O — bare-metal или выделенные виртуальные машины без жёстких лимитов ресурсов, а не контейнеризация в оркестраторе общего назначения. Контейнеризация СУБД оправдана скорее в непроизводственных контурах — разработке, тестировании, staging, — где предсказуемость производительности не критична, а скорость поднятия окружения важнее. Итоговое решение по каждому конкретному контуру 1С или ERP стоит принимать после нагрузочного тестирования на профиле реальных данных заказчика, а не по общей рекомендации.
В наших проектах кластеризации 1С и СУБД для заказчиков такого профиля — например, при построении отказоустойчивого кластера 1С и СУБД для логистической компании с жёстким сроком запуска — мы закладывали bare-metal или выделенные ВМ именно по этой причине: задача была сократить издержки и повысить отказоустойчивость, а не выиграть в скорости поднятия окружения. Для регулируемых отраслей — банков, госструктур, промышленных предприятий с требованиями по 152-ФЗ и импортозамещению — решение по контейнеризации 1С и ERP всегда стоит сверять с актуальным статусом используемого ПО и доступностью отечественных аналогов: уход части зарубежных вендоров с российского рынка уже заставлял нас пересматривать типовые архитектуры под конкретного заказчика.
Итоговое архитектурное решение — как для отдельного контейнера, так и для кластера 1С или ERP — стоит принимать вместе с нагрузочным тестированием и подбором конкретной серверной конфигурации под профиль заказчика; именно с этого наша команда обычно и начинает работу над проектом.