Saturday, October 24, 2015

Continuous Delivery

Continuous Delivery; A quite new term I found very recently. I was working on a deployment automation task few weeks ago and here I summarize what I learnt about this practice and how it is beneficial to developers.

Continuous deployment is deploying every change that passes automated tests to production; simply it is the practice of releasing every good build to user. It is all about putting the release schedule in the hands of the business rather than in the hands of development team.

Introducing continuous delivery to a project means making sure the software is always production ready throughout its entire lifecycle and ability to interchange among release versions using a fully automated process in a matter of seconds or minutes.

According to Martin Fowler, continuous delivery is when,
  • Software is deployable throughout its lifecycle.
  • Team prioritizes keeping the software deployable over working on features.
  • Anybody can get fast, automated feedback on the production readiness of their systems any time somebody makes a change to them.
  • Perform push-button deployments of any version of the software to any environment on demand.

Incorporation of automation, frequent code releases, testing at every stage of the process, and a pull-based architecture that permits only successful releases to move to the next stage reduces errors and make it easier to improve the software delivery process.

Automation allows making successful processes repeatable. When introducing a new feature, make a change to a service underlying system or infrastructure, automation let us make the change quickly and safely without introducing errors that would result from repeating the process manually.

Releasing code frequently rather than releasing big releases once or twice means testing the product more often. There’s less change in each release, so it’s easier to isolate and fix problems. It’s also easier to roll back when needed.

Pull based architecture prevents passing code that fails automated tests to the next stage of development. This prevents errors propagating and making them harder to diagnose.

Software developers are rewarded for delivering quality software that addresses business needs, on schedule. Continuous delivery practices give software developers the ability to provision themselves with production like environment and automated deployment so they can run automated tests. Instead of standing in their way, the operations team helps developers get their work done. Continuous delivery depends on continuous integration, which means every change is merged into and tested against the main code base, reducing the opportunity for long-standing feature branches and large merge windows that can lead to serious errors. Deployment becomes much less stressful when changes are small and tested at every step.



Above video contains a speech given by Martin Fowler about Continuous Delivery.

No comments:

Post a Comment