DevOps Journey
image-@DevOpsES

DevOps Journey

Recently lot of folks have asked me about different components of devops. I thought it might be good idea to write about it.

What is Devops ?

One question that gets asked around quite a bit is what is DevOps ? Is it set of tools, Is it a job function as you see lot of job listing asking for devops engineer. Here is what source of all truth Wikipedia defines devops "DevOps is a portmanteau of 'development' and 'operations'" and is "a software development method that stresses communications, collaboration, integration, automation and measurement of cooperation between software developers and other IT professionals".

In simple terms DevOps is nothing but culture that enables collaboration between development and operations for faster execution with minimal change related issues while creating business value.

Why DevOps ?

Most significant advantages are improve time to market for Features. It enables continuous rapid feedback and enables experiments through early and continuous release. Also it helps reduce incident Mean time to recover(MTTR) by higher collaboration between development and operations.

 

 

 

 

 

How do we start?

DevOps is a Journey there is no single step or magic wand that can do this transformation, Also there is no set sequence that needs to be followed. But f there are some things that one needs to consider before starting on this

  • First and foremost get management on board. As it's a cultural change it has to be top-down initiative.
  • Try to keep this transformation simple. Most organization will have bunch of legacy systems which might be difficult to transform. Put them on backburner (There are differnt way to approach these later,one being microservices)
  • Understand that failure is part of this journey, Have a good plan for what to do if something goes wrong
  • Devops is not about tools which enables it but it's about changing culture.
  • Its best to transform existing operations and development team rather than hiring new devops teams.

Major Components of DevOps transformation

If we have to categratiges DevOps changes and break it down further, we can do it in following components. This can be done in any order depending on organization maturity

  • Version Control -This can start at different place for each organization depending on maturity or immaturity. Apart from single version control system for code (you will be surprised how many have two or more of these for variety of reasons). Look at putting a structure that will fit your Continuous delivery and integration needs. Configuration and environment artifacts also needs to be part of version control as you move towards infrastructure as code and automation.
  • Scrum and Agile Development methodology -A key principle of scrum is its recognition that during a project there can be changes, the customers can change their minds about what they want and need, and that unpredicted challenges cannot be easily addressed in a traditional predictive or planned manner. As such, scrum adopts an empirical approach—accepting that the problem cannot be fully understood or defined, focusing instead on maximizing the team's ability to deliver quickly and respond to emerging requirements. One key thing to keep in mind that all work (Business projects, Tech debt, unplanned work) needs to be defined and need to flow through scrum.
  • Continuous Integration and Continuous Deployment - Continuous integration is software methodology where every developer commit to version control triggers a build on next machine. This helps automating and faster build process. Continuous deployment or delivery is having mechanism to successfully, automated  way to deploy code repeatedly. So in short everything needs to be in version control, automated and is repeatable. Idea here is to deploy smaller changes often,de-couple feature releases and code deployment.
  • Automated testing for acceptance - In order to maintain release velocity which is critical for devops all testing needs to be automated. These automated test cases have to flow through CI/CD pipeline.
  • Automated Environments - One of the essential component to make devops successful is to have Consistent Dev, Test and Production environments, all properly built before deployment begins. This can only be possible if there is common automated way to create these environments.Make environments available early in the Development cycle, Make sure development builds the code and environment at the same time.
  • Monitoring - Idea here is detect any issue before they are deployed in production. Which needs us to put production monitoring in pre-production environments. Provide tools to developer for faster debugging. Key here is to understand when service not available, Do Post Mortem, Learn from infrastructure and anticipate issues. Automated performance testing also needs to be part of pipeline.
  • Development and Operation Collaboration - This is backbone of devops.We need to build high trust culture. Embed development into operations incident escalation process.One way to do is having development on-call along with operations and also have development part of postmortem and other operational meetings.
  • Infosec or Rugged DevOps - This is something new that has started starting getting traction in devops. Earlier it was development+operations and infosec was more of afterthought. Now it's looked as more of development+operations+infosec. Some of things here are including security testing and scans as part of development cycles. Idea behind is to reduce time to fix after finding the issue as well as detecting issues before hand. Another area that needs some attention is to adding audit and trace features into code which enables easier detection of security risk.
  • Metrics - Final but important component of devops. Unless you can measure it you can't see the progress. Some of metrics that are captured to see devops progress are deployments per day, deployments per day/per developer. We should be able to increase in releases as devops matures in organization. Some of mature organizations like netflix,amazon do hundreds/thousands of deployments per day. Another metric that's critical is Incidents per change and mean time to recover to measure maturity of your process. Also lead time to change can be measured to ascertain velocity.

Hopefully this gives high level overview of components and journey that is devops. I tried to cover each component at high level, each of these components can be a separate detailed discussion. Tools that helps with these components (there are plenty) is also a separate discussion.

To view or add a comment, sign in

More articles by Amit Kalamkar

  • SQL on Hadoop

    One of the challenges of big data landscape is to getting fast, easy and efficient accessing, analyzing and…

    3 Comments
  • PaaS - Value Proposition

    Now with organizations embracing cloud (Hybrid / Public models) , DevOps and increasing their spend on cloud than…

    2 Comments
  • DevOps Journey Part IV - Automated Environments

    One of the essential component to make DevOps successful is having automated environment. We need to have Consistent…

  • DevOps Journey Part III - CI/CD

    On our DevOps journey we have covered high level devops components (https://www.linkedin.

    1 Comment
  • DevOps Journey Part II - Version Control

    First and foremost thanks all for great feedback on my earlier DevOps post in which I discussed major components of…

    2 Comments

Others also viewed

Explore content categories