The DevOps movement has rapidly spread across IT organizations, with a growing consensus on DevOps principles. There is a constant flow of ideas on how to improve IT delivery, making it faster, and more efficient and quality focused. New tools and protocols are introduced every now and then, and case studies are published, giving us the opportunity to cherry pick brilliant ideas or learn from their failures.
This is what I call my “Staircase model” for DevOps transformation. Sometimes, organizations face slow benefit realization or return on investment figures are not overly impressive. Before starting the DevOps journey, you have to spend time identifying where exactly you stand today and what your major blockers to success are. The staircase model helps you initiate your journey with the right set of goals, and its deliverables are progressively elaborated throughout the journey.
Step 1: DevOps Challenges and Gap Analysis
First, it’s important to recognize that you have a problem! Bottlenecks are not stoppers, they are signs for us to improve. You can identify problems, bottlenecks and tedious processes using techniques such as value stream mapping, capability gap analysis, deep dive sessions, workshops, surveys, etc. Do note that these are not just one-time activities, but you need to rerun these exercises every six months to ensure your DevOps movement is on the right track.
Mirco Hering has elaborated all these techniques beautifully in his book “DevOps for the Modern Enterprise: Winning Practices to Transform Legacy IT Organizations"
Step 2: DevOps Goals and Maturity Model
Now that you know where exactly the problem is, you can start figuring out how to solve it. Copying others won’t work. You must analyze the situation and available resources, and then identify goals which have high weightage and can be achieved in a short span. Typically, high-level goals are broken down further into small pockets and prioritized on a need basis.
Long Cycle Times
Time to Market
Enable change agility using automation techniques and tools, reducing cycle time and providing rapid feedback
1. Continuous integration using Jenkins running automated build, unit testing, and code quality
2. Continuous deployment using Docker
3. Continuous feedback using Splunk
Based on this analysis, you can design a DevOps maturity model for your organization. There are many reference models available like "Continuous Delivery” by Jez Humble and David Farley. You can use one as a base and refine it with inputs from your analysis. This way, the desired DevOps state model is more aligned with real bottlenecks.
Step 3: DevOps Roadmap and Transition Plan
Now you know what needs to be accomplished. But it’s equally important to put together a roadmap and key milestones. They are placeholders to help us revisit our goals and make sure we are on the right track.
Step 4: DevOps Architecture & Tooling Landscape
At this stage, it’s important to remind ourselves that just running behind fancy tools and automation is not going to make us a DevOps organization. DevOps is a fuel to drive “Lean IT,” which is constantly evolving. Designing the right blend of DevOps strategies will help you achieve your desired speed. The level of automation with tooling is directly proportional to the need of the organization. Don’t just follow the latest techniques that other companies are doing. Think about if they are going to add value to your organization.
Before working on DevOps Architecture, study your organization’s application stack—how many of them support microservices architecture, how to get legacy monolithic products to become more modernized. Always follow architecture principles such as layering, isolation, keep it simple, group related functions, encapsulation and so on. This helps address architecture concerns such as scalability, performance, recoverability, security, availability, and maintainability.
Step 5: DevOps Working Model and Transition Plan
Considering architecture design and tools, start building capabilities in pockets. Quick wins such as version-controlled code, refined branching strategy, automated build and deployment should be first in queue, as they can help you realize value delivery and benefits within no time.
Most of the time, organizations define the maturity model, architecture, and tools at high level and then ask delivery teams to implement it. But the catch is that every team will configure the tool and code snippets in their convenient way using different languages and code logic unless you introduce a centralized DevOps enabler team to develop common code snippets and share it with delivery team on a demand basis. This way, the rollout of automation will be possible at the desired speed. Examples include a Performance Test Framework, Code Quality Scripts, Cloud Automation, and Jenkins ready-to-go pipelines. Maintaining automation and implementing standard best practices will become easier.
Step 6: DevOps Metrics and Measures
You have implemented DevOps, but has it really helped you gain speed? It’s important to measure the value delivered by all this automation. Metrics are a means to deliver the business value to the client. You need to determine the minimum number of metrics to provide the information necessary to meet business goals. Metrics also help us see reflection of our work and accordingly identify areas of improvement.
Step 7: DevOps Culture
A common question is ‘How can we drive DevOps culture?’ My answer is that first, we need to understand what DevOps culture means.
Fostering a DevOps culture includes collaboration between development and operations, cohesive teams with shared objectives, Lean principles, and continuous delivery of value. We must embrace setbacks and systems thinking, recover automatically, experiment without regret, continuously improve, and be customer-centric. In any organization, cultural change has to be driven from upside down—it needs to be cascaded from higher management to development teams. All the above steps we discussed are feeding healthy DevOps culture as shown below:
Today, most organizations are undergoing digital transformation. I hope this article will help beginners smoothly begin their DevOps journey. Bon voyage!