A practical approach to DevOps adoption

Sashikanth Pochimcharla By Sashikanth Pochimcharla on August 5, 2016

A practical approach for DevOps adoption 

“DevOps is the practice of operations and development engineers participating together in the entire service lifecycle, from design through the development process to production support”
Theagileadmin.com

 

Have you ever wondered what is the secret behind the incredibly low lead times of software deployment by technology giants such as Google, Amazon, Facebook and Twitter? Consider the following stats: (Source: DevOps Guide, Selected resources to start your journey)

 

Company Deploy Frequency Deploy Lead Time Reliability Customer Responsiveness
Amazon 23,000/day minutes high high
Google 5,500/day minutes high high
Netflix 500/day minutes high high
Facebook 1/day minutes high high
Twitter 3/week minutes high high

What’s common across these iconic companies? All of them develop, test, and successfully deploy code with stunningly low lead times, often measured in minutes or hours. Contrast this with comparable stats for a typical enterprise, where the lead times from development to production/deployment is often in months or quarters.

 

Company Deploy Frequency Deploy Lead Time Reliability Customer Responsiveness
Typical Enterprise Once every 9 months Months or quarters Low/medium Low/medium

The difference between these leaders and laggards can be captured in a single phrase, DevOps.

What is DevOps?

Dev apps 

DevOps is a cultural movement encompassing a set of practices that facilitates seamless collaboration between all stakeholders involved in Development, Testing, and IT Operations to enable rapid development and deployment of software applications.

The conventionally held view was that the ‘Dev’ side should focus only on development and testing, while the ‘Ops’ side must focus on maintaining the software product/service after its delivery. In most technology organizations, these sides operated in ‘silos’, which was acceptable and even manageable when you were dealing with deployment cycles of a few months or quarters. Imagine the nightmare of these siloed setups having to deal with release cycles that runs in days and hours. The realization that these artificially separated ‘Dev’ and ‘Ops’ can’t handle deployment cycles with digital speeds, led to the rise of the culture, thought process and practices associated with DevOps.

How is DevOps different from Agile development?

Dev apps Vs Agile Devlopment 

DevOps has strong linkages with Agile approaches, and is in many ways an outgrowth or extension of Agile. While the traditional Agile approach preached a collaborative way of building software products in an iterative manner, it is largely silent in terms of delivery, and deployment, i.e. the operations side. DevOps fundamentally differs from Agile, in the sense that it is an integrated practice encompassing the entire life cycle of a product from its inception, to delivery, and support.

How will I benefit from DevOps?

A successful adoption of DevOps culture and its associated best practices will result in the following benefits:

  • A drastic reduction in lead times leading to rapid deployment cycles
  • Ability to release new features to the market with enhanced reliability, stability, and security
  • Enhanced IT and organizational productivity, resulting in higher revenues, profitability and market share

What are the key elements of DevOps?

Culture: The most important aspect of DevOps is a culture of collaboration across the software value chain. One of the fundamental premises behind the DevOps movement is the need to breakdown barriers between various stakeholders involved in developing, delivering, and supporting continuous delivery of software solutions.

"Successful DevOps culture requires genuine collaboration and coordination between all groups involved in the software lifecycle, ranging from product managers, development, testing, operations, support, and business executives."

Agile approach: As stated earlier, in a way DevOps is an extension or outgrowth of Agile principles. Very often the first step towards DevOps is adopting an Agile approach to software development, and do away with the traditional waterfall model.

Continuous deployment: A key aspect of DevOps is to achieve a continuous deployment capability. In practice it entails continuous development, continuous integration, continuous testing, continuous delivery, continuous monitoring, and continuous remedial or corrective measures, when needed.

Automation and tooling: Similar to manufacturing, any continuous process requires an element of automation to make it faster, repeatable, and efficient. Successful DevOps strategy requires usage of tools specific to your technology stack or development environment to automate most of the operations involved in the continuous processes from development to deployment. It’s important to realize that while automation is a key tenet, DevOps is much more than adoption of tools.

What is a practical approach for DevOps adoption?

Any organization that aims to successfully adopt DevOps should evaluate their maturity on three critical aspects namely people, process, and technology. Understanding the capabilities, and gaps on these fronts will help you come up with a practical roadmap for DevOps adoption. It is vital to view DevOps as a continuous improvement process, and not a one shot magic bullet.

In a series of blogs, I will be sharing my perspectives on best practices that could lead to a successful adoption of DevOps, especially in an ISV environment.

Sashikanth Pochimcharla

Sashikanth Pochimcharla

CTO

 

Download the free ebook:

Every company is a software company

Subscribe to Email Updates