DevOps is the in-demand approach to modern software engineering. This post shows how to transition to DevOps from traditional/legacy software engineering approaches.
DevOps delivers an end-to-end cultural focus on shared, customer-oriented objectives. It allows companies to reduce costs, reduce time-to-market, continuously deliver code without causing unintended issues, and many other benefits you’ll find here.
But if you run a software engineering organization or work at a company with silos that have been established over many years of operation, how do you transition successfully to a DevOps model?
Why DevOps Matters
Nearly every company is now in the business of software and IT. If you have a new project or initiative, almost certainly it involves a software component. The practices you use to successfully deliver this component are critically important.
The Puppet Labs 2014 State of DevOps report noted that IT high-performers are 2x as likely to exceed profitability, market share, and productivity goals. Additionally, they found a 50% higher market capitalization growth over three years.
According to DevOpsGuys, “DevOps has been proven to increase the speed, efficiency and quality of software delivery as well as improving staff morale and motivation.”
Here are some highlights from a 2016 Puppet report:
- High-performing IT organizations deploy 200 times more frequently than low performers, with 2,555 times faster lead times.
- They have 24 times faster recovery times and three times lower change failure rates.
- They spend 22 percent less time on unplanned work and rework.
- Employees in high-performing teams were 2.2 times more likely to recommend their organisation as a great place to work.
- High-performing IT teams spend 50 percent less time remediating security issues.
If you’re going to do it, do it right.
The Four Principles of DevOps
DevOps focuses on communication, collaboration and integration between developers and operations. It helps build, test, and release software very quickly, frequently and more reliably. This includes development processes, testing frameworks, continuous integration and continuous deployment pipelines
We break DevOps practices down into 4 basic tenants, as follows.
1. Iterative cycles
- Agile development
- Continuous process
- Cycles inform each other
2. Progressive scale
- Crawl, walk, then run
- Don’t get buried
- Evaluate levels of risk
3. Early identification
- No surprises
- Inspect and adapt
- Minimize critical risks
4. Real time alerts and updates
- Constant improvement
- Right people involved
- Frequent update
The Problem DevOps Solves
These principles come together to close a gap left by traditional software engineering approaches. The numerous benefits that DevOps affords us come from simply closing the gap between Dev/Test, and Operations/Business teams.
This unification gives a clearer focus on metrics, infrastructure, deployment, and monitoring.
How to Transition to DevOps
The transition to DevOps practices best occurs in a deliberate, phased approach. We recommend starting in a small part of an organization or on a particular project prior to rolling out broadly across teams. Feedback looks and evaluation should be done at every step of the way to ensure the transition is going smoothly.
And of course, employing managers, engineers, and consultants with deep experience in DevOps helps tremendously.
- Adopt Agile Development and Cloud Computing (including MircoServices)
- Commit to a Continuous Integration workflow
- Employ repeatable, automated software deployment technology and practices
- Automate software testing (Continuous Delivery)
- Continuous Deployment
DevOps starts with people
- Breaking down barriers between teams and empires
- New roles, titles and (new) shared responsibilities
- Capturing and converting tribal knowledge
- Ensuring focus on Business service, not Technology
- Building Trust – in each Other, in Technology, in Process
DevOps requires fundamental process change
- Collaboration between Development and Operations
- Improving and automating handoffs between silos
- Removing constraints and opening up bottlenecks
- Improving the flow of code from Ideation to Delivery
- Creating feedback loops at every stage
Conclusion and More to Come
The transition to DevOps is very significant and touches people, process, and technology. This post touched on the people and process end. In an upcoming post, we will dive into the technology currently used to support these models.
Once effectively underway, DevOps should give you:
- Developers focused on metrics required by Ops team.
- Ops team has greater clarity on infrastructure needs.
- Automation of deployments.
- Close monitoring of the Dev – Test – Prod pipeline with immediate feedback.
- Alleviated silos and communication gaps between software engineers, QA, IT, and other parts of the business.