Folks have been making noises for a while that Amazon is anti-competitive in a variety of ways. I don’t disagree with the overall sentiment, but there’s one particular aspect of how AWS advantages its own offerings that I don’t see folks talking about–and strikes me as particularly egregious.
Let’s say I want to run something open-source in my AWS account; call it MySQL for this thought experiment. I can set up MySQL on an EC2 instance, or I can use AWS’s own managed service (in this case, RDS) to do it for me. I’ll pay slightly more for RDS, but that’s fair; there’s value in having AWS’s operational expertise applied to running infrastructure for me.
A bit of background that’ll help make this diatribe make sense: AWS regions are broken into Availability Zones, or AZs; these AZs are physically distinct facilities, separated out by some relatively low number of miles. One of the tenets of AWS’s global infrastructure is that both regions and AZs are designed to constrain the blast radius of failures; an outage in one AZ shouldn’t also take out another AZ in the same region. By and large this works; as a result the sensible thing to do for workloads that need to be highly available is of course to provision those workloads in multiple AZs.
The problem that I want to highlight today is that if I spin up MySQL myself on EC2 instances, I’ll have to pay 2¢ per GB that I replicate between AZs, whereas I will pay nothing if I use RDS.
At first, this seemed like a nice benefit that AWS offered as a part of its managed services–but over time I’ve seen a number of scenarios where people are using AWS’s managed service offerings rather than what they really want to be using specifically because this cross-AZ data transfer fee becomes ever more burdensome as workloads continue to scale.
This problem goes beyond just RDS’s MySQL implementation; we see it again and again across their ever-growing catalog of first-party offerings. It hits their other RDS offerings as well, including PostgreSQL, MS SQL Server, and all the rest.
If you want to run OpenSearch yourself, you’ll pay a fee to do it; replication traffic is free for AWS’s managed OpenSearch service. If you want to run MongoDB yourself, you’re once again paying that 2¢ per GB fee on going about your business, whereas if you run Amazon DocumentDB (with MongoDB compatibility) you’re giving up a lot of flexibility, in return for not being taken to the cleaners with replication traffic charges.
It’s Also Not Just Open Source Projects
This is annoying and obnoxious in its own right, but where I’m surprised it hasn’t become more of a public issue is when this is applied to other vendors–regardless if they’re an AWS Partner or not.
If I want to run OpenSearch myself, or have Elastic run Elasticsearch on my behalf, I’ll be paying for cross-AZ replication traffic because AWS has taken advantage of its position as “the only data transfer option in town” in their environment to benefit their own competitive offering.
The same applies to services from a veritable universe of database vendors, Confluent if I want to have them manage Kafka for me, Redis if I don’t want to use Amazon’s ElastiCache or MemoryDB offerings, etc. There is no third party vendor that’s exempted from the tax on cross-AZ data transfer; and yet there is no first-party managed service that AWS offers in a “cloud hosted” configuration that I’m aware of that doesn’t include free cross-AZ transfer.
If you were to ask me to point at something anticompetitive that the AWS division of Amazon does, this would be my first port of call; no other company can do anything to avoid this tax on customers, whereas AWS “bakes in the cost” to how they price their own services.
The Third-Party Tax
I’m not saying that AWS’s managed services don’t add value to customers; of course they do. I’m also not saying that this is some kind of mustache-twirling conspiracy on behalf of AWS to advantage their own services; I suspect this arose organically over time.
What I am saying is that customers now face the difficult decision to bias for cost savings vs. reliability in a particularly pointed way. “Stop using those pesky third parties and use us instead and this pain goes away” is only a fair statement when the first-party option wins on its own merits, rather than its uniquely privileged position as the sole network provider to the entire environment.
I’d like to see more adoption of AWS services due to their own merits, rather than rent-seeking value that’s built upon ways in which others aren’t fairly allowed to compete–and charging for replication traffic between everything that isn’t a managed service with “Amazon” on the label is exactly that.