A question that is often brought up in tech companies, is whether or not to use cloud for hosting your service applications (typically for SaaS vendors). Let’s do a high-level analysis, and look at the benefits and costs of using the cloud.
Benefits ๐
What does the “cloud” offer, compared to the classic approach of managing your own hardware? In a nutshell, the “cloud” virtualizes all your compute, data, and network resources, i.e. your resources can be managed via an API. Hence, the purported advantages of using a cloud, compared to running your own infrastructure, can be reduced to these points:
- reduction in the need of an operations team
- reduction in the need to acquire and maintain hardware
- scalability to your needs
Costs ๐
Ultimately, for a business, we need to minimize the global cost of our infrastructure, both in opportunity and recurrent costs.
Let’s look at these points each, and how they affect the cost of running a business.
-
Reduction of operations team.
Promise: the idea is that human labor is expensive. If you can reduce the need of an operations team, you save money.
Experience: in practice, I have rarely seen this actually materialize. An operations team still needs to exist. Their work is now focused on managing resources in the cloud and writing tools for it, rather than servers directly. If you’re using a single cloud, then you might be able to accomplish a lot with just a few people, however, if you’re going “multicloud”, then I have often seen the operations team spend a lot of time building custom tools and an internal platform that abstracts the clouds. At that point, you might as well build abstractions for your own infrastructure.
-
Reduction in the need to acquire and maintain hardware
Promise: save money since you don’t need to buy and replace hardware.
Experience: you indeed never need to buy or replace existing hardware, you simply pay a recurrent fee based on your usage. The question however is how high that fee is, compared to the equivalent of owning or renting hardware? I have never been in the situation where I needed to look into buying and maintaining hardware, however there is also a middle ground that exists: many vendors offer renting bare-metal servers, without any additional features, but typically at a much lower rate than common cloud vendors.
For example, Hetzner offers bare-metal servers (with traffic) on a monthly basis of โฌ50, where an equivalent Google Cloud offering would cost around โฌ630. That’s more than a 10x difference!
-
Scalability to your needs
Promise: if you need more or less power, you can simply adjust it on-the-fly, based on your demand.
Experience: this is true! If you do find yourself needing to “spin up” another 50 servers because you have an unexpected increase in traffic, you can do it. That is, as long as your credit card keeps giving.
When does the cloud make sense? ๐
Looking into the costs, there are basically two situations in which a cloud is more cost-effective than alternatives:
-
if your product is so simple that you can use only cloud services and don’t need an operations team (and also that you are small, and only need a limited number of resources), or
-
if you have unpredictable load and need extremely fast scalability
Note: these are the same conclusions that Hey arrived to, while announcing the reasons behind their move off the cloud.
But hardware is expensive! Do I need to expense it upfront? ๐
There’s a nice middle ground here. Many service providers offer bare metal servers that can be rented. This is generally what I would recommend to use, for small businesses, unless you have unpredictable load and want to accommodate that.
Middle ground ๐
There’s of course also a compromise that is too often ignored in discussions of cloud vs own/rented bare metal. It doesn’t have to be an either/or decision!
You can always combine cloud with your own/rented hardware. For example, you could operate bare metal servers for your base load, but peer with a cloud, so you can “spin up” new resources when you need them unexpectedly.