Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a canonical definition of the staging environment?

Tags:

It is my understanding that the (legitimate) purpose for a staging server is for testing the deployment process, rather than your code's acceptance or function. However, I almost never find people who share this understanding, with the most common alternative being that a staging server is synonymous with a UAT server. Googling for an answer, I've found staging servers defined as

  • UAT servers
  • QA servers
  • integration servers
  • content servers

Quite possibly the worst definition I've found is on Wikipedia, which I'll quote here due to the ephemeral nature of content there, and the fact that someone reading this question might go fix Wikipedia and make any link I give to it become a counter-example instead of an example of what I'm talking about:

Staging site, in website design, is a website used to assemble, test and review its newer versions before it is moved into production. This phase follows the development phase. The staging phase of the software life-cycle is often tested on hardware that mirrors hardware used in the production environment. The staging site is often different from the development site, and provides a QA zone that is separate from the development or production environments.

Normally before deploying an updated version of software to the production environment, the update has been tested in the staging environment. The staging server will resemble the production environment where the clients can do the user acceptance testing activities. Tests on Staging server/site should be passed before deployment of system on live server, i.e. production environment.

In fact, the only examples of (what I understand to be) the correct use of the term are on StackOverflow. For example, the main answers to this question, and this answer.

I'd like to demonstrate to my co-workers that (among those in the know) staging is different from UAT and QA etc. Is there some canonical definition, such as in a book where the term was first defined? Obviously all these secondary sources I've found seem to be a reflection of common usage, but I think that common usage is mostly shaped by people who are more interested in throwing around buzzwords than in making careful distinctions and using words precisely.

like image 681
iconoclast Avatar asked Oct 29 '12 18:10

iconoclast


1 Answers

The book on continuous delivery has become a de facto canonical text on the topic. It is in agreement with your understanding of staging.

A staging environment is a testing environment identical to the production environment (page 110)

They do mean testing of the deployment process because there is a figure 10.1 in the book where staging sits after QA and customer sign-off and before operations sign-off.

like image 140
ottodidakt Avatar answered Sep 20 '22 12:09

ottodidakt