The lack of 9c per GB to egress is the killer.
I can rent unlimited 250mbit servers for 14 euros a month from Scaleway. It is truly unmetered; I've been a customer for years and do about 40 terabytes of egress a month on this box.
AWS would charge me $3800 for the egress alone (using the calculator). That is certainly almost all pure margin for them, when Scaleway will happily let me egress 40TB a month for years on 13.99 euro per month (plus I get a low-spec bare metal server at this price too).
Yes. While there is a pretty hefty up-front cost to all the hardware and fiber interconnects AWS makes between servers, between AZs, and to the internet (probably in the millions per-dc including labor), the margin they charge per-gb is insanely high to the point where they likely made all of it back within the first day it was installed, with any extra usage in the years after being pure margin.
If we're looking only at egress, we can even find cheaper alternatives. OVH, for example, offers VPS' with 500Mbps unlimited for 10 euros a month, 1Gbps for 20 euros, etc.
It's not unlimited, but 20TB is more than enough for the most use cases.
Not really...
https://www.hostgator.com/tos/vps-tos
VPS accounts may not:
exceed a 15 minute load average greater than two (2) times the amount of CPU cores given.
run public IRCd's or malicious bots.
run any type of BitTorrent client or tracker that links to or downloads illegal content.
use an Open/Public proxy, or utilize a proxy to access illegal/malicious content.
se I/O intensive applications which adversely affect normal server operations.
I do see they have a bit of a vague way of getting out of hosting you if you're really being excessive on the network throughput. It largely sounds like as long as your network usage isn't causing other customer impacts its still unlimited. I imagine even OVH or any other hosting service will have similar terminology along the lines of any usage that negatively impacts other customers is prohibited.
https://www.hostgator.com/tos/acceptable-use-policy
You may not consume excessive amounts of server or network resources or use the Services in any way which results in server performance issues or which interrupts service for other customers. Prohibited activities that contribute to excessive use, include without limitation:
Hosting or linking to an anonymous proxy server;
Operating a file sharing site;
Hosting scripts or processes that adversely impact our systems; or
Utilizing software that interfaces with an Internet Relay Chat (IRC) network.
https://us.ovhcloud.com/order/vps/?v=3#/vps/build?selection=...
Though I don't know how well it compares.
Edit: pricing: https://us.ovhcloud.com/public-cloud/prices/#containers-and-...
But for write once, read a handful of times (e.g. a webhook system that basically is write once, read once of <32KB objects with long history for either redelivery attempts or replaying the entire stream for a point of time), request prices end up being the biggest cost.
Free per object requests is super game-able. Want 1000 free requests per second, just rotate through 100 identical objects.
1,000 reads per second is 2.6 billion per month. At S3 prices, that wound cost around $1,040.
100x storage is pretty minimal to achieve this. For example:
100x 128KiB = $0.000192/month
100x 10MiB = $0.015/month
100x 1GiB = $1.50/month
https://aws.amazon.com/s3/pricing/ https://www.backblaze.com/b2/b2-transactions-price.html
It’s great that they are happy to have a free tier, but <10RPS is only <777k per day constant. Great for small uses, but pretty easy to hit with even medium object store use-cases.
My current guess would be somewhere around S3’s $5/million writes and $0.40/million reads (with maybe a 20% discount like they’ve done with other products). Hope I’m wrong and it’s a lot lower though.
I’m probably in the minority, but I want to use an object store like this as a key/value store for <128KiB objects (write once, read a handful of times and then expire in 14-90 days).
I’d gladly pay egress, but usually the request prices (for S3 or DynamoDB) become pretty cost-prohibitive. Even services like Wasabi that, on the face of it look perfect, end up being unsuitable because the T&Cs limit maximum egress to total monthly storage volume (making the write once, read more than once for every short-lived object pretty difficult).
I’d gladly pay for a service with both “reasonable” egress and “reasonable” request prices instead of everyone trying to weight their service to one or the other.
Workers KV is also $5/million writes and $0.50/million reads[1] (more expensive than S3 which is $0.40/million reads) and often DynamoDB (which is $1.25/million 1KB writes and $0.25/million reads scaling down to 1/7th that if you use provisioned instead of on-demand).
Workers KV is also eventually-consistent with no guarantee of read-after-write, which is a pretty big limitation compared to alternatives (S3 even has immediately-consistent list operations now after write).
Durable Objects Storage is $1/million writes at 4KB and $0.20/million reads[2], which is pretty good. But you can also only access it via a Durable Object which limits its usage (especially as neither Durable Objects or its storage are in a production state with final pricing yet) and means you need to also pay for the Durable Object runtime on top fo the Storage pricing whenever you want to access that data.
[1] https://developers.cloudflare.com/workers/platform/pricing#p...
Presumably with not-a-lot of code you could write a Durable Object to have an S3 compatible API...
Given the point of R2, the fact there's $0.045/GB ingress + egress data transfer (which has been recently reduced from $0.09) when using Durable Objects.
Given the original comment is basically about egress being too expensive therefore R2 is offering to for free, Durable Objects' Store isn't a particularly good alternative to just using S3 or DynamoDB unless you're already using Workers/Durable Objects.
DynamoDB writes are priced per WCU.
A WCU will give you 1KiB written to the DB.
In On Demand, WCUs cost you (depending on region) $1.25/million writes. For Provisioned capacity, you pay about 1/7th that (but need to deal with keeping the Provisioned capacity and auto-scaler at the correct level, so in practice you can maybe get this to about 25-35% the On Demand rate when you know what your usage looks like, with further discounts for actually reserving capacity).
If you're writing 32KiB objects, this uses 32x WCU ($40/million writes) and if these objects are even updated (e.g. to change a status or similar), the update writes the entire object again.
On a performance/architecture note, DynamoDB has a hard per-partition limit of 1,000 WCU (per second). Writing larger objects can very quickly get you to these limits which increase your architectural complexity by requiring you to shard access.
Although, in practice you'd never write large objects to DDB. S3 is _only_ $5/million writes (and $0.023/GB/month vs $0.25/GB/month for DDB). If you're writing even 3+ KB (especially if you expect to need to update an item in the future) it's usually more cost effective to store these blobs in S3.
But either way, you're still going to be paying at least $5/million write requests. For multi-MB blobs, this is a non-issue. But for a K/V store of smallish objects, I think it's pretty expensive.
The underlying tech can differ depending on object size, but as a user, I want it to all transparently look like one unified store.
_Maybe_ Firebase Store for certain scenarios, but it has its own tradeoffs too.
“R2 will zero-rate infrequent storage operations under a threshold — currently planned to be in the single digit requests per second range. Above this range, R2 will charge significantly less per-operation than the major providers. Our object storage will be extremely inexpensive for infrequent access and yet capable of and cheaper than major incumbent providers at scale.”
Source: https://blog.cloudflare.com/introducing-r2-object-storage/