Most Read This Week
Continuous Delivery 101 By @Dynatrace | @DevOpsSummit [#DevOps]
Continuous Delivery embraces automated deployments in various stages of the software delivery process
By: Martin Etmajer
Dec. 7, 2014 04:00 AM
Continuous Delivery 101: Automated Deployments
The ability to automatically and reliably deploy entire application runtime environments is a key factor to optimizing the average time it requires to take features from idea to the hands of your (paying) customers. This minimization of feature cycle time or feature lead time is, after all, the primary goal of Continuous Delivery. Today, I will introduce you to the whys and wherefores of deployment automation and discuss its importance for driving the adoption of DevOps.
The Power of Automated Deployments
Due to the inability to fully understand and entirely reproduce such environments, companies periodically create full server backups to be prepared against server loss. Still, restoring an environment from backups may consume considerable resources with uncertain success (how frequently do you verify your backup strategy and assess the mean time to recover?) and can by no means be compared with the flexibility and agility of being able to rapidly and reliably re-create any environment on demand - from development to production:
"Enable the reconstruction of the business from nothing but a source code repository, an application data backup, and bare metal resources."
Continuous Delivery embraces automated deployments in various stages of the software delivery process and identifies manual deployments as one of the common release anti-patterns. It demands to let computers do what computers do best. Therefore, over time, all deployments should be fully automated to make releasing software a repeatable and reliable push-button activity:
In combination with agile development practices and a sound suite of automated tests, deployment automation allows you to minimize feature cycle time or feature lead time by reducing waste. No doubt, time-to-market is important if not vital: you will not know whether your users will adopt a new feature before you actually let them try it out, and the sooner you deliver the earlier you can start to make money out of it:
Create value quickly - Deployment Automation helps minimize your Feature Cycle Time
Another common anti-pattern is "deploying to a production-like environment only after development is complete." This means there can be almost no confidence that a particular software release will work successfully for end users if it has never been tested in a copy of production.
We will now examine how deployment automation fits into the concept of a Continuous Delivery deployment pipeline because it lays an important foundation for establishing a high degree of confidence through the automated provisioning of production-like environments.
Deployment Automation in the Continuous Delivery Deployment Pipeline
The pipeline concept is in analogy to Lean Manufacturing, where a production line is stopped whenever a defect is detected along its way. The problem is then addressed with immediate and utmost attention and corrective measures are taken to minimize the possibility of making the same mistake ever again (Continuous Improvement) - a principle that is also important in Agile Software Development.
An exemplary Continuous Delivery Deployment Pipeline
Here is what a deployment pipeline could look like for your application. In general, the process is initiated whenever a developer commits code to a software repository inside the version control system (VCS) such as Subversion or Git. When the build automation server, which acts as the pipeline's control center, such as Jenkins, observes a change in the repository, it triggers a sequence of stages that exercise a build from different angles via automated tests, but terminates immediately in case of failure. Only when a build passes all stages it is regarded to be of sufficient quality to be released into production.
Stage #1: Commit Stage
Stage #2: Acceptance Test Stage
Stage #3: Capacity Test Stage
For stage 4 & 5, and for further insight, click here for the full article.
Reader Feedback: Page 1 of 1
Subscribe to the World's Most Powerful Newsletters
Today's Top Reads