Pre-prod (pre-production, предпродуктивная среда) — последняя среда в цепочке развёртывания перед production. Конфигурационно максимально идентична production: те же серверные мощности, та же версия ОС, те же зависимости. Главное отличие pre-prod от staging — наличие данных, приближённых к реальным (полный дамп БД или его анонимизированная копия).
Как работает
Стандартная цепочка сред в современной разработке:
- Development (dev) — локальная среда разработчика или общий dev-сервер. Данные фиктивные.
- Testing / QA — среда для ручного и автоматического тестирования. Данные тестовые.
- Staging — зеркало production для функционального тестирования. Данные могут быть обрезанными.
- Pre-prod — финальная проверка перед релизом. Данные — полная или анонимизированная копия production.
- Production — рабочая среда, с которой работают пользователи.
В pre-prod проводятся:
- Smoke tests — минимальные проверки ключевых функций после деплоя.
- Regression tests — проверка, что новая версия не сломала существующую функциональность.
- Load / performance tests — нагрузочное тестирование на production-подобных объёмах данных.
- UAT (User Acceptance Testing) — финальное одобрение заказчиком или product owner.
В рамках CI/CD деплой в pre-prod автоматически запускается после успешного прохождения staging. После успешного pre-prod деплой в production может требовать ручного approve от DevLead или QA-руководителя.
История
Разграничение сред разработки формализовалось в 1990-е вместе с методологиями разработки ПО. Четырёхуровневая цепочка dev-test-staging-production стала стандартом в enterprise-разработке 2000-х. Pre-prod выделился как отдельная среда по мере усложнения систем: нагрузочное тестирование на реальных объёмах данных невозможно на обрезанных staging-данных. В 2010-е облачные платформы (AWS, Azure) сделали клонирование prod-окружений дешёвым — pre-prod стал стандартной практикой для команд любого размера.
Отличия от похожих понятий
Pre-prod vs staging: staging фокусируется на функциональном тестировании, pre-prod — на финальной валидации перед выпуском с production-объёмами данных. Границы размытые: многие команды используют слова staging и pre-prod как синонимы. Pre-prod vs production: pre-prod никогда не принимает реальных пользователей, защищён авторизацией и не индексируется поисковиками (через заголовок X-Robots-Tag: noindex или htaccess).
На что обращать внимание
Синхронизация данных с production — главная сложность pre-prod. Прямое копирование production-БД нарушает GDPR/152-ФЗ (персональные данные). Стратегии: анонимизация данных (замена реальных email, телефонов фиктивными), создание synthetic datasets, использование production-снапшота с удалением PII. Расхождение конфигурации между pre-prod и production — частая причина багов, которые проявляются только в production: вести идентичные конфиги через Ansible или Terraform.
Pre-prod на VPS
Pre-prod среда на VPS: отдельный сервер с идентичной конфигурацией production (Ansible playbook), но с анонимизированной копией БД. CI/CD: деплой на staging автоматически → ручной approve → деплой на production. Terraform позволяет поднять идентичные окружения воспроизводимо. Стоимость pre-prod: минимальный VPS ($5-10/мес) достаточен — pre-prod не несёт production-нагрузку. Доступ к staging: ограничьте IP-whitelist или basic auth в .htaccess.