What is a Staging Environment?
A staging environment or staging site is a copy of your live website and is the last step in the deployment process before changes are deployed to your live website.
By having a staging environment that is a copy of your live environment you are able to test new changes made by your developers before they are released to your live website. Using multiple environments is not necessary, but it comes with a long list of advantages, which are especially important if you work on big or complex projects.
Testing new changes on a staging environment before deploying them to your live website also reduces the risk of any errors or issues that will affect your users. This effectively means happier users and more uptime for your website.
Environments: Local vs. development vs. staging vs. live?
In web development it is often necessary to have multiple environments to work on. By having multiple environments it is possible for many developers and users to work independently and simultaneously on a project, without it ever affecting the live site.
When changes in one environment are ready for testing and quality assessment it is deployed to a new environment - usually working its way from left to right in the environment structure.
The "left to right" deployment model is the most commonly used
A local environment is independent of any hosting as it is kept offline and run on a local machine or server. This is an efficient and cost-effective way of adding a test environment without worrying about paying for multiple environments. It also adds the benefit of being independent on internet connectivity, so you can work on your project wherever and whenever.
A development environment is usually used as an “anything-goes” area for developers to test new features, changes or anything they feel like. This environment can sometimes be the same as the local environment, depending on the preferred setup and work process.
A staging environment is the last step before something goes into production and is visible on the live site.
A staging site’s main purpose is to ensure that all new changes deployed from previous environments are working as intended before they hit the live website. By using a staging site and testing everything before deploying to a live website, you will be able to eliminate bugs and issues, so they never affect the user. Sometimes this process is referred to as quality assessment (QA).
For agencies developing websites for clients, a staging site is often used to present the client with the final project for them to do final testing and eventual approval before a launch.
The live environment - also called production environment - is the final stage and the website that a user will see. If the process of deploying and testing changes is good between your environments, then this version of your website should be without bugs or issues, so you can provide the end-user with a great digital experience.
Staging environment vs testing environment?
The main difference between a staging environment and a testing environment is the level of similarities to the live/production environment. In a staging environment everything is updated to the latest versions and everything should mirror the live site except for the changes that you just pushed from the development environment. This enables you to make sure that your new changes will not break anything unexpectedly once you deploy it to your live environment.
In a testing environment this is not necessarily the case, where the environment is less strict on everything having to be updated to match the live environment. Instead of fully testing everything, in a test environment you will be working on assumptions of how things work and instead focus on testing the specific code you are changing. The benefit of having a test environment is that you can test your changes faster, without having to fully replicate your live environment like you would on a staging site.
In the above we did not include a testing environment, but in some cases this could be needed on top of the other environments. You should never replace a staging environment with a test environment though, as they serve two different purposes in the deployment process.
When do you need a staging environment?
Everyone with a website can get a staging environment - and in an ideal world everyone would have one. By having a staging environment and taking advantage of effective deployment processes you get a long list of advantages.
The main advantage is quite simply that you get the chance to test new changes before releasing them on a live website, avoiding any bugs or errors from hurting the user experience.
Whether you need a staging site or not will often depend on how big and complex your website is, as well as how frequently you plan on making major changes. If you are only running a smaller website without major changes planned, then simply using the preview function built into your CMS can be enough.
If you plan on adding additional environments, you should remember to look into the costs of setting these up, as you will usually be charged for any new environment you want hosted. Of course that does not apply if you plan on using a local environment for staging.
Umbraco Cloud and multiple environments
Umbraco Cloud is flexible when it comes to multiple environments and has a built-in deployment tool for handling deployment from one environment to another. If you want to learn more about how deployment works in Umbraco Cloud you can watch the video below.