The days of complete compartmentalization in software development and implementation are possibly drawing to a close. The development team’s umbrella is becoming more inclusive and is demanding more collaboration from individual stakeholders as delivering high-quality software within decided timeframes is now a non-negotiable project demand. Along with this, we cannot discount the fact that there is an increasing need for innovation on technology-driven work. These developments are some of the main motivators that brought about change in the software development ecosystem and gave way to the rise of new methodologies such as Agile and practices such as DevOps.
Agile development started mainly to solve some of the problems that organizations faced using the traditional development methodologies. Agile development, characterized by shorter sprints and frequent testing, puts greater focus on collaboration between teams, frequent releases, and takes a more streamlined approach to software development. The rise of Agile solved the communication problems between product management and the ‘business’ side of operations. In Agile development, there is a great focus on customer collaboration and the development team. However, the development team and operations team work in complete isolation from one another. The Product Owners focus on the product features and the customer and they don’t necessarily worry about the operations side believing that the ‘product should just work’.
Since there are continuous releases of software versions, the interface between development and operations gets increasingly stressed leading to the rise of more bottlenecks. Further, the shift towards a more service-oriented world demands a greater collaboration between development and operations staff throughout the development lifecycle in a SaaS environment. DevOps aims to take the principles of the agile methodology beyond boundaries of the code and incorporates it to the entire delivered service.
As more and more applications are becoming web applications, the software development lifecycle does not end with shipping the product to the customer. There are a number of components that need to function seamlessly to ensure the success of the product. Databases, application containers, web servers, etc. provide the environment that enables the software to run. As more number of these components get included in the product, the interactions of the development team with the operators of these components becomes increasingly relevant and important. The software provider thus, at some point, becomes the ‘operator’ of the software that they developed.
DevOps simply aims to bring order into the world of application development, testing, scaling and also monitoring. It takes a more unified approach to software development taking into account the need of the entire application lifecycle by adopting a more collaborative relationship between development and operation teams. This results in faster development cycles, lower production risks, fewer bugs, increased visibility and faster fixes. DevOps thus calls for greater automation, more collaboration, an easy to navigate organizational structure and also a culture change to some extent.
It is good to have defined metrics to measure the effectiveness of using DevOps in Agile to enable successful enablement of multiple releases to production in short time spans. According to the Scrum Alliance Organization, some of these could be :
We can see tangible gains when the Agile Development methodology marries DevOps. The 2015 State of DevOps Report by Puppet Labs highlights the fact that implementing DevOps enables IT organizations to deploy 30 times more frequently with 200 times shorter lead times. DevOps looks like the secret sauce that puts agile development on steroids.
However, when combining DevOps with Agile, organizations must evaluate the necessity to do so by identifying the number of application or builds they require in a week. For example, DevOps implementation is great when it comes to an organization that needs to update their application frequently while ensuring no service disruption (Etsy, for example, updates their site every 20 minutes without causing any service disruption to its over 20 million users). However, organizations that need only two or three changes in a year might not need the DevOps advantage.
Since development and operations are directly tied to an organization’s bottom line and profits, it only makes sense to adopt the DevOps movement to deliver high-value products to the customer.