Suman Guha, Technical Product Manager with Red Hat lives in Boston,USA. Software Engineering Leader with 10+ years of experience as individual contributor and technical manager/lead roles, across Software Development, Product & Program Management, Agile, DevOps, Solutions Architecture, Consulting & Leading distributed teams(web, mobile, API, IaaS, SaaS). Hands on experience in designing, deploying dynamically scalable, highly available, and fault tolerant systems on AWS/OpenStack Cloud. Certified AWS Solutions Architect, Certified Scrum Master, PMI-Agile Certified Practitioner.
Friday, January 10, 2014
The road to 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.
Continuous Delivery gives you several advantages:
time from idea to deployment to production (cycle time), is
shipping the product early you are encouraging early feedback. The
faster you get your software to your end-user, the faster you get
always ready to deploy to production. You do not have to spend time
making and testing a release.
you’ve already tested the release process itself, deploying to
production is simple and error-free.
ahead of the competition and making
your release process a business advantage.
How to implement ?
both your developers and system administrators are
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.
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.
our goal is
to automate each step.
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
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
your application deployableshould
higher priority than adding new features. If an error in your
release process occurs, fix it as soon as possible.
do I start ?
takes effort to fully practice Continuous Delivery. But you may start slowly by:
your developers and system administrators work together on deploying
your release process.
steps of your release process reliable and repeatable