It looks like one of the buzzwords this year is DevOps.
But what is it? It is the merge of Developer and Operations, which basically means everything that happens while running an application inside the boundaries of the production systems.
It represents a great leap from the standard, reactive way of managing production applications and services on a alert basis, to the new agile, proactive way – which means the Operations teams actively collaborate with the Development teams in order to get better and higher quality products.
The heart of Developer Operations is its principles. They are the incorporation of the Agile development practices in the IT environment, plus a huge enhancement in collaboration which involves Development teams, QA teams (where separated by the Development teams) and Operations teams.
The main tools for achieving this are:
· An automated systems infrastructure, which allows the removal of many of the human interactions and thus points of failure.
· A broad ALM platform, enabling developers to have a shared Version Control System, an automated build server, etc.
· Designing software leveraging on Feature Flags, so that if something is faulty it can be easily disabled while investigating on the issue – without impacting the non-faulty areas of the application itself.
· Continuous Delivery.
· Shared metrics aimed at measuring and improving both the overall and the detailed quality of the application/service.
Of course it is not just about tools. For reaching a good DevOps proficiency every role in the team should collaborate in the proper way from the first inception of the project, in order to have a seamless experience among everybody. DevOps don’t start at the delivery, but at the very first sprint.
Feature flags are a very bright example of this approach. It is a development pattern which directly affects an operations’ topic: configuration. If a team commits to use feature flags in an application involving the DevOps people, the latter must be aware about feature flags themselves and they will know how to proactively manage potential issues.
Everything rely on communication. To get properly working Developer Operations the Ops team must be open to a huge mind shift – from stability to agility, as the change referred here is not a breaking change but an evolutionary change, often required by the business itself. The existing boundaries between Development teams and Operations teams should be removed, with their disruptive behaviors.
The natural evolution of Developer Operations would be the Agile Operations – the Operations team would then use some of the core Agile principles (Kanban or Scrum derived, like backlogs) together with some specific developer tools like a Version Control and a Build Server for their own deployment efforts.
This second step of course needs a lot of prerequisites – as opposite as the Developer Operations one which is pretty easy to start – but benefits would be huge. Concepts like the Daily Scrum applied to an Operations environment empower productivity because of the direct communication flow happening beneath.
So, answering the title: How Developer Operations fit into the Agile picture? By incorporating the Agile development lifecycle, applying concepts and principles from the methodologies (usually Scrum) to a completely different topic – Production Operations.