While the basics of deployment are simple, in reality, deployment is a complicated process. The goal of a deployment is “Making an application available to end users”. This means that for the end user to open the browser and hit “www.xebia.com”, the application must be fully functional behind the scenes to serve the request. Let’s follow the end user’s browser request and see what components it hits; First it hits a firewall, then an http server, another firewall, the application server and finally the application running in the application server which uses a database to retrieve some data. In total there are 5 components involved to get the application successfully available. We need to not only configure all 5 components but also place some data on some of those components and make sure they are (re-)started in the correct order to get the pretty picture to the end-user. Thus in a nutshell the application deployment consists of installing the application, configuring resources, configuring middleware components, starting/stopping components, maintaining the correct order and repeating the same steps with different configurations across DTAP environments. Most of the times we tend to do this process manually. The manual process as the name suggests is usually time consuming, not predictable and un-reliable. This causes frustrations for, and between, developers and deployers, not supporting the business needs and therefore too expensive. This session would explore ways to automate the deployment process in order to make it repeatable, defect free, less taxing and less expensive.