Skip to main content

Hosting Environments

The offeror shall ensure that the application meet the ‘12-factor application’ methodology to ensure automated, reproducible deployments to multiple environments. The offeror shall deploy development, staging, and production environments within the Amazon Web Service Cloud provided by [agency].

In almost every modern project, a software developer will develop an application on his or her computer (“locally”) and will deploy the application into one or more “hosting environments.” Normally, these environments allow the development team to accomplish certain goals, such as:

Historically, each environment would be separately “provisioned” and configured manually based on checklists or “scripts.” This pattern is still very common. However, the modern pattern is to allow for “continuous deployment”, to automate the provisioning of these environments and using configuration-management tools and practices to ensure parity between the different environments. Although there are many different tools used to achieve continuous deployment, the basic principle is that any changes needed made to the hosting environments should be automatically and reproducibly deployed across the hosting environments.

One good way to ensure that your application’s codebase is ready for continuous deployment is to specify that the application be a 12 Factor App. In practice, this will require some effort on the part of your development team, but it will help ensure long-term sustainability of the application.