После перехода в мир IT и активной работы там мне стали чаще попадаться термины, которые поначалу казались непонятными. Коллеги вокруг привыкли излагать мысли привычными им словами, потому иногда в меня бросали следующими фразами «Зайди на прод» или «Нужно задеплоить стейдж». Теперь такие слова мне не кажутся чем-то непонятным, так как пришло некоторое понимание. Хочу поделиться им с новичками и всеми желающими, кто тоже слышал все эти проды, девы и стейджы, но не понимал о чем речь.
Мое объяснение не претендует на точное соответствие имеющейся теории разработке ПО, я пытаюсь объяснить так, как понимаю и как мне кажется, будет понятнее другим.
Среды разработки
Любой процесс производства чего-либо состоит из определенных этапов. В разработке программного обеспечения (туда же отнесем и сервисы) тоже существуют свои этапы, которые нужно соблюдать, чтобы достичь поставленных целей. Такими этапами являются:
- разработка
- сборка
- тестирование
- доставка конечному пользователю
DEV-среда
Место, где осуществляется разработка чего-либо. Там всегда самая свежая версия кода и продукта. Все новые идеи реализуются в первую очередь там и из разряда «давайте-ка сделаем…» переходят в конкретные строки кода.
DEMO-среда
Здесь хранится промежуточный результат, который можно «потрогать руками» и посмотреть так ли все работает, как должно. Если имеется заказчик, то он «трогает» и высказывает свое мнение насчет изменений. В это время на dev-сервере может уже по сто раз все изменится и поломаться.
TEST-среда
Продукт проверяется на стабильность путем моделирования нештатных ситуаций или использования нестандартных данных. По сути, это испытательный полигон, на котором можно делать все, вплоть до полного уничтожения всего и вся (на самом деле, нет).
STAGE-среда
Ее еще называют предпродакшн. Здесь используются данные из последнего бэкапа системы на prod-сервере, чтобы максимально проверить работоспособность и стабильность приложения или сервиса. Эта среда максимально приближена к тому, что видят перед собой конечные пользователи.
PROD-среда
Продакшн, если раскрыть слово prod. Это то с чем взаимодействуют пользователи. Если вы заходите на сайт, в приложение или игру, то взаимодействуете с тем, что опубликовано на prod-сервере. В этот же момент новый функционал во всю может разрабатываться и тестироваться на предыдущих средах.
Простой пример
Допустим вы разработчик многопользовательской игры. Если подходить к этому правильно, то у вас должен быть сервер, где все непосредственно разрабатывается (dev), сервер, куда имеют доступ тестировщики (demo), сервер, где игра проходит проверки на случай непредвиденных обстоятельств (test), сервер, куда вы пускаете некое количество живых игроков, чтобы они проверили обновление игры перед окончательным выходом (stage), сервер, куда, в случае успеха, выйдет обновление проекта (prod).
Например, в War Thunder или DayZ есть возможность тестировать обновления до их официального выхода. Таких игроков разработчики предупреждают о возможных ошибках и просят давать фидбэк, если такие возникнут.
Надеюсь, что у меня получилось объяснить главное и сделать это максимально просто. Если среди подписчиков или читателей есть опытные разработчики, то можете подправить или дополнить текст поста в комментариях. Ну и напоследок традиционный призыв к лайкам, комментированию и подпискам!