The Amazon premium
How the biggest cloud companies deliver the worst value
Amazon is probably the largest cloud services company in the world. Many people (especially in larger businesses) are so certain that they receive good value from Amazon Web Services that they do not even trouble themselves to evaluate alternatives.
I personally doubt that Amazon provide good value, even for highly fungible (and so presumably highly competitive) resources like virtual machines ("EC2" in AWSese) and object storage ("S3").
I will compare virtual machine and object storage pricing for the following:
- Microsoft (Azure)
For virtual machines I will approximate the following spec:
- 8 GB of RAM
- 100 GB of local disk
- 2 CPU cores
My reasoning is that this is about the smallest useful machine size for a production server - certainly the smallest machine that any commercial operation would use for anything important. The expectation is that prices scale roughly linearly upwards from this machine size.1
Where it is difficult to find exact equivalents across ranges I will have to club together instances that are slightly different. I will try to minimise these differences.
For file storage (aka "object storage" aka "Amazon S3") I will compare the price per terabyte because that gives more human-readable units.
Prices will be converted into USD for comparison purposes.
All prices will be for services provided in Western Europe - that means virtual machines or files are hosted somewhere between Ireland and Germany.
All virtual machines will be x86 based.
(Follow footnotes for more specifics and links).
|Provider||Machine class name||Machine spec||Price per month2 USD||Price per month (native)|
|Amazon||t3a.large||8GB, 2 core||$71||$59.74 + $11 USD for EBS|
|n2-standard-2||8GB, 2 core||$66||$62.37 + $4 for disk|
|Azure||D2 v3||8GB, 2 core||$93||$87.60 + $5.89 for disk|
|DigitalOcean||"8 GB"||8GB, 4 core||$48||$40 + $7.50 for disk|
|Linode||"8 GB"||8GB, 4 core||$40||$40|
|OVH||b2-7||7GB, 2 core||$27||22 EUR + 2 EUR for extra disk|
|Provider||Price per TB/month USD||Price per GB (native)|
|DigitalOcean||$20||$5 base (250 GB) + $0.02 per GB|
|Linode||$20||$5 base (250 GB) + $0.02 per GB|
|OVH||$11||0.01 EUR per GB|
Big tech providers charge a considerable premium.
The effect is even more pronounced once you consider that for $40/month, Linode and DigitalOcean provide four cores rather than two and SSD disks rather than HDD (or EBS).
Answers to common objections
"$BIG_TECH will give me a volume discount"
I'm sure any cloud provider will negotiate a lower charge for a large customer.
"$BIG_TECH will give better service"
I haven't used Azure or AWS for a big project recently but I have used Google Cloud Platform and can confirm that it reflects Google's reputation for poor customer service. Conversely I have used DigitalOcean's support in a personal capacity and found it to be acceptable.
Incredibly, Google's "role-based" pricing requires $100 per user, per month to raise support requests. This was so expensive that accounts were limited and many senior developers did not have support-ticket privileges. And the quality of the service was poor with constant changeover between agents and confused and cryptic responses to basic questions such as "where has my managed database instance gone?".
"Smaller providers cannot operate at my yottabyte scale"
There is always someone pretending that their monster tech stack requires 2048 core virtual machines with 8 TB of RAM. I can only take these people at their word but I would point out that many businesses that are customers of AWS are deploying more mortal-sized web services on 2 core virtual machines with 8 GB of RAM.
"$BIG_TECH provide a wider array of services that I rely on, such as hosted databases"
It's true that the smaller providers don't provide the full suite of (for example) AWS. They probably never will. However they provide more and more of the most important services. DigitalOcean and OVH provide managed databases.
The point of limiting this comparison to just virtual machines and object storage is that those two services are the easiest for smaller competitors to replicate and so logically should be the most competitively priced. I think it is by itself remarkable that they are not but it is reasonable to suspect that margins are much fatter on nicher services.
"This is a naive navigation of the pricing schemes of $BIG_TECH"
It probably is and there are entire fields of consultancy aimed specifically at reducing people's AWS bill (in that way, AWS is reminiscent of some of the darkest Oracle lore). I am a mere professional software developer applying my own knowledge out of sporting interest.
I suggest that many people will have trouble navigating the complicated pricing schemes created by Amazon/Google/Microsoft and likely will end up paying over the odds. Corporate cloud invoices can make interesting reading. A surprising number of companies fail to take even the most basic steps to reduce their bill, such as committing to 1 year contracts, shutting down unused virtual machines or simply asking for a discount.
If I have made a serious mistake in the pricing above: please email me to tell me and I will correct it (if I agree).
Proprietary cloud services are likely even worse
Intuitively, I expect that Amazon premium to grow considerably once an organisation starts to adopt proprietary cloud services. Amazon's "serverless" web stack of Lambda, API Gateway, Cloudwatch, DynamoDB and SQS look to be charged at a considerably higher per-hour cost to normal virtual machines and object storage.
It's also more difficult to switch away: none of the smaller providers have a Lambda-style service yet. Vendor-lock in has historically been an excellent predictor of high prices.
Worse yet, pricing with the "serverless" stack is harder to predict in advance and (judging by blog posts) most people only seem to learn what the true running cost is after the app in question has been written and deployed.
Complicated pricing is correlated with high prices
One of the promises of the cloud is that you no longer have to buy physical machines outright and set them up ahead of time - using the cloud you should be able to only pay for what you use.
Beyond that basic hope, the pricing of big tech providers is hideously complex and that seems to lead to many hidden costs. The more complicated the pricing scheme the more likely the buyer is to find something they never thought about (like network egress bandwidth) ruinously expensive.
- Rasmus Lerdorf did a comparison of "low cost" VPS servers, including performance comparison. I haven't done professional work with any of these (clients prefer Amazon Web Services, GCP or Azure) but I have used several of them personally.
- Segment wrote about their experiences reducing the Amazon bill. It's a great and frank blogpost about cost optimisation on AWS. Segment probably don't regret using AWS but I do think it is a case study in how complicated pricing can be confusing. The "hot partitions" problem is very common on DynamoDB.
'Per month' here means 730 hours ↩
- Amazon: Ireland region, "on demand" pricing and EBS
- Google: Belgium region, monthly pricing and "Standard provisioned space"
- Azure: West Europe region, "pay as you go" pricing and "S10" managed disk
- DigitalOcean: Standard offer
- Linode: Standard offer
- OVH: Germany region and "Classic" block storage
- Amazon: S3 Standard, Ireland region
- Google: Standard storage, Frankfurt region
- Azure: "LRS" storage, West Europe region
- DigitalOcean: Standard offer
- Linode: Standard offer
- OVH: "Storage replicated x3"