DevOps and cloud computing are joined at the hip. Why? DevOps is about streamlining development so user requirements can quickly make it into application production, while the cloud offers automated provisioning and scaling to accommodate application changes.
Unfortunately, IT professionals who practice DevOps in the cloud often make mistakes they easily could have avoided. The problem is that best practices are not yet well understood. Both areas are relatively new, but this issue may have more to do with people than technology—and people problems are often harder to solve.
To help you successfully get off the ground, I’ve put together a list of dos and don’ts to follow when implementing or operating DevOps in the cloud.
Do splurge on training for both DevOps and cloud computing
Most people who implement DevOps in the cloud are fighting a cultural battle as well as a technological one. Hearts and minds need to change along with the technology.
Training leads to understanding, which leads to acceptance. The key players within the organization need to participate in cloud and DevOps training, and you may need to offer some mentoring as well. You can tell everyone that this is something that they must do, or you can actually show them the way.
Don’t forget about security
Security models change in the cloud, where you’ll typically employ identity-based security models and technologies. But you need to extend security to the DevOps tools and organization as well.
Security should be part of the automated testing and should be built into continuous integration and continuous deployment processes as those move to a cloud-based platform. If you can afford it, hire or appoint a chief security officer whose sole job is to monitor security within DevOps in the cloud.
Do select DevOps tools that work with more than one cloud
DevOps tools exist on demand, on premise, or as part of a larger public cloud platform. When selecting tools, many people follow the path of least resistance, which involves using a public cloud provider as much as possible to provide the DevOps tools. Typically, those tools are tightly integrated with the application deployment platform.
However, it’s not a good idea to lock yourself into a single cloud platform. Applications should be deployable on many different clouds. In this way you can pick and choose the best public or private cloud for the job. You don’t want to limit your choices at this point.
Don’t forget about service and resource governance
Governance is often overlooked on both the DevOps and cloud sides of the equation—that is, until the number of services and resources reaches a tipping point. This usually happens when the number of services, APIs, and resources such as storage and compute grows to the point when they become way too cumbersome to manage. That number depends on the types of services and resources under management, but you’ll likely hit it during your first year of operations with DevOps in the cloud.
In order to prepare for the management of services and resources, you need to build a governance infrastructure well before you need it. These tools vary greatly in features and function but most provide a services and resource directory that helps track, secure, and manage services and resources. These tools typically provide a place to create policies that govern how the services may be leveraged, such as times that they can be accessed, data that can be accessed, and so forth.
Do include automated performance testing
In the cloud, application performance issues are often a function of application design. Many of these performance issues aren’t caught before they go into production and users end up finding and reporting them, which isn’t good.
Performance testing should be a large part of the automated testing in your DevOps stream. First, you must prevent poor-performing applications from making it into production. Second, public cloud providers may attempt to account for performance issues by automatically adding more resources. If that happens, you could find a large cloud computing bill at the end of the month.
Automated performance testing should enable the application to provide good performance as well as efficient use of resources. These tests should mesh with existing stability and accuracy testing, as well as with existing testing for the APIs and user interfaces.
Don’t underfund DevOps in cloud transformation
Something I hear within enterprises is that since DevOps and cloud will save the enterprise money, those savings should fund the transformation. This kind of zero-sum budgeting would seem to make the impact on the yearly IT budget easy to manage. Use this method, however, and you won’t have enough money to get your DevOps and cloud projects off the ground—and that means you’ll fail.
The reality is that for DevOps in the cloud to provide you with the projected cost savings, you’ll have to invest heavily up front for at least the first two years. While your normal operations are ongoing, the DevOps and cloud projects must function independently for a time. This allows for DevOps in the cloud approaches and technologies to prove their worth and for the staff to understand them before you phase them into production.
Do consider containers
Containers provide a way to “componentize” applications so they’re portable and easily managed and orchestrated. Integrate containers into your DevOps and cloud strategy.
Spend some time with the technology to evaluate what works and what doesn’t as you target your use of those technologies. Also, be sure to consider security, governance, cluster management, and orchestration tools as part of your platform that leverages containers.
That’s not to say that containers will always be a fit for the way you build and deploy applications. It does mean that you should consider the value of this application architecture approach, its standards, and enabling technology so you don’t miss any value the technology can provide.
Don’t force every application to the cloud
When migrating existing applications to the cloud, enterprises typically have hundreds or thousands of applications to consider for migration. Follow these rules when making your selections:
- It’s impractical to relocate many applications to the cloud because they’re based on traditional technology. A good example would be old COBOL systems.
- The cost to move many applications can’t be cost-justified due to the extensive changes that would be required to host them in the cloud. This is the case with both older and newer applications.
- Place applications in priority order, starting with those that would provide the most value to the business if migrated.
- Analyze applications to determine the amount of work needed to meet requirements, from a direct port (“lift-and-shift”) to complete refactoring.
Do consider making your applications cloud native
To take complete advantage of a cloud platform, including infrastructure as a service and platform as a service, you must design applications in such a way that they’re decoupled from physical resources. Of course, the cloud can provide an abstraction or virtualization layer between the application and the underlying physical or virtual resources, whether they’re designed for cloud or not.
But that’s not good enough.
When you consider decoupled architecture in the design, understand that the efficiency of the development and deployment stages of an application, as well as the utilization of the underlying cloud resources, can improve by as much as 70 percent. Cloud computing efficiency saves money. You’re paying for the resources you use, so applications that work more efficiently with those resources run faster and generate smaller cloud services bills at the end of the month.
So, how much extra work is required to get the benefits of being cloud native? Is it worth it?
Dos and don’ts
As organizations have gotten better at DevOps in cloud computing, best practices have begun to emerge. As with the use of most emerging technologies, you can find guidance, but not hard and fast rules you can use to determine how your organization should use the technology effectively. So plan on learning as you go, and expect to make mistakes.
That said, you can reap huge benefits from leveraging DevOps in conjunction with cloud-based platforms. This potent combination can enhance agility and time to market, as well as greatly reduce operating costs.
The benefits that will accrue from using DevOps in the cloud aren’t automatic, and they do require a great deal of brainpower and up-front investment to attain your objectives. But if you understand the level of commitment required and give DevOps in the cloud high priority in your organization, you’ll do just fine.