We’re continuing Michael Hüttermann’s guest blog series on DevOps and its ability to streamline software development and delivery. Part two explains DevOps in a ‘nutshell’…see Part I and Part III for more.
Part II. DevOps in a nutshell
DevOps is a modern way of developing software by aligning the goals, processes and tools of development and operations with one another., see “DevOps for Developers”, 2012. Core facets of DevOps include measurement, metrics and monitoring, improving the flow of features in a holistic approach as well as improving and accelerating delivery, e.g. with automation to gain fast feedback. Automation is important! But simplify your process first prior to automation. This helps to reduce variations in the process. Variations impede successful automation.
DevOps is about accelerating the development flow by streamlining the entire development and delivery process, see the Agile ALM approach (http://huettermann.net/alm). A holistic, end-to-end approach is crucial. Taking the whole system into account can be done e.g. by applying value-stream mapping. It’s then necessary to inject feedback loops into your system, e.g. by driving a high degree of automation, so that incidents and problems are quickly identified and corrected. Allowing to experiment and to learn is also as important as trying to fail fast. The best strategy against major unexpected failures is to fail fast and often. Frequently causing failures leads to a more resilient system, see e.g. Netflix’s Chaos Monkey http://techblog.netflix.com/2012/07/chaos-monkey-released-into-wild.html.
DevOps, and the one-team approach
The “one-team approach” fosters communication and collaboration by bringing different parties together to form one team that shares the same business goals (i.e., successful software development; increased market share; better customer satisfaction). Traditionally, mismatches occur between development and operations regarding goals, processes and tools. Some years ago, the Agile movement addressed the pains of suboptimal collaboration and divergent goals already for business, programmers and testers. The term developer took on a different meaning because both programmers and testers develop the software. Programmers and testers work together seamlessly and comprise the working group known as developers. With DevOps, from a development perspective, colleagues from operations are now added to the “one-team approach” as well. Again: be aware of the fact that the term developers does not only refer to programmers and testers. Rather, the “one team approach” also includes experts from operations who develop, for instance, scripts or “infrastructure as code.”, or literally help to develop the solution.
In the next post, Michael will examine the ‘DevOps Matrix’. You can follow Michael on Twitter @huettermann.