AWS Costs & Billing
If you have ever been told by anyone “cloud is cheaper than hardware”, and you’ve found yourself thinking “is it? It costs us a fortune?”, please rest assured that it’s not you. I’m going to try my best to explain why the mantra of “cloud is cheaper” fundamentally nonsense, but also explain why it’s not. I will mention AWS a lot here, but wherever you see “AWS” you can just substitute in $yourCloudProvider.
warning
We are going to talk about cloud architecture, and some bean-counting principles here. If you’re looking for some ‘techy’ blogs, this one probably isn’t for you.
The cloud
My three fundamental premises for Cloud:
It is just making hardware “Someone Elses Problem”.
It is not designed for cost optimisation
It is designed for value delivery optimisation
Someone elses problem servers
Cloud is just a way for you to give away responsibility for all of the really boring and time consuming parts of running a datacenter, or having presence therein. As such, I would be remiss to not enlighten you with a very useful mantra that I learned at my first company after leaving university:
[That is] someone elses problem (shortened to “SEP”, pronounced ess-ee-pee)
For example, if you asked “Why is the client doing it like that?” and the answer you got was “Dunno mate, SEP”, then you were being (not so) subtly told “I don’t care”.
Side note: I learned a lot from working at that company. One of the most important things I learned was that sometimes the best thing you can do to teach someone something is to say “sure thing… but when you realise I’m right, you know where to find me”. You cannot force people to see your perspective — All you can do is do your best to explain. Knowing how to commmunicate your ideas effectively with people is important; but if they haven’t learned how to listen, you might as well be yelling at the clouds.
This concept of SEP in this context, however, seems to be subtly different in such that we are just allowing actually smart people to care about the bits we don’t care about… but it’s a useful paradigm for understanding the world of infotech in the modern age.
In fact, these days, as though SEP has, somehow, seeped into almost every facet of the info tech space, and we are gradually abstracting away from the underlying components in everything we do:
SaaS (software-as-a-service) products are becoming defacto,
cloud is a modern standard,
Node modules can be installed willy nilly,
Helm charts are pulled into k8s on a whim,
[the list goes on]
We are essentially at a phase in our industry where it seems as though exporting the thinking to someone smarter than you is seen as sort of… better?
Update: …and at the time of reformulating this post, AI has completely taken our industry by storm, so now even the mundane grunt work of writing bash scripts ans such is being exported to Claude or OpenAI. Mixed feelings on this, and another post will follow soon about that.
I’m not saying that these things aren’t better than our previous ways of working, however they do have a ‘cost’. We are speeding up our value delivery at the cost of something else. I’ll allow you determine what that cost might be.
Lets count some beans
Before you start whining about “ohh but these beans don’t count the cost of actually running it in a datacenter. There’s electric bills, rack spage bills, support bills, blah blah blah”… I know. These costings are not equivalent, but they give you a really good indication as to how much AWS are actually paying to maintain this stuff at a profit.
1TB Storage
Let’s say you’re running a machine at home, granted it won’t have Airconditioning, or dual power, etc. but it’ll be probably just as reliable as a cloud host in terms of ‘number of nines’.
A typical SSD under normal loads will last 5-10 years. So assuming that your Cloud drive, and your personal SSD are both running under those same ‘standard’ conditions for 5 years, the total cost of ownership is just for the storage (i.e. no data transfer).
Say for the sake of argument you want two 1TB SSDs (for RAID 1, or RAIDZ1):
2 x Samsung EVO Plus 1TB: ~$360
AWS, including ‘multiplier’ vs your 2 SSDs:
EBS gp3: ~$4,799 (13.3x)
EBS st1: ~$2,699 (7.5x)
EBS sc1 (Cold storage) : ~$899 (2.5x)
S3 Standard: ~$1,379 (3.8x)
S3 Glacier (Deep archive): ~$60 — (0.16x)
Given that the most 'comparable throughputs you’ll get are from GP3, you can see that clearly storage is not exactly… cost effective.
A server
Lets keep it simple, and say we have server equivalent to a T3 (burstable) instance. We aren’t using it full time at home, so burstable is fine. We’ll go with a t3.xlarge, which is equivalent to a PowerEdge R360 basic model rack mounted server. Again, no redundant power supplies, no data in/out, etc etc. Just “running the host under every day load”. A typical server will last 3-5 years, probably longer if you treat it with care, but we’ll be conservative and say 3 years:
PowerEdge R360: ~$2,750
t3.xlarge: ~$4,372 (1.6x)
I Could go on…
… but I won’t. It’s pretty clear that like for like (give or take a few beans), AWS is more expensive, but “like for like” is doing some pretty heavy lifting here. More on that later.
All the hardware, air conditioning, power, networking, etc is all still there… it all still costs money to run. There’s also the salaries for Networking Engineers, Datacenter Architects, Rack Monkeys, Electrical Engineers, Contractors, etc on top of all that. Those costs still exist and are passed onto you, the customer to allow the cloud provider to operate, and still turn profit — so much so that circa 20% of Amazon’s operating income comes from Amazon Web Services (AWS) cloud offering, and that runs at a pretty healthy margin of 30-40%.
So what is it we’re actually paying for?
So Where is the value?
Well, if you’re new to cloud offerings, it’s somewhat obscured. Albeit, AWS will persistently bang on about “only use what you pay for blah blah”… but that’s only half true.
The cloud allows you to to be efficient at taking a product and delivering it, or changing your mind and shutting a whole thing down because it’s not used. You can pivot, and change direction, you can add more capacity at the drop of a hat if your product suddenly becomes quite popular. The cost of your cloud usage scales with your income from a product.
Sure, you can pay for a datacenter, run it there, pay a guy to run it there, the co-lo bill, etc… or, we could hire another software engineer, and just SEP the whole “server maintenance” side of things to AWS? We won’t have to wait for delivery of servers, or fitting them, or connecting them to a network and provisioning them. And instead, we can spin up a host and its there in sub 60 seconds ready to go.
The flexibility and efficiency at adding or removing ‘volume’ at the drop of a hat is value, especially to smaller companies and startups who are scratching around trying things out to see what works.
‘Like for like’
Remember earlier how I said ‘like for like’ was doing a lot of the “heavy lifting” in my statement? Let’s get into that.
One additional benefit you get from the cloud is that you can chop your workloads up into little bite-sized pieces and fit them into compact services that AWS provide. That is to say, instead of having to pay out up front costs to buy a load of hardware you might not even use, you can, instead, take that workload and run it on the smallest possible unit of scale that AWS provides. This means that you are not paying for unused cloud resources.
However, this additional value that you get from cloud offerings only comes with rearchitecting a system to work how the cloud wants you to work. It wants you to run everything on tiny instances, or to run them on Kubernetes so that you can compact all the services onto the minimum number of nodes that they could possibly fit on, or to even run them 'serverless’ so AWS handle all the capacity management for you.
Value proposition
AWS is charging you a premium to provide two value propositions:
Providing flexibility, and
Provide lots of different Units of Scale.
I used the word ‘proposition’ here intentionally — These propositions are optional. They do not arrive just by virtue of paying a cloud provider money, and it is up to you to take those proposals and do something with it. That is to say: If you are going to take your workloads from a datacenter and run them in AWS as though it were a datacenter, you are still paying the premium to have those options available to you. If you don’t take advantage of them and work how the cloud wants you to work, AWS will cost you a fortune for little to no benefit.
If you can wring out the value from small Units of Scale, and optimise your workloads to run on as little hardware as possible whilst maintaining reliability, your costs will be comparable to that of a running it yourself.
However, if you can then also squeeze the flexibility, that the cloud gives you to create new product offerings on a whim or pivot onto something else to adapt, then you are really going to sprout wings.