The last 10 years have seen a big change in cottage IT. Before public clouds, IT organizations could walk around and look under developers’ desks to find out what was going on. I mean that literally. As a former software engineer I would go down to Fry’s Electronics and purchase hardware without the IT department’s knowledge to run my projects and hide the machines under my desk. (Sorry, former IT colleagues. My penance was to later become a sysadmin.) This “it’s easier to ask forgiveness than it is to get permission”1 approach is commonly referred to as “Shadow IT.”
Shadow IT got a big boost from the emergence of public clouds. AWS* introducing cloud infrastructure as a service made it even easier for developers to spin up and tear down hardware all with a credit card. Since then, IT organizations have been trying to figure out how to stop developers from essentially creating their own IT departments, but the key motivators of IT (cost, security, reliability) tends to hamper developers’ needs. The problem with developers running their own public cloud instances is that when they eventually drop their code onto IT’s infrastructure, they can find it doesn’t work for a variety of reasons because the environments are not the same.
Then came private cloud. It started with individual projects around the virtualization of computing (VMWare, Xen, KVM, Hyper-V). Soon, however, entire ecosystems were created. IT began to offer infrastructure to developers, but they were still missing some key things: storage and networking.
Enter hybrid cloud. Today AWS, Microsoft, and Google all offer their own versions of hybrid cloud, realizing not all data can be stored in public cloud due to internal policy, government regulation, and a number of other factors. Planning for hybrid cloud is essential for reducing complexity in your DevOps processes.
Before getting into hybrid cloud, we need to take a short detour. In order to understand modern infrastructure, you need understand the core functionality of cloud services. So let’s take a quick look at cloud architectures by looking at Software Defined Infrastructure (SDI). The key elements of SDI are: Self-service Portal (CLI, REST API, and web Interface), Infrastructure Orchestrator (based on requests through the common interface), and Software Defined Compute, Storage, Network, and Security.
Cloud services aren’t a “black box,” and a greater understanding of how such services work will give you greater insight into what’s best for your organization. For more insight, read my previous blog about decoupling services.
DevOps and Hybrid Cloud
With our short detour complete, let’s look at hybrid cloud—a mix of public and private clouds. As I noted, many Cloud Service Providers (CSPs) are moving heavily and quickly to the hybrid model in order to service IT organizations that want on premises (on-prem) solutions. IT can select the correct private or public cloud to run the services on based on set internal policies and move workloads from one to the other as needed.
One of the downsides to these homogeneous hybrid clouds is vendor lock-in. On the other hand, benefits can include a lower cost and more proprietary features. Developers can be guaranteed the same services that work on-prem, and the public cloud workloads behave the same. Depending on your organization, vendor lock-in might not even matter if you’re deploying in the same ecosystem. The right DevOps solution will keep all of these factors in mind before making a decision.
The Multi-Cloud Approach
Another option for DevOps is a multi-cloud model that connects multiple clouds together, including public clouds, private clouds, and even legacy infrastructure. Multi-cloud allows IT to offer developers one big cloud bucket, giving them the freedom to run any service and application on any cloud with one interface. IT can also change policies for security, cost, or regulation.
A good multi-cloud environment enforces policy through the architecture itself, and cloud management platforms like IBM Cloud Private, Manage IQ, and Calm.io have made this process relatively easy. (Well, easier.) The downsides to multi-cloud are greater costs and potentially less features. As you plan your DevOps solution, you’ll need to weigh those issues against greater portability. For more perspective on multi-cloud within the industry, you can read this article from The Enterprises Project—a CIO-focused publication.
It’s important for DevOps to start offering services even before getting a hybrid or multi-cloud model set up to see what factors will come into play before ultimately deciding what to rollout.
In my next blog, I will cover continuous integration and delivery solutions and how they interact with hybrid clouds so that DevOps can create a frictionless code pipeline.
* Other brands and names may be claimed as property of others.
1 Fun fact: This often-used phrase is a quote from the late Rear Admiral Grace Hopper, one of the pioneers of computer programming. It turns out developers have been like this since the very beginning!