The staging environment is a copy of your production environment (your current live website) on a private server. This is a safe place that will allow you to test any changes - major or minor - that you plan on implementing in a secure environment, preventing any unexpected errors on your live website.
A staging environment is a part of a workflow in most development projects and the deployment process. It is a place where you can find a preview of work that was done by developers to review and, once satisfied, approve to be moved to production for the public to see.
An ideal workflow consists of the following three environments:
- Development (local environment)
- Staging (pre-production)
- Production (live site)
When starting a new project (or feature) you should begin your work on a development environment. This local site will look and act like the live site, commonly referred to as a sandbox, and it is only visible to you. You can create, tweak, and code as much and however you like, until you feel the product is a good representation of what you envisioned. Using version control to make your code changes (such as git), is an important practice that allows for collaboration, storing versions, and restoring previous versions among other benefits. Once you’re satisfied, and ready for the client to see and test it, you move the code to staging.
What is Staging
This the bridge between development and production. It should be the most accurate representation of the live site, and where QA and testing is most important. Here the stakeholders can safely view and test without fear of accidentally breaking the production environment. You should consider the staging environment a release candidate:
Once you are happy with presentation, performance and functionality, you will release it to the public.
Knowing you’ve kept staging up-to-date with the master site, you can now push your code to production with confidence. The final product is up ready for public view.
A Baking Analogy for Understanding Staging
Sometimes I think of staging like a baking analogy (because, well, I love a good cookie!) You have a special cookie recipe you’ve been using for awhile now, and you sell batches of these cookies out of a variety of local stores. They are pretty popular, and you have a good amount of regular customers who look forward to getting your cookies. If you decide to make a change, have an idea of how to enhance this recipe, you wouldn’t do that, bake them and deliver them all to the stores without even trying a taste. And actually, it would probably be a good idea to have a few people taste test them as well, comparing the old and new recipes. Using a staging environment allows you to play with as many recipes as you like without anyone seeing it until you are satisfied with the final product.
What do you think? Was this helpful? Do you have a better way? Let us know what you think.