UrbanCode Deploy Scenario: 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 discussions of different parts of this promotion and deployment process along the side of this page.
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 — UrbanCode Deploy provides a wide array of integrations to handle integration with external tools.
While UrbanCode Deploy 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 that is used for failover when production goes down
Our application is made of a database back-end, a middle-ware 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. UrbanCode Deploy 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, UrbanCode Deploy analyzes what is already deployed, and makes the needed changes to the target environment.