It's amazing how much engineering time is spent on arguing about the difference in abstraction strategies, followed by someone saying "just copy the files up, but make sure not to touch the config". This is a recipe for disaster. There are three common failure scenarios: Someone takes a copy of the live system, runs some tests and accidentally enters the test data into the live system. I once saw that happen with a stress test. It wasn't funny. (In fairness, it's pretty funny in retrospect.) Someone uploads a debug environment, rendering the live system unstable. (This is mostly...