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:
- DevOps automation is becoming cloud-centric. Most private and public 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.
- 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.
- 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 the costs of development resources and make adjustments 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 the cloud.
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.
- Define your development requirements. Take a quick look at what you’re doing now and what you need to do in the future.
- Define the business case. You’ll have to ask somebody for money, thus the need to define the ROI.
- Define the initial DevOps processes. Keep in mind, these processes will continually change as we improve them through review, trial, and many errors.
- 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.
- 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.
- 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 cloud applications.