Thanks to our inner drive to optimize all repetitive tasks supported by business pressure to deliver solutions more frequently, we are constantly inspired to remove waste from our software delivery process and shorten a release cycle. I could easily be convinced, that as the need to solve big-bang integration issue and everlasting hardening iteration arisen, a continuous integration was born as a solution. Probably no-one realized back then that it is just a first step towards continuous deployment.
Demand from business to deliver even more frequently started to appear, at last we all live in a dynamic world, where opportunity windows are often opened for short period of time. It became crucial to be able to deliver new functionality rather in weeks and not months. Another set of practices and huge change of a mindset was required to stand up to this demand, continuous delivery is just a crowning achievement.
Continuous deployment is the last and the most demanding stage, every change committed to the code, ends up on production environment in a matter of minutes, hours at most.
During the talk I will present a set of tools and practices, we’ve employed to push our development process towards continuous delivery. Each step that we took has various prerequisites that had to be met in order to implement it. Currently we are working in a continuous delivery model and have defined all the prerequisites required for continuous deployment, which I will also cover during the talk (blue-green / canary release, how to deploy stateful services with zero downtime, etc.), however the business decision whether we will make this last step has not yet been taken.