DevOps dictates new approach to cloud development
It’s a fact: DevOps and cloud are joined at the hip. The overwhelming majority of cloud development projects employ DevOps, and the list will only get longer. The benefits to using DevOps with cloud projects are also becoming better defined. They include application development speed-to-delivery to meet the needs of the business units faster, user demands that quickly fold back into the software, and lower costs for development, testing, deployment, and operations.
In this article, we define how cloud development is changing, why it’s changing, and, most importantly, how you as a software engineer can adapt to the change. We’ll focus on how DevOps changes the game for development as a whole and cloud development specifically.
How the game is changing
At its core, DevOps is the automation of agile methodology. The idea is to empower developers to respond to the needs of the business in near real-time. In other words, DevOps should remove much of the latency that has existed for years around software development.
DevOps’ links with cloud computing are easy to define:
- The centralized nature of cloud computing provides DevOps automation with a standard and centralized platform for testing, deployment, and production. In the past, the distributed nature of some enterprise systems didn’t fit well with centralized software deployment. Using a cloud platform solves many issues with distributed complexity.
- DevOps automation is becoming cloud-centric. Most public and private cloud computing providers support DevOps systemically on their platform, including continuous integration and continuous development tools. This tight integration lowers the cost associated with on-premises DevOps automation technology, and provides centralized governance and control for a sound DevOps process. Many developers who enter into the process find that governance keeps them out of trouble, and it’s easier to control this centrally via the cloud versus attempting to bring departments under control.
- Cloud-based DevOps lessens the need to account for resources leveraged. Clouds leverage usage-based accounting, which tracks the use of resources by application, developer, user, data, etc. Traditional systems typically don’t provide this service. When leveraging cloud-based resources, it’s much easier to track costs of development resources and make adjustment as needed.
What’s most interesting is that the cloud isn’t really driving DevOps; rather, DevOps is driving the interest and the growth of cloud. In RightScale’s 2015 State of the Cloud Report, they found that “Overall DevOps adoption rises to 66 percent, with enterprises reaching 71 percent.” Their conclusion is that DevOps is wagging the cloud computing dog, not the other way around.
Why DevOps is leading teams to the cloud
What drives the use of DevOps as a leading enabling technology to get to the cloud? It’s the need to simplify and speed up a development process that has stifled growth for many enterprises. Stories abound about titans of industry who are unable to purchase companies or marketing leaders who are unable to launch products, all because IT can’t keep up with the application development backlog.
While enterprise leaders look to fix their application development processes by moving from waterfall to DevOps, they also understand that DevOps alone won’t save them. The latency in making capital purchases of hardware and software slows the development process, even if it’s made agile. Developers end up waiting around for capital resources to be put in place before the applications can be deployed.
Thus, DevOps won’t have much value without the cloud, and the cloud won’t have much value without DevOps. This fact alone is being understood inside enterprises that once thought they could move to one or the other, and that no dependency existed. We’re finding that dependencies between DevOps and cloud do indeed exist.
Approaching cloud app development
When building applications in the cloud, the change needs to start at the software engineering level, not at the C-level. The advantages of building cloud applications using modern DevOps tools should be understood by all who will drive the process. Those who aren’t on board will likely get in the way of progress and not respond correctly to the inevitable problems that will arise. (We can call that process “continuous correction.”)
While enterprise development shops are quick to pick a cloud platform, often before they establish a DevOps process and DevOps organization, the reality is that DevOps and public and private cloud solutions should evolve at the same time. We must automate our agile processes using cloud and non-cloud DevOps automation tools. At the same time, we must consider how to extend those DevOps processes and automation into public and/or private clouds.
This is easier said than done, considering the newness of DevOps tools and DevOps cloud services. It’s not something that you can do in serial order, given the deep dependencies discussed earlier. The process that seems to work best includes the following steps.
1. Define your development requirements. Take a quick look at what you’re doing now and what you need to do in the future.
2. Define the business case. You’ll have to ask somebody for money, thus the need to define the ROI.
3. Define the initial DevOps processes. Keep in mind, these processes will continually change as we improve them through review, trial, and many errors.
4. Define the initial DevOps solution and links to the cloud platform or platforms. You can’t just define DevOps tools without understanding the target platform or platforms. There must be synergy with DevOps processes, automation, culture, and target platform. You need to determine the “whats” and the “hows.” This is where most enterprises stumble because of the complexity of all the new moving parts. They miss the mark, in terms of lost opportunities within the new cloud platforms that go unexploited for one reason or another.
5. Consider your people. You need everyone to be on board with DevOps and with having DevOps drive cloud development. This seems to be an issue in many organizations, simply because DevOps and cloud are both new. Adopting both new paths at the same time seems to blow the minds of traditional developers who want to learn but need a great deal of guidance. Training won’t save you here, either. It’s leadership that needs to come from the developers, and there should be no question about the new processes, tools, platforms, and day-to-day practices.
6. Define CloudOps—how applications will operate in the cloud. Most developers don’t want anything to do with operations. Within this new model, that can’t be the case. The old model of tossing code over a wall and hoping for the best is over. DevOps and cloud should give developers new, improved visibility into how their applications operate. This feedback can be used to improve the cloud application.
DevOps will lead the way
As DevOps and cloud continue to prove their collective value for enterprises, more CTOs and technology leads will be working to remove the technical and bureaucratic hurdles that stifle growth and opportunities for businesses. However, these same enterprises need to go much further with the larger value of DevOps, which includes continuous and agile deployment. This concept is less understood, and it’s even feared by many in enterprise IT, who view it as a path to lower productivity and application quality. But when you add the cloud to the DevOps equation, you see that enterprises no longer have a choice.
If cloud computing is to become effective for enterprises, then it’s DevOps that must take us there. The value and the function of DevOps, and the value and the function of cloud computing, are completely synergistic. You won’t get the value of one without doing both. On the ops side, many businesses lack the organization and tools to make DevOps work. Various new approaches and their related technologies aren’t well understood, and traditional approaches continue to be safe harbors that deliver low value to the business. The changes described here represent an interesting path for these organizations to take.
The strategic nature of DevOps and cloud is unlike other development approaches and platform changes that have come along in recent years. They may find themselves holding stone chisels in a digital world.
The largest hindrance to making the leap is the number of changes that must occur at the same time. DevOps needs to be understood and implemented. The cloud needs to be adopted around DevOps, and thus many of the decisions around DevOps tools and cloud platforms need to occur together.
Get past the changes
At the same time, the culture of the enterprise and developers must change around the notion of DevOps, and the way it’s needed to drive cloud development going forward. Finally, enterprise IT must spend the mother of all budgets to get through these changes. And they must spend money without an immediate goal around ROI, which of course drives corporate leaders and shareholders nuts.
However, the alternative—doing nothing—means certain failure. Others are likely to out-maneuver you, in terms of time-to-market with solutions and application services. When you can stand up applications and processes in near real-time and do so within an elastic and efficient environment, the market will reward you for making that effort. If you haven’t embarked on the process yet, it’s time to get started.