What is DevOps?

What is DevOps? DevOps (a clipped compound of “software DEVelopment” and “information technology OPerationS”) is a term used to refer to a set of practices that emphasize the collaboration and communication of both software developers and information technology (IT) professionals while automating the process of software delivery and infrastructure changes. It aims at establishing a culture and environment, where building, testing, and releasing software can happen rapidly, frequently, and more reliably.

DevOps has been classified as “on the rise” with respect to the Gartner Hyper Cycle in 2013 and as expected has been used by 25% of Global 2000 companies. Some of the companies adopting DevOps include Amazon, Netflix, Bank of America, ING Bank, Disney, Sony Pictures, Nationwide Insurance, Target, Macy’s, Facebook etc (As per Data freely available on the internet). It can be observed that DevOps is picking up across the industries.

What is DevOps really?

DevOps isn’t a framework or methodology in and of itself. It doesn’t stand alone. DevOps adopts and leverages multiple frameworks and agile methodology and other methodologies such as lean and ITSM. DevOps is benefitted tremendously from the work the Agile community has done, showing how small teams, operating with high-trust, small batch sizes with smaller, more frequent software releases, can dramatically increase the productivity of development organizations. DevOps applies Lean principles such as increasing flow and reducing waste to the IT value stream. DevOps requires agile service management processes to remove bottlenecks and achieve faster lead and cycle times. By adopting and adapting practices from multiple frameworks we generate more productivity and economic value for the business.

Lets go a little deeper into the definition and understand the implications of the definition of What is DevOps-

  • The Quality of the deployed changes should be of supreme quality. Quality basically means suitability for the use by various stakeholders for whom the changes are made. These may include the operations team, end users, business teams etc.
  • The delivery mechanism also should be of high quality. This implies that the reliability and the repeatability of the delivery mechanism should be high. This implies the tools and processes used during the delivery should be such that the configurations should be repeatable. If the mechanism or processes fail frequently, then there may infact be rise in the delivery timeframes.
  • There are two phases in which the end-to-end delivery cycle can be split up into. The first phase is when the developers develop potentially shippable increments of the software (thru agile or any other development frameworks) and the second phase is with the developed code gets picked up and gets deployed into the production. DevOpsdemands that the time period between the phase 1 and phase 2 of the lifecycle be as less as possible to achieve a seamless delivery into the production without compromising the quality of the deliverable.
  • Our definition should be goal oriented and not focused on the tools and practices that you use. You may use any tools, any processes, however, the goal that you have decided should be met – be it thru tools, be it thru Agile methods or be it thru waterfall methods. A sample goal could be “reducing time between 2 deployments should be as short as possible”.
  • The goals specified in the definition do not restrict the scope of DevOpspractices to testing and deployment. In order to achieve these goals, it is important to include an Ops perspective in the collection of the requirements. i.e. your product backlog should have elements of infrastructure and deployments also and not just functional elements.

DevOps – Critical Success Factors

Any type of culture change involves a number of critical success factors. In the context of What is DevOps – following are some of the critical success factors:

  • Management commitment to culture change
  • Creation of a collaborative, learning culture
  • Common values and vocabulary
  • Systems engineering that spans Dev and Ops
  • Meaningful metrics
  • A balance between automation and human interaction
  • Application of agile, lean and agile service management methods
  • Open and frequent communication