The cloud and open source software have long been frenemies at best. Although a number of public cloud services are based, at least in part, on open source platforms or tools, the cloud services themselves are very much not open source.
That doesn't mean, however, that using the cloud means missing out on the benefits of open source. With the right approach, you can enjoy open source and the convenience of cloud computing at the same time.
Open Source and the Cloud: A Troubled History
When cloud computing first emerged, it spawned more than a little worry among advocates of free and open source software.
GNU founder Richard Stallman, for example, warned that cloud platforms "give someone else power over your computing."
The point he was making was that, when you use a cloud service or software-as-a-service (SaaS) application, you're using a computing environment that is controlled by an external vendor. Cloud vendors very rarely publish the source code for their services and applications. Even if they did, users would not be able to modify the code to change the way the service works, control how it manages their data, or enjoy other basic freedoms associated with running open source software on one's own computer or server.
Open Source and Private Clouds
One way to solve this dilemma is to build a private cloud using an open source platform, like OpenStack or CloudStack.
This is a great idea if you have the resources necessary to set up and manage a cloud computing environment on your own. But that's a fair amount of work. It also requires you to acquire your own hosting infrastructure. You miss out on the convenience, limitless scalability, and CapEx-free nature of the public cloud.
Running Open Source Software on Public Clouds
There's another approach to running open source software in the cloud that delivers most of the benefits of open source and most of the benefits of public cloud: using public cloud infrastructure to host open source software that you manage yourself.
You can, in other words, run whichever open source applications you want — such as an Apache HTTP Server, WordPress, or Elasticsearch — on an AWS EC2 instance or an Azure Virtual Machine.
You won't totally control the underlying infrastructure, of course. You also can't stop the public cloud provider from collecting data about what you're doing on its servers. In these respects, you won't leverage quite as much privacy and extensibility as you would if you ran open source on your own private server.
The trade-off, however, is that you can scale your host infrastructure up virtually without limit. You also only have to pay for the hosting resources you actually use, and you don't have to buy any servers upfront to run your applications.
Open Source as a Managed Service
A third approach is to run open source software in the cloud using a managed service from a cloud vendor. For example, you could run Kubernetes via AWS EKS or Azure AKS. Or, you could use AWS OpenSearch instead of setting up Elasticsearch (and related software) yourself.
The benefit of open source as a managed service in the public cloud is that it's simple and convenient. You don't have to provision infrastructure or install open source on it yourself.
On the other hand, you lose out on all of the flexibility that open source would otherwise confer. You can only use your software in ways that your cloud vendor supports. Your ability to modify the software's configuration is usually limited. You certainly can't modify the software's source code. You end up, in other words, with the type of "software as a service substitute" scenario that people like Stallman warn about.
On the upside, one could argue that using open source as a managed service in the public cloud could be a stepping-stone to using the same open source platforms in ways that grant users more freedom. If you run EKS, for example, maybe you'll eventually decide to deploy Kubernetes yourself, instead of relying on a managed service. Or you might one day move from OpenSearch to a self-managed ELK stack.
No matter how you slice it, running open source in the cloud — as opposed to on your own private infrastructure — comes with some drawbacks. It may entail more effort than other cloud-based deployment options. And you may have less control over your software and data.
But given the different deployment approaches out there, it's usually possible to run open source in the cloud in a way that lets you achieve most of your goals, while minimizing the drawbacks. You just need to select the right strategy.