Какие типы стендов (окружений) обычно используются в проектах разработки?

Ответ

В типичном проекте используются следующие среды (стенды), выстроенные в pipeline доставки:

Основные среды:

  1. Development (Dev) — среда для активной разработки. Разработчики разворачивают и тестируют новые фичи и исправления. Часто нестабильна.
  2. Quality Assurance (QA) — выделенная среда для тестировщиков. Содержит стабильную сборку для проведения функционального, интеграционного и регрессионного тестирования.
  3. Staging / Pre-production — среда, максимально приближенная к Production (конфигурация, данные, инфраструктура). Используется для:
    • Финального приемочного тестирования (UAT).
    • Проверки миграций и развертывания.
    • Performance-тестирования на реалистичных данных.
  4. Production (Prod) — боевая среда для реальных пользователей.

Вспомогательные среды:

  • Preview / Feature Branch — временные среды для проверки конкретных pull request'ов или веток.
  • Hotfix — изолированная среда для срочной разработки и проверки критических исправлений.

Пример конфигурации в CI/CD (GitLab CI):

stages:
  - build
  - test
  - deploy

deploy:dev:
  stage: deploy
  environment: dev
  script: ./deploy.sh dev

deploy:qa:
  stage: deploy
  environment: qa
  script: ./deploy.sh qa
  only:
    - main

Почему такая структура? Она обеспечивает изоляцию изменений, снижает риски при выпуске в Prod и дает возможность тестировать на разных этапах.

Ответ 18+ 🔞

А, ну это классика, блядь! Сейчас разжуем, как для дебила, про эти ваши стенды-контенды. Сиди, слушай, а то щас накосячишь на продекшене, и тебе пизда, а не премия.

Смотри, обычно вся эта хуйня выстроена как конвейер, чтоб твой кривой код не долетел до живых юзеров и не устроил там пиздец. Этажей несколько.

Основные, так сказать, "этажи ада":

  1. Development (Dev) — это типа подвал, где кодят наши ушлёпки-разработчиги. Тут всё горит, падает, дымится и перезапускается по десять раз на дню. Среда нестабильнее психики твоего тимлида перед дедлайном. Сюда можно выливать любую дичь, лишь бы собралось.

  2. Quality Assurance (QA) — вот это уже первый надземный этаж. Сюда заходит относительно стабильная сборка, и её начинают долбить тестировщики. Всё щупают, ломают, орут "ба-а-а-г!" и открывают таски. Цель — выловить всю хуйню, пока она не ушла дальше.

  3. Staging / Pre-production — а это, сука, уже почти святая святых, полная репка прода. Сюда выкатывают то, что вроде бы уже не должно разъебаться. Конфиги как на боевой, данные почти настоящие (или хотя бы похожие). Тут делают последние проверки, гоняют нагрузку и смотрят, не отвалится ли всё, если нажать не ту кнопку. Если тут всё ок — можно, затаив дыхание в жопе, думать о продекшене.

  4. Production (Prod) — ну, тут и ежу понятно. Боевая зона. Реальные юзеры, реальные бабки, реальные пиздецы, если накосячить. Сюда пускают только проверенное и благословлённое. Страшно? Ебать как страшно.

А ещё есть, типа, подсобки:

  • Preview / Feature Branch — это временные будки, которые строят на один раз, чтобы глянуть, как выглядит конкретная фича из пул-реквеста. Посмотрели — снесли. Как одноразовый стаканчик.
  • Hotfix — карантинный изолятор для срочного лечения критической дыры, которая уже течёт на проде. Тут всё быстро и без лишних движений, по-тихому, чтоб никто не заметил, какой пиздец мы чуть не устроили.

Ну и как это в конфигах выглядит? Да вот примерно так, смотри:

stages:
  - build
  - test
  - deploy

deploy:dev:
  stage: deploy
  environment: dev
  script: ./deploy.sh dev

deploy:qa:
  stage: deploy
  environment: qa
  script: ./deploy.sh qa
  only:
    - main

Видишь? На dev выкатывается чуть ли не от каждого чиха, а на qa — только когда влили в main, то есть что-то более-менее осмысленное.

А нахуя эта вся сложность? Да чтобы, блядь, не обосраться публично! Чтобы изолировать друг от друга сырой код, тесты и живую систему. Чтобы можно было спокойно всё проверить, а не тыкать пальцем в небо и надеяться на "авось пронесёт". Не пронесёт, поверь. Так что учи матчасть, и да пребудет с тобой стабильный деплой!