Staging Environments and Release Management

Regardless of how well an app is written and the quality of the server it runs on, stability will be disappointing unless there is an efficient release management process and unless there are suitable development and staging environments. It's important to invest time upfront into establishing reliable and repeatable procedures that will be familiar to all involved before the app reaches production. A typical web project might require three completely separate environments:

In many sites, all developers have their own "pre-development" sandbox on their own workstation. This is often a Windows workstation, while the development and staging servers will often run a flavor of Unix. Although the use of different operating systems introduces some risk, since the JVMs cannot be identical, its benefits in productivity may make it a worthwhile approach, as developers may need to perform other tasks on their local machines that are not best served by the production operating system. Release management is the task of ensuring that the progress of an app release through Development, Test, and Production is reversible and repeatable. It is vital that every organization develops a release management strategy accepted by all team members before app development begins. The issues addressed by a release management strategy will include:


Successful J2EE projects depend not only on good app and app server software, but also on sound release management practices and suitable staging environments between developers' local machines and live servers. It's vital to invest sufficient time and involve all project personnel in developing a sound and workable strategy in these areas.