DevOps is the new Agile
Originally Published June 10, 2018
Image Credit: Internet
Introduction
By definition, Agile, as the term suggests, is a faster, unconventional way of producing working software according to customer specifications. The idea behind Agile is to have the ability to respond to customer feedback, bug fixes during previous deployments and increasing clarity in the design of the final product. In addition, as a basic premise, Agile seeks to do away with traditional silos and power centers – huge departments with all powerful Heads and the resultant politics, to produce workable increments of product. To do all this, the underlying way is to produce software in small increments – where each increment adds value (by the way of providing a potentially shippable working increment of the product), yet is time boxed by the way of short, defined sprints, where the goal of the sprint is chosen by the sprint team itself and delivered to the product owner.
Agile came about after much deriding the conventional software development methodology – Waterfall. Under the waterfall method, each phase of software delivery is elaborated and worked upon in a linear manner.
DevOps on the other hand is a fairly large term that requires user to understand some of the nuances of software development first. DevOps has taken hold in recent years as the demand for automated deployments, decreased time-to-market, and reduction in time period between successful software iterations has become de-facto standards of today’s global digital businesses. In simple terms, DevOps is combination of two terms – Agile Operations, which is characterized by post-development phases of software development carried out in Agile manner, along with increased coordination and close working between Development and Operations teams. In even simpler terms, DevOps is the practice of operations and development engineers participating together in the entire software development life-cycle, from design through the development process all the way to production support.
But just as Agile lays down the framework to meet customer’s changing requirements, DevOps on the other hand concerns itself with the end to end process of delivering the final working software to the customer. DevOps by this definition can be described as widening of Agile’s principles and values and applying those to the overall journey of delivering software, including deployment, testing and infrastructure services.
DevOps and Agile – working together?
As Agile believes in Software development through Agile principles, DevOps believes in both software development and operations being Agile (Agile Dev & Agile Ops).
Traditionally, branches of software delivery – actual development and its preceding phases, have stood separately from testing, deployment, infrastructure services and operations of the deployed product. DevOps model was invented to unite developers and IT operations (system administrators) to help them find a common ground. DevOps has the ability to maintain well-balanced collaboration and communication between the “Development and Operational” units.
An agile development team in the past would develop a potentially shippable product increment, then pass it over to operations to deploy/run/manage (on whatever platform or infrastructure they have). This approach is less efficient because problems encountered by the operations team (after development thought the version of the application was complete) could have been avoided if they were involved from the start – or in other words, in DevOps environment.
Image Credit: dzone blog
Software development doesn’t stop at just writing code. What happens after the actual code is written – Code gets checked-in, project builds are created, builds are tested on numerous platforms, important tasks like virtualization and configuration management are carried out, metrics and monitoring schemes are defined, and finally working software is released or handed over. However the tasks of the Operations team still don’t end here. Monitoring the code in the ELS (Early Life Cycle) and if something does not work or there is a disaster, Ops team needs to trigger a Roll Back. DevOps brings some tools on the block as well like configuration management (puppet, chef, ansible, cfengine), orchestration (zookeeper, noah, mesos), monitoring, virtualization and containerization (AWS, OpenStack, vagrant, docker) and many more.
This gap from Build to Handover takes time, requires lot of human intervention / resources, and continuous coordination between teams. Cooperation between the development team and IT operations ensures that the used tools are streamlined and do not form bottlenecks. With the effective tools, repetitive work can be automated and transparency is improved. However, in the middle of all this work the business cannot wait, as WAIT leads to loss of business in today’s competitive market.
To meet the demands of digital enterprises competing for survival in the Digital world, big releases and periodic iterations themselves become showstoppers. In a DevOps environment, the project team shifts from big releases and periodic iterations to features and fixes being pushed to production as often as desired or needed. If the team wants to deploy more frequently, it’ll find it tedious to run into bugs all day, every day, unless systems are put in place to reduce failures. It will be equally tedious to complete all manual pre-deployment tasks and activities unless those are automated. This is where not only the team is deploying and delivering value more frequently, but its also producing code it simply couldn’t before.
Value in DevOps – the Agile way!
According to this CA Technologies paper, over 75 % of companies (banks, insurance institutions, advertising agencies, management platforms, etc.) report that combination of Agile and DevOps best practices improves the working environment, while 45% report similar increase in employee productivity. Further, according to the study, organizations that add DevOps practices to an agile environment improve new business growth by 38 per cent more than using agile alone. Agile and DevOps together also increase operational efficiency by 23 per cent, compared to using agile alone.
The current appetite for agile and DevOps is immense, largely driven by the pressures of the app economy and the need to deliver optimal customer value. Businesses are transforming the way in which they design, develop, and deliver applications so that they can offer higher quality applications to customers, faster than ever before, and certainly faster than the competition. At any rate, the pace of app development has increased to unprecedented levels. In this environment, software development processes such as agile and DevOps practices, have become crucial to digital aspirations of global and local enterprises alike.
Agile and DevOps practices are far more successful when used in unison, and both need to form part of an organization’s DNA. A business that adapts Agile and Devops in unison and scales them together and can see accelerated speed to market, better and faster rate of adaption to change in the application economy, and delivering more amazing customer journeys and experiences.
However, DevOps adaption in an agile environment is not the goal and by no means an end point. It’s the starting of a journey that can result in consistent and long-lasting benefits to the business far exceeding the returns derived from simply following one over the other. The organizations need to mature their agile and DevOps deployments as quickly as possible, because that’s where the greatest payback lies.
Source: Capgemini Blog
Focusing on people, process and tools related aspects, DevOps is a way of collaborating and industrializing using highly automated approaches to deploy solutions that evolve as fast as the business needs them. The team-centric DevOps ethos tears down traditional silos to tightly integrate business, development and operations to drive agility and service delivery excellence across the entire lifecycle.
Conclusion
DevOps is as crucial to application delivery as Agile is to Development. As development is unthinkable without being Agile, or at least aspiring to be agile, similarly DevOps implementation is undeniable to deliver seamless deployment processes.
DevOps is a philosophy under which the business function / teams, development teams, and the operations team collaborate on a continuous basis to make sure that IT solutions are available to business on time and that they run without disruption.
In many ways, DevOps is a concept that can be used to manage end-to-end engineering process while Agile is a process used to manage development of complex projects.
DevOps at its core should really be a culture, and the very important skills it cultivated over the years should be imparted to all developers, especially those of the next generation.