Software Development Environments – All you ever needed to know
It’s the start of a software project, your assessment says you only need one development environment, perfect- or is it? You think you only need one environment for the web application, or perhaps two: One development environment (your PC) and one server.
But with time, you feel the need to have additional environments. For example, your clients might want to have their own testing environments. Sometimes you need to have a pre-production environment or a staging environment. This helps project managers approve the on-going content and its look.
But do we really need these environments? What can these be good for?
Starting with “Environment” Itself
In a hosted (e.g. web site/application, database) development, environment refers to a server tier that is designated to a particular stage in a release process.
Let’s go through the typical product release cycle.
1: The Development Environment
The software is developed here. In some scenarios it could be the developer’s desktop while in other situations this would be a proper server shared by multiple developers working on the same project. However, this environment must resemble the production environment as much as possible in order to prevent issues (where the software acts differently in production).
2: The Testing Environment
After the application is developed, it is released to the testing environment. The testers ensure the quality of the application by checking out bugs and fixing them. This environment should resemble the production environment very accurately because this is kind of the last safe place to fix and find environment-related bugs.
3: User Acceptance Test Environment (UAT)
In client-vendor projects, the software then moves from internal testing to client testing. This is where the client’s testers would verify the quality of the application. They will send issues for you to fix. The client will also assess the application. They may request changes to better fit the requirements. Sometimes clients do not even require UAT.
4: Pre-Production /Staging Environment
The staging site is used to assemble, test and review all new versions of a website before it goes into production. This phase is often tested on hardware that reflects hardware used in the production environment. But don’t be confused! The staging site is often different from the development site and offers a final Quality Assessment zone which is separate from the production or development environments.
5: Production Environment
The application can finally go out into the world! Content can always be updated from the staging environment to the Production Environment whenever available. The new application functionality and bug fixes from earlier environments are always referred to on the go.
Wait , do I have to use all of these?
Small to medium software projects do not need all environments, but from time to time, you may want to add additional environments . You may not need to have all these environments running up at the same time either. For example you may want to buy the staging environment hardware only after the first release to the Testing Environment. Pro-tip : this can save you a lot of money.
Last Musings. . .
The purpose of these environments is primarily to improve development, testing and pre-release processes in client-server applications.
BUT there is absolutely no magic number of environments that will make everything work. So as long as the project manager of your software development company can determine the right mix, you will be good to go!