Friday, January 10, 2014

The road to Continuous Delivery

Continuous Delivery it's a software development practice where you make sure that your application is ready to be deployed to production at any time. You’re not only making sure that when a developer commits a change is, it is correctly integrated by building and unit testing your application (Continuous Integration). You’re also making sure that your application is always ready to be deployed by running automated and/or acceptance tests on it and testing the release process itself.

Practicing Continuous Delivery gives you several advantages:
+The time from idea to deployment to production (cycle time), is shortened.
+By shipping the product early you are encouraging early feedback. The faster you get your software to your end-user, the faster you get feedback.
+You’re always ready to deploy to production. You do not have to spend time making and testing a release.
+Because you’ve already tested the release process itself, deploying to production is simple and error-free.
+You are getting ahead of the competition and making your release process a business advantage.

How to implement ?
  • Ensure both your developers and system administrators are responsible for deployment. Traditionally, the system administrator is responsible for deploying to production. By making your developers responsible too for deployment you are encouraging a culture of collaboration (DevOps) and lowers the chance of errors due to miscommunication.
  • Find out what your release process looks like, make it reliable and repeatable and automate as much as possible. Make every step of the process reliable and repeatable. When your steps are reliable and repeatable, then they can also be automated. As our goal is to automate each step.
  • Setup one single way of deployment to an environment. Make sure that you define a single way to deploy a release to an environment, whether is it the test environment or to production. If you do this, then you’re also testing your deployment process itself.
  • Test on a production-like environment. If you test on a different environment than your production environment, then there is a risk that your deployment to production doesn’t work or worse: your end-users experience runtime problems due to different software versions of third-party software and libraries.
  • Quality first Keeping your application deployable should get higher priority than adding new features. If an error in your release process occurs, fix it as soon as possible.

Where do I start ?
It takes effort to fully practice Continuous Delivery. But you may start slowly by:

  • Let your developers and system administrators work together on deploying your application.
  • Visualize your release process.
  • Make steps of your release process reliable and repeatable

No comments:

Post a Comment