Sporadically delivered thoughts on Continuous Delivery

My Definition of Devops

| Comments

To me, devops is about developers and operations collaborating to deliver software changes more rapidly, more reliably, and with higher quality. The phrase Continuous Software Delivery summarizes the goal of devops quite well for me.

(As an aside, it’s a shame that testers are left out of the devops equation. When you think about it, heavy testing is a cornerstone for achieving the goals of devops, and I firmly believe that even with thoroughly automated testing and test driven development practices, testing professionals are an essential part of the team.)

Achieving the devops goal of continuous software delivery involves both technology and process.

Devops - the technology

The technology piece is largely about automation, including automated provisioning and configuration of environments, automated testing, automated deployment and upgrades, and automated monitoring, reporting, and analysis of running code.

The continuous deployment pipeline is the foundation for this, and in my mind, any software development organization interested in achieving the goals of devops should start by implementing such a pipeline.

The continuous deployment pipeline is at the core of devops today

I believe the next step in devops is PaaS clouds. Infrastructure people will use IaaS cloud technology to build platforms that allow developers and testers to focus on the business logic and user experience of application development. Just as the OS, system APIs, application server standards, etc. have helped developers spend less and less of their time thinking about the mechanics of hardware, file systems, and network protocols, PaaS platforms will help developers think less about the distributed, scalable nature of modern applications.

Platform as a Service clouds will be at the core of devops in the future

We’re not there yet with PaaS. None of the existing offerings are fully mature, and the field of open PaaS offerings is embryonic. A major missing piece is the development infrastructure, not least continuous build pipelines. I have yet to see a PaaS provider with a good story about this; although I know the vendors are working towards this, their demos still tell the story of a lone developer making changes and deploying them straight to the cloud, without even pausing to commit to version control.

Devops - the processes

The process piece of devops is about taking the principles behind Agile to the entire continuous software development process. The obvious step is bringing Agile ideas to the operations team, which is sorely needed.

But for continuous delivery of software changes to work well, the entire process needs to be taken into account. Traditional (!) Agile approaches have focused on the developers. Continuous delivery needs to bring in not only operations and support staff, but also multiple distributed customers and stakeholders, rather than assuming a dedicated, all-knowing Product Owner. All of these people, and more, need to be a part of the process of quickly identifying, implementing, testing, evaluating, and improving changes to software.

Continuous delivery of software needs processes that encompass the entire delivery process, from concept to use

This means going back to the Lean well - again - and bringing back more than the Kanban board this time.