Чем должны отличаться stage и prod среды?
Обычно test и prod не должны отличаться хардварно/софтварно, за исключением мощности.
В богатой фирме железо/софт вообще идентичны. Если не требуется идеальное совпадение, в тесте можно иметь меньше винтов, ибо боевая база не нужна.
Задача - на тесте полностью скопировать окружение prod, и в случае проблем, суметь воспроизвести это на нем.
Dev должен более-менее совпадать, в основном версии софта, но это зависит от того, что там происходит.
Опять же, сильно зависит от задачи. Если это боевой сервер, было бы например неплохо на test проверить как работают новые прошивки биоса/рейд контроллера, перед тем как повторять это на боевом.
Если же это только небольшой сайт, то вполне достаточно будет воспроизвести версию ОС и ПО. В общем смотря что крутится.
Ни в коем случае тесты нельзя запускать на реальных данных! Если что-то пойдет не так, вы испортите рабочие данные.
Лучше скопируте рабочую базу (если это позволяет размер), замените всякие адреса и телефоны на фейковые, чтобы в случае чего пользователю ничего не отправиось. И используйте ее для тестов.
Если в обще, то стейдж отличается от продакшена:
- включеным дебаг режимом и профилировщиком
- уровнем логирования
- каще всего еще и кеш отключен
- не минифицируются asset файлы для упрощения дебага
- другая база данных
Не знаю, как все, но в нашей команде стейджи с продакшеном находяться на разных машинах. Тесты создают довольно большую нагрузку, которая совершенно не нужна продакшену.
Так же мы на стейдже используем SSD вместо HDD. Для обычной работы приложения обычного диска хватает, а вот на стейдже билды собираються в несколько раз быстрее благодаря ssd.