When the wave of Agile development hit, even the smallest tech shops sought to develop and release software more frequently. This speed of delivery created a problem for Infrastructure and Operations teams who struggled to keep up with the rate of change and the concept of DevOps was born. But DevOps is not just the purvey of these Ops teams – its true value is the confidence and risk management it provides to business stakeholders in a fast software delivery environment.
In this blog I’m going to discuss how DevOps is helping businesses realise the value of Agile software development and provide some best practices for implementing DevOps in your business.
What is DevOps?
DevOps has four core areas of focus: Development, Testing, Security and Operations. The idea is to combine as many of these activities as early as possible in the application development lifecycle, with the same engineers who develop the application supporting the application. This promotes accountability, exposes security risks early and minimises technical debt.
How DevOps Supports Agile Development
“Although “agile” is important for overcoming the development challenges posed by digital business, without the collaboration of infrastructure and operations teams, getting an application into production quickly is not assured” Gartner Research Director, Mike West.
It’s a common scenario across government and large enterprises, a solution is ready for production release only to be delayed by the governance team at the last minute because it doesn’t meet their checklist around networks and security. Conversely, a release is ‘bullied’ into production in the name of being ‘fast to market,’ exposing significant operational and security flaws.
The toolsets that underpin DevOps enable a high degree of automation around governance. A business can develop a checklist of proven conditions for production release that can be applied to applications automatically with DevOps tools. This changes the risk conversation, rather than worrying about the technology a business can focus on whether the application offers a great service for their customers or gives them an edge over their competitors.
And the proof is in the pudding, a recent Forrester survey finds enterprises with combined Agile-DevOps initiatives are up to twice as likely to report greater business/IT alignment, improved functional quality, faster business value, continuous delivery, and greater predictability of results aligned with requirements.
Why Isn’t Everyone Doing DevOps?
DevOps requires a huge change in the way people work and, as we all know change management is hard. Product teams are used to the big bang approach where they develop their application and then throw it over the fence to Operations to manage. With DevOps, Operations is part of the Development team permanently. DevOps engineers can influence software design and challenge developers on their approach but, they have more accountability and can no longer blame the Product team if an application is hard or expensive to manage.
The other reason I see is a lack of maturity or focus around the non-functional aspects of an application. The business assumes high security, accessibility and performance are a given and developers tend to avoid or de-prioritise governance over coding the shiny new widget.
Based on my experience working in government and large enterprise, here is what I consider to be the essentials for DevOps success.
1. Utilise Continuous Delivery Suites
Leveraging CD toolsets such as Atlassian, Jenkins or Code Pipeline (AWS) improves software quality for example, you can ensure a code change made by a developer is automatically built and deployed to the first region for testing as soon as it is committed.
2. Infrastructure as Code
Designing servers and defining them as code that are provisioned by a CD tool as needed is a relatively new concept that ensures quality and enables reuse. Boyd Hemphill from StackEngine says "This IaC thinking, more than any other single thing, is what enabled the cloud revolution, because a single ops person can start 100 machines at the press of a button, and also have them properly configured. The elasticity of the cloud paradigm and disposability of cloud machines could truly be leveraged."
3. Understand All of Your Stakeholders
It’s important to understand how DevOps will impact everyone involved in the application development lifecycle and communicate with them. For example, you may be releasing a new product to market or to your user group much sooner, but with less features, than your previous product lifecycle. The Marketing team will need to know this so they can create an appropriate comms plan to manage expectations, increase engagement and confidence and create some excitement along the way.
4. Have Hard Conversations Early and Frequently
One of the biggest advantages of Agile and DevOps is being able to go live with new code every day. This means you can’t afford to put off that security standards conversation until tomorrow. You can’t cater for every possible breakpoint, rather you need to decide what breakpoints you’re going to check and let the rest go. Not easy conversations to have, but necessary if you want to realise the true benefit of Agile software development.