Инфраструктура
- Docker-compose на Linux VPS (2+ GB RAM)
- MySQL 8 — данные на сервере клиента
- HTTPS, runbook деплоя
Архитектура
Архитектура без SaaS и vendor lock-in. Платформа разворачивается на VPS заказчика, данные остаются в его инфраструктуре, а стек собран из стандартных технологий, которые сможет поддерживать любая DevOps-команда. Конфигурации VPS и типичные ошибки деплоя — в материале о требования к серверу; юридический контур — в разделе 152-ФЗ и персональные данные.
Инженерные артефакты
На внедрении почти никогда не хватает слов “мы всё настроим”. DevOps хочет runbook, ИБ спрашивает роли и выгрузки, менеджер проекта просит чеклист запуска. Поэтому вместе с инстансом отдаём рабочие артефакты, а не только доступы.
Команды запуска, переменные окружения, настройка HTTPS, порядок обновления и rollback-план.
Проверка публичной формы, QR-регистрации, входа в кабинет, выгрузки и ключевых интеграций.
Кто видит ПД, кто модерирует заявки, кто выгружает базу и кто отвечает за настройки сценария.
Контракты публичных endpoints, webhooks и точки для интеграции с CRM, сайтом или ботом.
Если через полгода заказчик уходит к другому хостеру, проект не должен переезжать “на авось”. Поэтому образ обычный, без привязки к одному облаку. Данные переносятся стандартно, не через экспорт из закрытого SaaS.
Это важно не для красивой формулировки “данные ваши”. Это важно, когда служба ИБ спрашивает, кто реально может зайти в прод и кто увидит выгрузку участников. После деплоя доступ остаётся под вашим контролем.
Node.js, MySQL и Docker выбраны не ради модности, а потому что с ними умеют работать почти любые штатные DevOps и интеграторы. Это уменьшает стоимость поддержки после запуска.
Хостеры РФ: Selectel, Timeweb Cloud, Beget VPS, МТС Cloud, Яндекс Cloud
Поднимем compose на вашем VPS, HTTPS, smoke-test. Нужен только SSH. Сервер остаётся у вас.
Turnkey-внедрение под ключ
Интеграции почти всегда появляются после первого запуска: CRM, бот, внутренняя форма, отчётность. Поэтому есть публичные /api/public/*. Если нужен нестандартный обмен, scope лучше фиксировать отдельно, иначе “маленькая доработка” быстро превращается в отдельный проект.