At one of the sessions that I attended at CITCON Europe 2009 Chris Read (I think it was him) talked about build pipelines and continuous deployment. As he explained his view on what continuous deployment means, I had a bit of an epiphany. We are already doing it! Of a sort. I say “of a sort” because we still are not perfect. We can’t deploy 50 times a day, but we can deploy often, reliably, and quickly (we have deployed a new version of the HIP nearly every other Saturday for the past year that I have been working here, each deploy normally takes just a few minutes). Every release that we do has also passed through our CI system. In fact every release that we do has to. The only release candidates are those that have been through this testing procedure, and any passing builds are automatically added to the list of release candidates.
Our deployments still require a little manual intervention (copying a file), but that is something that we are working on. At the moment we are overhauling our deployment mechanisms so that deploying a new release of either of our applications turns into a single click. This should make us able to deploy even more quickly and smoothly.
At previous companies I have worked we didn’t have this ability and we didn’t think that being able to do it was needed. After now having this ability I can’t imagine not being able to do it. No more fear of deploying. No more babying deploys. It all just works.
It is things like this that make you start to wonder maybe there really is value in a change even though you can’t see it right now. Maybe updating our deployment process and infrastructure so that we can deploy at any time during the day would have immense benefits that we just can’t see right now.