Live data from Hacker News

How AWS S3 serves 1 petabyte per second on top of slow HDDs

bigdata.2minutestreaming.com

51–60 of 172 posts

Re: How AWS S3 serves 1 petabyte per second on top of slow HDDs

#51
post #50
post #17

I enjoyed this article but I think the answer to the headline is obvious: parallelism

That's like saying "how to get to the moon is obvious: traveling"

I dunno, the article's tl;dr is just parallelism.

Data gets split into redundant copies, and is rebalanced in response to hot spots.

Everything in this article is the obvious answer you'd expect.

Re: How AWS S3 serves 1 petabyte per second on top of slow HDDs

#52
post #10
post #9

So is any of S3 powered by SSD's? I honestly figured that it must be powered by SSD for the standard tier and the slower tiers were the ones using HDD or slower systems.

I always assumed the really slow tiers were tape.

My own assumption was always that the cold tiers are managed by a tape robot, but managing offlined HDDs rather than actual tapes.

Re: How AWS S3 serves 1 petabyte per second on top of slow HDDs

#53
post #11

Does anyone know what is the technology stack of S3? Monolith or multiple services? I assume would have lots of queues, caches and long running workers.

I was an SDE on the S3 Index team 10 years ago, but I doubt much of the core stack has changed. S3 is comprised primarily of layers of Java-based web services. The hot path (object get / put / list) are all served by synchronous API servers - no queues or workers. It is the best example of how many transactions per second a pretty standard Java web service stack can handle that I’ve seen in my career. For a get call,…

> The hot path (... list) are all served by synchronous API servers

Wait; how does that work, when a user is PUTting tons of objects concurrently into a bucket, and then LISTing the bucket during that? If the PUTs are all hitting different indexing-cluster nodes, then...?

(Or do you mean that there are queues/workers, but only outside the hot path; with hot-path requests emitting events that then get chewed through async to do things like cross-shard bucket metadata replication?)

Re: How AWS S3 serves 1 petabyte per second on top of slow HDDs

#54
post #3

Is there an open source service designed with HDDs in mind that achieves similar performance? I know none of the big ones work that well with HDDs: MinIO, Swift, Ceph+RadosGW, SeaweedFS; they all suggest flash-only deployments. Recently I've been looking into Garage and liking the idea of it, but it seems to have a very different design (no EC).

I would say that Ceph+RadosGW works well with HDDs, as long as 1) you use SDDs for the index pool, and 2) you are realistic about the number of IOPs you can get out of your pool of HDDs.

And remember that there's a multiplication of iops for any individual client iop, whether you're using triplicate storare or erasure coding. S3 also has iop multiplication, which they solve with tons of HDDs.

For big object storage that's mostly streaming 4MB chunks, this is no big deal. If you have tons of small random reads and writes across many keys or a single big key, that's when you need to make sure your backing store can keep up.

Re: How AWS S3 serves 1 petabyte per second on top of slow HDDs

#55
post #3

Is there an open source service designed with HDDs in mind that achieves similar performance? I know none of the big ones work that well with HDDs: MinIO, Swift, Ceph+RadosGW, SeaweedFS; they all suggest flash-only deployments. Recently I've been looking into Garage and liking the idea of it, but it seems to have a very different design (no EC).

Doing some light googling aside from Ceph being listed, there's one called Gluster as well. Hypes itself as "using common off-the-shelf hardware you can create large, distributed storage solutions for media streaming, data analysis, and other data- and bandwidth-intensive tasks." It's open source / free to boot. I have no direct experience with it myself however. https://www.gluster.org/

Gluster has been slowly declining for a while. It used to be sponsored by RedHat, but tha stopped a few years ago. Since then, development slowed significantly.

I used to keep a large cluster array with Gluster+ZFS (1.5PB), and I can’t say I was ever really that impressed with the performance. That said — I really didn’t have enough horizontal scaling to make it worthwhile from a performance aspect. For us, it was mainly used to make a union file system.

But, I can’t say I’d recommend it for anything new.

Re: How AWS S3 serves 1 petabyte per second on top of slow HDDs

#56
post #11

Does anyone know what is the technology stack of S3? Monolith or multiple services? I assume would have lots of queues, caches and long running workers.

There's a pretty good talk on S3 under the hood from last year's re:Invent: https://www.youtube.com/watch?v=NXehLy7IiPM

Re: How AWS S3 serves 1 petabyte per second on top of slow HDDs

#57
post #50
post #17

I enjoyed this article but I think the answer to the headline is obvious: parallelism

That's like saying "how to get to the moon is obvious: traveling"

Thank you for setting me up for this...

It's not exactly rocket science.

Re: How AWS S3 serves 1 petabyte per second on top of slow HDDs

#58
post #9

So is any of S3 powered by SSD's? I honestly figured that it must be powered by SSD for the standard tier and the slower tiers were the ones using HDD or slower systems.

It's assumed that the new S3 Express One Zone is backed by SSDs but I believe Amazon doesn't say so explicitly.

I've always felt it's probably a wrapper around the Amazon EFS due to the similar pricing and that S3 One Zone has "Directory" buckets, a very file system-y idea.

Re: How AWS S3 serves 1 petabyte per second on top of slow HDDs

#59
post #11

Does anyone know what is the technology stack of S3? Monolith or multiple services? I assume would have lots of queues, caches and long running workers.

Microservices for days. I worked on lifecycle ~5 years ago and just the Standard -> Glacier transition path involved no fewer than 7 microservices. Just determining which of the 400 trillion keys are eligible for a lifecycle action (comparing each object's metadata against the lifecycle policy on the bucket) is a massive big data job. Always was a fun oncall when some bucket added a lifecycle rule that queued 1PB+ of…

I used to work on the backing service for S3's Index and the daily humps in our graphs from lifecycle running were immense!

Re: How AWS S3 serves 1 petabyte per second on top of slow HDDs

#60
post #11

Does anyone know what is the technology stack of S3? Monolith or multiple services? I assume would have lots of queues, caches and long running workers.

I was an SDE on the S3 Index team 10 years ago, but I doubt much of the core stack has changed. S3 is comprised primarily of layers of Java-based web services. The hot path (object get / put / list) are all served by synchronous API servers - no queues or workers. It is the best example of how many transactions per second a pretty standard Java web service stack can handle that I’ve seen in my career. For a get call,…

Rest assured STUMPY was replaced with another home grown protocol! Though I think a stream oriented protocol is a better match for large scale services like S3 storage than a synchronous protocol like HTTP.
Post reply on HN