The Business Value of DevOps
The Business Value of DevOps
As the Agile Manifesto states, “We are uncovering better ways of developing software by doing it and helping others do it.” By using DevOps practices, you can measure the impact on business performance. In this way, you can get the improved quality, speed, and reliability that you would expect from a process like DevOps and improved business and economic outcomes.
DevOps is all about getting the right features at the right time to the right people at the lowest possible production cost. It’s essential for improved security because more, more minor releases mean that more of your application gets exercised in testing, which should result in fewer bugs being found later in production and happier customers if you get it right! The better you can get in demonstrating how your application has been put together, changing it, and evolving with the business requirements over its lifetime, the greater confidence that you will respond to the needs of a changing environment.
Risk mitigation — DevOps is all about getting releases out faster into production to reduce risk; Agile, Lean, and DevOps share the firm belief that removing waste is the best way to minimize risk. The quicker you can take your code through development and testing, the less time it’s exposed for defects to be injected into it. Furthermore, as features are developed in smaller increments than they would be in waterfall projects, there is a more significant opportunity to test them and identify bugs, thereby reducing the period they remain exposed in the build.
DevOps is all about integrating the delivery team with other parts of the organization to respond to business needs more quickly; Agile, Lean, and DevOps share a common belief that collaboration between departments is essential for helping teams meet their commitments. When the delivery team is fully integrated with product management and customer support, for example, then they are better placed to understand and meet business needs. This means that by eliminating waste, your business will find value where it has not seen it before.
Agile, Lean, and DevOps are a series of iterative processes designed to reduce risk at every development process. By iteratively developing, testing, and releasing working software at frequent intervals (iteration), you can validate your design as you go. This is a crucial tenet of Agile and Lean — reducing the rework that must be done later in the project when it’s more challenging to make changes. The result is better software delivered more quickly.
As the ISACA guidelines state: “Smaller batches of frequent changes increases quality and reduces waste,” which means that you have a greater chance to get the software right the first time. I’ve seen DevOps described as applying Agile principles to operations, so if it’s good enough for operations, why not development, too?
At the heart of DevOps lies a set of fundamental principles that you should always keep in mind. These are:
Automate everything. This is absolutely critical for meeting time-to-market and cost objectives. I’m tempted to say more here, but really, it’s simple — if you can automate something, then you should.
Entrepreneurship. The end goal of DevOps is to make your organization more like an entrepreneurial start-up, with speed and flexibility being the most important characteristics. It’s not about making everything rigid but instead finding a balance between order and chaos. One good way to do this is by keeping things small and simple and understanding that there is an order to things.
Be Responsive. DevOps encourages a culture of continuous improvement and experimentation. This means taking risks, acting fast, and failing fast when the results are not as expected. It’s all about keeping options open and exploring lots of new ideas without being held back by fear of bureaucracy. Leaders should seek constant feedback from all stakeholders.
Identify Dependencies. As the ISACA guidelines state: “The only source of true value is customers and their needs. So, organizations that understand what products and services they offer, what customer segments they target, how those offerings fulfill customer needs in terms of tangible outcomes will be more successful than their competitors.” This is all about understanding how everything fits together and determining which elements strongly depend on each other. For example, if the website goes down, you can’t process orders, so there is some level of dependency between these two functions.
By identifying dependencies, you can begin to put in place specific measures and policies to improve resilience throughout your organization.
Learn and improve. One of the fundamental tenets of Agile is that you should never stop improving. You learn more from failure than success, so don’t be afraid to experiment, especially when there’s a high risk or cost involved. Encourage small experiments at every opportunity — it doesn’t have to be a full-blown production release to start with, just something that’s easy to set up and doesn’t take long.
Resilience. It is important to understand the relationship between strength and reducing waste. If your organization constantly encounters problems, how can it be considered resilient? Resilience comes from understanding failure modes, making plans for them, and then responding forcefully when they are discovered to avoid giving in to the common tendency of just rolling with the punches.
Seek and Speak Truth (Don’t hide your problems). This ties in very closely with being responsive, and it comes down to trust. If you don’t know where you are, how can others help you? The only way your organization will gain value from DevOps is through the free flow of information. Avoid blame games or trying to shift responsibility and open up about your problems — it’s very liberating!
Listen. Follow a Lean methodology. In Dev Ops, you should avoid big-bang deployments where all elements are deployed simultaneously as this can overload the testing process and create chaos (order + chaos, remember?). Instead, you want to deploy in small, incremental changes so that problems can be identified quickly and easily.
And last but not least. Be Agile! This is by far the most critical principle for moving forward with DevOps within your organization. I’m sure you’re all familiar with agile development, but what does it do for DevOps? First, agile development teams are self-organizing, which means they don’t need any management overheads. This is very important because you want to encourage small, independent units to act quickly and respond to change easily without having too much internal red tape stomping on them.
Agile development teams encourage constant feedback. Agile values and accepts change as something positive rather than something that needs to be prevented in all cases. Once you embrace this idea, you will find it far easier to make changes to your infrastructure and tools as new technologies emerge or when best practices change over time.
Agility is the key here because a lot of people are scared of making changes to their production environments — they don’t know if the changes will break something or bring down the whole system. They’re afraid that they won’t be able to handle it, and so they put off introducing new technologies and methods for as long as possible. I can tell you from first-hand experience that this is a big problem. We’ve been working towards a more agile infrastructure for quite some time now, and it has made an enormous difference to everyone involved.
You might have heard the term “DevOps Team” thrown around before, but this does not apply to smaller organizations. Instead, it would be best to focus on building small, independent teams responsible for the whole lifecycle of a specific application or service.