Перейти к содержанию
Innovialabs

Окружения dev, staging и production: зачем нужно каждое

Основы3 мин

Коротко

Dev — для разработки, staging — для проверки релиза в условиях, близких к боевым, production — для реальных пользователей. Разделение окружений ловит ошибки до клиентов, а одинаковая конфигурация и отсутствие реальных персональных данных на staging делают его полезным.

Коротко: зачем три окружения

Окружение — это отдельная копия приложения со своим сервером, базой, настройками и доменом.

  • Dev (development) — место, где разработчики пишут и пробуют код. Может ломаться в любой момент.
  • Staging — «генеральная репетиция». Здесь проверяют готовый релиз в условиях, максимально похожих на боевые.
  • Production — рабочая система, с которой взаимодействуют реальные пользователи и деньги.

Смысл разделения простой: ошибка должна найтись до того, как её увидит клиент.

Чем отличаются окружения

DevStagingProduction
Кто пользуетсяРазработчикиQA, менеджеры, заказчикКлиенты
СтабильностьНизкаяВысокая на время проверкиМаксимальная
ДанныеТестовые, сидыТестовые или обезличенныеРеальные
ДеплойЧасто, из рабочих ветокКандидат в релизПроверенный релиз
Внешние сервисыПесочницы, заглушкиПесочницы платёжек и APIБоевые ключи

Как держать окружения одинаковыми

Staging полезен, только если он действительно похож на production. Иначе «на стейдже работало» ничего не значит.

  • Один и тот же артефакт. Собирайте Docker-образ один раз и продвигайте его по окружениям, а не пересобирайте под каждое.
  • Инфраструктура как код. Описывайте серверы и сервисы в Docker Compose, Terraform или манифестах Kubernetes, чтобы окружения создавались одинаково.
  • Разница — только в конфигурации. Адреса, ключи и флаги выносите в переменные окружения:
# .env.staging
APP_ENV=staging
DATABASE_URL=postgres://app@staging-db:5432/app
PAYMENT_MODE=sandbox
  • Те же версии. База данных, runtime и ключевые сервисы на staging и production должны совпадать.
  • Миграции через тот же пайплайн. Если миграция прошла на staging, она пройдёт и на production — при условии похожего объёма и структуры данных.

Данные на staging

Копировать боевую базу на staging «как есть» — частая и опасная ошибка: персональные данные клиентов оказываются в менее защищённом месте.

Варианты:

  • Сиды и фикстуры — сгенерированные тестовые данные, достаточно для большинства проверок.
  • Обезличенная копия — production-база, в которой имена, телефоны, email и платёжные данные заменены или удалены.
  • Синтетические данные в нужном объёме — для проверки производительности.

Отдельно проследите, чтобы staging не отправлял реальные письма и SMS и не проводил настоящие платежи — используйте sandbox-режимы сервисов.

Минимальная схема для небольшой команды

  1. Локальная разработка у каждого разработчика через Docker Compose вместо общего dev-сервера.
  2. Один staging-сервер, куда автоматически деплоится основная ветка после прохождения тестов.
  3. Production, куда тот же образ уходит после проверки на staging — вручную по кнопке или по тегу релиза.
  4. Закройте staging от поисковиков и посторонних: базовая авторизация или доступ по VPN.

Этого достаточно, чтобы ловить большинство ошибок, не раздувая инфраструктуру.

Частые ошибки

  • Staging годами отстаёт от production по версиям и настройкам.
  • Секреты и ключи общие для всех окружений.
  • Хотфиксы правятся прямо на production-сервере в обход пайплайна.
  • Staging проиндексирован поисковиками и создаёт дубли страниц.

Частые вопросы

На очень маленьком проекте — да, при хорошем покрытии тестами и быстром откате. Но если есть платежи, интеграции или заказчик, который принимает работу, staging быстро окупается.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.