In software, a staging environment is used to test out newer versions of software before it is moved live – into production.
Think of the staging environment as the environment used after development but before production. A staging environment is meant to have everything as closely replicated to the production environment as possible so that you can maximize your chances of finding any bugs before you release the software in production. Even the hardware that is used for the staging environment is often the same as the hardware used in the production environment – this is a good practice when possible.
Well, let’s consider a real-world example from my own experience of when a staging environment would be necessary. I was once in charge of the development of an order entry system that was to be used by a call center. So the call center people would take orders on the phone and input them into this software system. We had a development environment set up for our developers to work on – so that they could add features to the order entry system as they were requested. So, the development environment was constantly changing as the developers added new features, and was certainly not stable since some features were only half finished at a given time.
But, it became clear that we needed an environment where we could have some people in the call center test out new features in the order entry system before we released them to production. Clearly, the development environment was not a good choice because that was constantly changing, and we didn’t want to interfere with development just so people could test. So, it was clear that we needed a new environment – a staging environment – where we could have a few of the call center people test out the order entry system every time we added some new, major features before we actually pushed those changes to the production site for everyone. This was sort of a soft launch of the order entry system.
Once the changes in the staging environment were approved, then they were pushed to the production system and made live for everyone to use and see. So, hopefully it’s clear to you now when and why a staging environment is necessary.
It should be clear to you now that the difference between staging and production is that a staging environment is used to mimic production as closely as possible for the purposes of testing.
A staging server is simply the server which you would use in your staging environment. So, for a staging site, the staging server would simply be the server on which that site is hosted.
To keep your staging environment as close to the production environment as possible, you will probably want to take a snapshot of the production database and create a clone that you can use in your staging environment. That is known as the staging database.