- Posted by Daitan CTO
- On July 22, 2020
- Agile, DevOps, Software Development
DevOps: A Business Case Framework
It is very easy to get excited about DevOps when hearing about how Google, Facebook, and Amazon have achieved incredibly short release cycles and insane levels of automation in their infrastructures. What rarely gets mentioned is how much these wonders of technology cost. The tech giants have virtually unlimited funds to invest and can obviously afford the luxury. The rest of us, however, need to fight for our budgets and choose very wisely where to invest it.
Over the course of the past 20 or so years, techniques that since 2008 are called DevOps have helped accelerate and transform the development of software products. In this article I will discuss how it helps businesses deliver more value to their customers and increase the efficiency of engineering and operations’ teams. I will also provide a list of points to be considered when developing a business case for the implementation of a DevOps initiative since it is a significant investment.
This article is targeted at business managers who would like to understand DevOps conceptually, and at engineering and operations managers who need help articulating the business value of DevOps to business leaders.
At a high level, the objective of any business is to identify what their customers need and to create products and services that satisfy those needs. In software organizations this is equivalent to identifying one or more challenges faced by the customer and then developing a software product that addresses those challenges.
In between the Customers and the Dev Team there are two critical paths that lead to the creation of value. The first path, going from Customer to the Dev Team, identifies challenges, prioritizes them based on the organization’s strategy, and creates plans to address the chosen challenges. The second path, going from Dev Team to Customers, takes the software created by the Dev Team, deploys it to a place where the Customers can use, maintains the software, and optimizes the entire process – improving customer experience, increasing efficiency and decreasing costs.
Agile and DevOps
The definitions of, and distinction between, Agile and DevOps, is a point of debate so read the next paragraph as my interpretation of the current state of affairs. Looking at the value creation diagram, Agile processes optimize the left side of the diagram (customer challenge identification, strategy, prioritization, planning) and the development process itself. DevOps optimizes the right side of the diagram (deployment, maintenance and optimization). The Dev Team is at the juncture of these two streams and plays a critical role in both creating and delivering value to the Customers.
To understand DevOps it is necessary to understand what happens to software after it has been written by the software development team, processes usually called Integration and Deployment. The diagram below shows a simplified flow of all steps that are taken to bring that software to customers, or a.k.a. to deploy the software to production.
Keep in mind that this process varies much from organization to organization and can take many different forms and the diagram above is an example used to illustrate a concept. A quick overview of the steps:
- Development: Software developers write software source code. In most cases developers run preliminary tests to ensure their changes are not introducing any defects into the product.
- Source Code: The source code is sent to a code repository such as GitHub, BitBucket, and GitLab. In most cases the code is reviewed and approved before being accepted into the code repository.
- Build: The source code is transformed (compiled, packaged) into something that the servers can run. In most cases, during this step several components of a project are combined into a final “product.”
- Tests: The packages generated by the Build step are put through tests to ensure that the software satisfies the requirements of the organization. In some cases, to accelerate the entire process, some tests are run before the build process.
- Deploy: Software that has been validated by the Tests phase is then placed in Production. This is when Customers can start using the software. This step may include provisioning of servers, network, storage, databases, and a myriad of other components.
- Monitor/Operate: After the software is in Production, it needs to be monitored to ensure that it is continuously running at the level expected by the Customers. If it is not, the appropriate teams need to be notified and action taken.
With this process in mind, it is time to look at the definition of DevOps (even though a formal definition does not exist). According to Gene Kim:
“It’s really about enacting technology practices and architecture that help organizations create a very fast—or even continuous—product flow, from dev through testing through operations, all the way to deployment, while often increasing reliability, stability, and security.”Source: Tech Beacon – Benefits of DevOps
In practice, this broad unofficial definition of DevOps is achieved by automating most or all the steps in the Integration and Deployment pipeline and by creating a culture that values short feedback loops, automation over manual work, and customer satisfaction above all.
The automation of the pipeline achieves the short feedback loop by putting changes into production faster and ensuring quality via the automation of tests and deployment. However, the successful automation of this pipeline requires that all teams are onboard with the idea – a single person or a small group of people can jeopardize the DevOps initiative of an entire organization – thus the importance of organizational culture in any DevOps initiative.
A Business Case for DevOps
A business case for the implementation of DevOps needs to take into consideration the benefits that DevOps will bring to the organization, as well as, the costs of such an initiative.
Considering the following points when assessing the benefits of DevOps for your organization:
- The most obvious and direct point is understanding how much time the engineering and operations team spend manually executing steps of the Integration and Deployment process. The automation of the process will free up this time.
- How much time does the engineering and operations team spend troubleshooting production issues. One of the benefits of DevOps is higher quality and less defects in production (because automated steps are less prone to errors), which leads to a decrease in the amount of time the teams spend troubleshooting production issues.
- The impact of application downtime for your organization? Not only do production issues cause your development and operations team to waste time troubleshooting them, they can also potentially lead to customer dissatisfaction and lost revenue. A successful DevOps implementation will decrease the likelihood of lost revenue and decreased customer dissatisfaction due to downtime events.
- Even though this is hard to quantify, take into account the increased customer satisfaction and increased revenue because of the ability to release new features and fix defects faster. It may be helpful to find anecdotal evidence in the form of “we were not able to close that large deal because we could not deliver that one feature fast enough.”
Consider the following costs when creating a business case for your DevOps initiative:
- Automation. A critical DevOps pillar is automation and you will need to deploy tools and automate tasks in your pipeline. This will lead to two types costs: tools and labor:
- Tools: to successfully implement DevOps you will need, at a minimum, a code repository (GitHub, GitLab, BitBucket, etc.), an automation solution (Jenkins, Jfrog, etc.), and a test case management software (TestRail, etc.), which is not strictly necessary but useful. Most companies already use most of these tools – albeit not to their full DevOps potential – so there might not be an additional cost.
- Labor: this will be by far your largest cost. Your DevOps initiative will require people to deploy and maintain the tools listed above and to automate all the steps in your CI/CD pipeline, including automating the testing of all existing and future software, which is a significant investment on its own; automating the deployment steps, which is also significant and may even require changes to your infrastructure; and the creation of dashboards and alerts to enable the monitoring of the production environment. It is very important to remember though that the labor invested in a DevOps initiative will pay back in multiple ways since it is creating automated tasks that will save you time everytime they run.
- Processes redesign. A DevOps initiative will require the rethinking of how software is deployed to production and fundamentally change the way your organization operates. A critical planning step is the mapping of the processes involved in the release of software and the planning of how these steps will translate into an automated pipeline. For small single-team projects this mapping can be quite easy to accomplish. It will however grow exponentially more complex as you add teams and software components into the plan, even though improvements don’t need to be done all at once – you can start with the automation of the Build phase and then move on to Tests and Deployment.
- Personnel. DevOps requires a cultural shift in your organization and this shift requires the training of your existing employees, the hiring of new employees that have the new skills that you need, and potentially the help of external firms that specialize in DevOps implementations such as Daitan.
As I hope I have shown you in this short read, DevOps is a critical characteristic – and some will argue vital – of modern software development organizations as it enables them to increase user satisfaction by increasing the quality of their software and the velocity of their software release process. I also hope that the cost analysis structure I provided will help you estimate how much you will need to invest in your DevOps initiative and to decide how much or how little DevOps your budget will support.