we had an incident because we migrated traffic to a brand new s3...

Last year, S3’s partitioning system took down our production service.
S3 Partitions put a hard-limit on the amount of traffic your bucket can serve.
they are totally opaque, can change unexpectedly and are impossible to configure (unless you call AWS support!)
Turns out that it’s just a massive fleet of servers with real capacity limits and those servers 5xx when overloaded.
We run millions of ec2 instances a day and regularly see S3 errors in our logs.
Triggered during a migration to a new S3 bucket used for production data.
During the post-mortem we discovered the obscure S3 quirk that brought down our service.
We shard our data across extremely granular S3 prefixes, so it’s impossible for us to hit these limits.
Confused by this apparent contradiction we investigated deeper.
If you create an A/B/C prefix structure, the S3 service can dynamically choose to partition your data by A/B, or even just A!
And their load balancer will distribute load evenly across S3 partitions (not prefixes!).
Even crazier is that you can call AWS support and tell them to “pre-partition” your bucket!
The new bucket had zero history and its default partitioning was a terrible fit for our workload.
Fun fact: when an S3 server is overloaded it will return a 503 Slow Down

