In-Depth
Take Control of High Cloud Costs
Here are some tips for getting the most out of cloud computing, while keeping your bottom line in check.
- By Joey D'Antoni
- 01/25/2023
There has been a lot of talk lately about the expense of cloud computing, highlighted by a series of tweets by the CTO of 37signals (which operates project management platform Basecamp, amongst other products), David Hanson talked about how their AWS bill was $3.2 million dollars per year (Basecamp's estimated revenue is around $20-30 million per year, based on various internet reports). While this cloud spend is high as compared to revenue for most companies, it is not excessive for a software as a service (SaaS) company running exclusively on the public cloud. Hanson goes on to tweet that a single Dell server that costs $46,365, can replace their entire cloud bill. This is the dumbest, most simplistic take on cloud economics, and I really hate it when prominent people with a large audience, like a tech CTO try to make this argument.
Cloud Economics Aren't That Simple
What's annoying about Hanson's take is that he is correct in the notion that Basecamp should move at least part of their operations out of the cloud. At large scale, you can reduce costs below what you can get in the public cloud. However that comes with a lot of caveats. Before I became a consultant, I was a principal architect at Comcast. One of my tasks there (as we were trying to build our own private cloud) was to quantify our datacenter costs. While it was easy to figure out how much servers and storage cost, allocating costs for shared hardware like network gear and backup infrastructure was difficult. The costs of power and cooling were also difficult -- our datacenters were often in shared space with office buildings, so figuring out what the power and cooling costs were per server was virtually impossible, at least for one person.
Many organizations have concerns about their growing cloud costs. This has led to several high-profile migrations out of public cloud platforms, or cloud "repatriations" as the process is known. Cloud providers continue to try to help customers optimize their deployments and reduce their costs. These cost reduction efforts are a challenge. I spoke to a customer-facing engineer at large provider who told me "Cloud costs are more of a people problem than a technical problem, especially for larger organizations."
Do You Really Understand Your IT Costs?
Cloud costs are a challenge obviously, but one of things I do try to explain to customers is that you really need to understand your costs in an on-premises environment as they relate to that of a cloud provider. You should replace your hardware on a three to five-year basis. If you are using virtualization (or even physical) servers, you need to have extra server capacity to deal with hardware failure, or bursts in capacity. You need to have network hardware, and that hardware should be also have extra capacity to deal with outages and bursting. And finally, yes, even though I can get a 2 TB SSD off Amazon
for less than $100 (which you shouldn't use in a server), that is not enterprise-class storage with the full redundancy and protections you need.
You may have noticed I used the word "redundant" a lot in the last paragraph. Any solid IT architecture depends on a lot of redundancy to ensure there is uptime and stability. If you have one server fail, and it brings your entire application stack to a halt until your vendor can deliver your replacement parts or servers, you don't have very high reliability or uptime. Much of the value that the public cloud provides is quantifying that cost into a single number (or a set of numbers) that can give you the actual cost of your application, meeting a specific service level agreement, which incorporates that excess capacity. While you don't have to buy that excess hardware, you do have pay to for it, and power it. The cloud provider has the economies of scale to afford this redundancy, while still making a profit. Large organizations may also have similar economies of scale, but for organizations that do something other than sell SaaS, it can be a challenge to justify the need to your finance team for the excess hardware to meet your availability goals.
But What About the Cloud Bill?
All this being said, I have seen some cloud bills that would make your eyes bleed and go rushing out to buy stock in the cloud providers. There are a couple of important things to know -- by far the biggest savings you can get is by reserving your cloud resources. Typically, these reservations come with a one- to three-year term and deliver savings of up to 70 percent. Reservations are transferrable and can be canceled (though with a penalty), so you are not completely locked in. If you are using the cloud at any level of scale, you should be using reservations, as 37signals was.
The other place you can save money is by optimizing your resource usage. While simple things, like turning off development servers while not in use may not seem like a great deal of money, in a larger organization those costs can add up. Taking advantage of the some of the automated services in the cloud like automated lifecycle management for storage, and auto scaling can also help to reduce your overall costs.
Another thing we've seen happen with customers who move to the cloud is as you grow more comfortable with the cloud platform, begin to take advantage of functionality that you can't recreate on-premises -- like global load balancing for Web sites, or massively parallel data warehouses -- that would require large capital investments just to get started with in an on-premises world (with lower levels of functionality).
In my discussions with colleagues, another approach came up: gamification. Make it a contest between app teams as to who can build the best application for lowest per-user cost. This process is less punitive than approaches like chargeback, makes the cloud costs visible and can help your organization land on more optimized architectures for your applications. Another approach that I haven't seen used but would be beneficial is to make cloud spending part of your higher-level employees' evaluations. Giving your employees a financial incentive to manage cloud spend, while meeting uptime requirements (this caveat is important), is a great way to motivate your org to reduce costs.
While you may read headlines about large SaaS firms complaining about cloud costs, or migrating out of public clouds, you should understand that in most cases the public cloud can deliver a better quality of service than managing your own on-premises infrastructure, at a similar cost, when you include all the cost factors like redundant hardware, or network redundancy. While some organizations may be able to reach these levels of uptime in their own datacenters, in a lot of cases it is more effective for those organizations to use a public cloud provider.
About the Author
Joseph D'Antoni is an Architect and SQL Server MVP with over two decades of experience working in both Fortune 500 and smaller firms. He holds a BS in Computer Information Systems from Louisiana Tech University and an MBA from North Carolina State University. He is a Microsoft Data Platform MVP and VMware vExpert. He is a frequent speaker at PASS Summit, Ignite, Code Camps, and SQL Saturday events around the world.