We’re more than a decade into the age of cloud computing, and there is no shortage of opinions out there telling you why you should move workloads to the cloud, if you haven’t already. What’s rarer is a measured discussion of why, in certain cases, you might choose not to move workloads to the cloud--or to “repatriate” those that you have already migrated there. In this article I offer four reasons why a workload may be a better fit for on-premises infrastructure.
Traditional Reasons to Avoid the Cloud
Early on, advice about why it might be better to choose on-premise vs. cloud for a given workload tended to center on two things.
The first involved data security and compliance concerns; the idea was that because the cloud required users to surrender control over their infrastructure, it was a poor fit for workloads that demanded tight security. Today, that argument doesn’t hold much water. Most compliance frameworks are more cloud-friendly than many of us were initially led to believe. And given all the IAM settings, encryption options, region configurations and other data protection tools available in modern clouds, there is really no reason why data security concerns should prevent you from using the cloud.
The second conventional argument for on-premise vs. cloud was that cloud migration required a lot of effort, and your organization might not have the requisite expertise. That’s the kind of reasoning you tend to hear when a new technology of any type pops up. And although this may once have been a valid concern when it came to the cloud, there are many cloud migration tools available today that make it relatively easy to move to the cloud.
Modern Reasons to Avoid the Cloud
But if traditional arguments against moving all workloads to the cloud no longer make sense, there are more modern reasons why a given workload may not mesh well with cloud infrastructure.
1. Lots of ingress and egress
Cloud cost optimization is an ongoing battle for many businesses. And one easy way to end up paying more than you should is to run workloads that have a high amount of data ingress (which is the process of moving data into the cloud) and egress (which refers to moving data out of the cloud). The reason is that most public cloud providers charge a fee every time you move data out of the cloud. Some also charge for ingress into the cloud, although that is increasingly less common.
So, even though you may pay only pennies per gigabyte each month for the data you have sitting in the cloud, your bill will climb much higher if you constantly move data in and out of the cloud. Workloads that require a lot of data transfer of this type--such as applications that sync data between a cloud environment and a local one--may not be ideal candidates for the cloud from a cost perspective.
2. Low-latency workloads
Moving data between cloud servers and end user devices takes time. Ensuring that you host data in cloud regions that are geographically proximate to your end users helps to reduce those delays, but it doesn’t eliminate them.
Plus, if your users are spread across disparate geographic areas, being strategic about which cloud regions you use won’t help you much at all. (Sure, you could mirror your workloads in different regions spread across the world, but that would cost a pretty penny and is not a practical solution except for large enterprises.)
What this means is that applications that require very low latency--or, the ability to respond to requests in milliseconds--are not good fits for the cloud. You’re better off hosting them close to your users, or, if that is not possible, designing them so that they run locally on end user devices and circumvent the network altogether.
3. High volumes of data
The fact that the cloud depends on network connections to move data between cloud servers and the people who create or use the data not only introduces latency challenges, but it can also make it impractical to transfer large volumes of data into and out of the cloud at reasonable speeds.
As a result, workloads that rely on or generate large volumes of data may not perform acceptably in the cloud. “Large volumes” is a relative term, of course, and the amount of data transfer that your cloud can handle depends largely on your network bandwidth. But, generally speaking, an application that has to move a hundred gigabytes or more of data into or out of the cloud each day may not perform well due to network limitations.
It’s worth noting that cloud providers have invested a lot of money in solutions (like AWS Snowmobile) that are designed to make it easy to move enormous volumes of data into the cloud. But most of these address only the initial data transfer required to migrate a workload to the cloud. They’re not practical solutions for workloads that require large data transfers on an ongoing basis.
4. Lack of organizational oversight and governance
This last reason for avoiding the cloud has to do not with technology, but with organizational culture and governance. For some businesses, the cloud creates a dangerous temptation for departments or individual employees to create workloads that aren’t strictly necessary, and end up costing lots of money for no good reason.
The same sort of thing can happen in on-premises infrastructures, but it’s more rare, because there are more hurdles in the way. It’s pretty easy for anyone with a company credit card to start spinning up EC2 instances or RDS databases that are not mission-critical. At first, starting these workloads costs only pennies, and it’s easy for them to go unnoticed within large cloud infrastructures.
In comparison, it’s much harder for an employee or team to stand up a new server without a good reason. They’d have to find thousands of dollars to buy it, as well as somewhere to store it. An unauthorized, big, loud, expensive server stands a much greater chance of getting noticed during the next budget audit or data center walkthrough than a cloud-based virtual server.
So, if your organization lacks strong oversight or IT governance, it may be safer to stick with an on-premises infrastructure than to move to the cloud and run the risk of cloud bloat and out-of-control cloud costs.
Lest I be accused of anti-cloud tendencies, let me make clear that the cloud is an excellent solution for many types of workloads. But the cloud not the solution for every IT challenge out there. Sometimes, data transfer requirements or specialized application functionality make on-premises a better choice.