Promoting a Multi-tiered App from QA to Production
In this scenario, we will look at taking a typical web application and promoting it through several environments. The different tiers will allow us to review different types of deployments. We will also examine how those related deployments are coordinated to deploy the entire application.
Please find detailed examinations of different parts of this promotion and deployment process along the side of this page.
The Application
For this example, let's declare our application to be a simple customer facing hotel booking system. Customers will come to the website, search for available inventory, and book a stay. Business rules and inventory are maintained in a back-end database. Meanwhile, images and dynamic content are provided by the art team and deployed to dedicated front end web servers. The main application is deployed to an application server. We will ignore the specifics of which database system, front end servers and application servers are used — uDeploy provides a wide array of integrations.
Example Environments
While uDeploy is capable of managing a virtually unlimited number of environments for each application, the example application will move through just a handful of environments.
- QA: A classic early test environment used mostly for automated tests.
- User Acceptance: A test environment dedicated to manual testing of business requirements.
- Stage: A production-like environment used for final testing.
- Production: The Live environment customers access.
- Disaster Recovery: A smaller clone of production in another data-center. Used for failover when production goes down.
Snapshots
Our application is made of a database back-end, a middleware tier and web front-end. Each of these components could be delivered by a different team, making it easy to mix and match versions. However, changes to several components are related and should be deployed together. This deployment dependency needs to be managed. uDeploy uses the idea of the "Snapshot" to tie together versions that are known to work well together.
A snapshot wraps these known compatible versions into a desired deployment state. At deployment time, uDeploy analyzes what is already deployed, and makes the needed changes to the target environment.
