For anyone that’s been doing software development for any reasonable length of time – especially for web applications – then you’re likely familiar with Local (or Development), Staging (or Test), and the Production environments.
If not:
- Local or Development refers to the machine on which you’re actually building the product.
- Staging or Test refers to the server designed to represent Production, though is only accessible by developers, testers, clients, and perhaps some of the end users to evaluate features prior to the official rollout.
- Production is the live version of the site. No development occurs on this server.
Most developers who are in the business or closely working with their client follow this particular setup.
In the past couple of months, there have been a few times when a single production rollout has fallen short and ended up either revealing bugs that were not caught in Staging or that did not hold up under Production-level loads.
As frustrating as that can be, I’ve ended up using a sort of two-phase Production deployment plan to help mitigate this.