News for hackers. Stuff that matters.
Re:Tarsnap outage (July 2-3, 2023) postmortem by throwawaaarrgh on Thursday July 27, 2023 @08:23AM (#36892377)
Forget about software or data architecture. S3 is the most reliable data storage mechanism in the world, and insanely simpler than a relational database. There is no operational failure mode to S3, other than "region went down". There is no instance to go down, no replication to fail, no worry about whether there's enough capacity for writes or too many connections, no thought to a schema, no migrations to manage, no storage to grow, no logs to rotate, no software to upgrade on a maintenance window. Plus S3 is versioned, has multiple kinds of access control built in, is a protocol supported by many vendors and open source projects, and is (on AWS) strongly read-after-write consistent. I would also argue (though I don't have figures) that it's faster than RDS. Almost guaranteed it's cheaper. And it's integrated into many services in AWS making it easier to build more functionality into the system without programming.

On a less technical note: Always avoid the fancy option when it makes sense. (From a veteran of building and maintaining large scale high performance high availability systems)

Re:Tarsnap outage (July 2-3, 2023) postmortem by zetalyrae on Thursday July 27, 2023 @08:34AM (#36892492)
>S3 is the most reliable data storage mechanism in the world

S3 is not the problem here. The problem is building a database on top of S3, and having to reimplement all the consistency, atomicity, transactions etc. on top.

>no thought to a schema, no migrations to manage

There is, in fact, always a schema. Some people choose to ignore it's there, to their detriment.

>Always avoid the fancy option when it makes sense.

It's not the 1980s. Postgres is not fancy, and Greenspunning it is a mistake.

>Almost guaranteed it's cheaper.

Cheaper than a 26-hour outage?

Re:Tarsnap outage (July 2-3, 2023) postmortem by bastawhiz on Thursday July 27, 2023 @08:42AM (#36892569)
> having to reimplement all the consistency, atomicity, transactions etc. on top.

Most of those problems are moot if you're only ever writing from a single head node. If all your data is strictly ordered and you have no meaningful concurrency, this is a far, far simpler system.

Re:Tarsnap outage (July 2-3, 2023) postmortem by zetalyrae on Thursday July 27, 2023 @08:47AM (#36892618)
Did I fall into a timewarp into the 70's? How on Earth, by what sane standard, is a Postgres instance too complex? If you're `fopen`ing files as a "database" you are wasting your time and lowering the world's economic productivity.

Complex is Greenspunning a database and having it blow up in your face and cause a twenty-six hour outage. You never hear about such things with Postgres because Postgres is rock-solid.

Re:Tarsnap outage (July 2-3, 2023) postmortem by bastawhiz on Thursday July 27, 2023 @11:31AM (#36895091)
I'm not defending the choice to use S3. I probably wouldn't have made the same choice. But I am pointing out that it's empirically wrong to say that storing data in flat files necessitates the considerations of an ACID-capable RDBMS.

But to your point, if your system requires less than a thousand lines of code to open a file, do basic parsing and processing (which no data storage system is going to do anyway), and write the output to another file, I personally can't say that Postgres or MySQL or any other solution is really worth the effort/cost to build and maintain. In the system being discussed, the benefits of an RDBMS simply don't matter: any strongly consistent key-value store would work.

> Complex is Greenspunning a database and having it blow up in your face and cause a twenty-six hour outage.

S3 didn't cause the outage, and from the look of it, neither did the code that processes the files. It was an application logic problem which caused issues during the restore process, and this would have been an issue regardless.

You could make an argument that the recovery being slower than it could have been was a problem, but it's wild to say that and imply that traditional databases have no performance cliffs. Especially when dealing with corruption or data recovery. Raw file storage will never have a Postgres transaction id wraparound incident (see: Sentry outage for most of a day in 2015, MailChimp/Mandrill for over a day in 2019) or have to rebuild a critical index.

In this case there was a hard coded concurrency limit with S3 of 250 outstanding requests. Bumping that up to 3000 would have been easy and reasonable (S3 rate limits at 5000). How confident would you be that your database can performantly handle a backfill during recovery? Have you provisioned enough iops? Are you running an RDS instance with only a burstable vCPU limit? To say Postgres is "rock-solid" (and make no mistake, I am a Postgres fanboy) dismisses the many and varying ways that it can fail in unusual and surprising ways.

Re:Tarsnap outage (July 2-3, 2023) postmortem by khiqxj on Thursday July 27, 2023 @04:09PM (#36899445)
ok boomer
Re:Tarsnap outage (July 2-3, 2023) postmortem by dang on Saturday July 29, 2023 @03:46PM (#36923842)
Could you please stop posting unsubstantive comments and flamebait? You've unfortunately been doing it repeatedly. It's not what this site is for, and destroys what it is for.

If you wouldn't mind reviewing https://news.ycombinator.com/newsguidelines.html and taking the intended spirit of the site more to heart, we'd be grateful.

Re:Tarsnap outage (July 2-3, 2023) postmortem by throwawaaarrgh on Thursday July 27, 2023 @08:40AM (#36892549)
> having to reimplement all the consistency, atomicity, transactions etc. on top.

Did you miss where I said it's read-after-write strongly consistent?

Re:Tarsnap outage (July 2-3, 2023) postmortem by zetalyrae on Thursday July 27, 2023 @08:41AM (#36892562)
Having those things at the base layer is not the same as having them in higher-level behaviour. This is why God invented SQL transactions.
Re:Tarsnap outage (July 2-3, 2023) postmortem by mattigames on Thursday July 27, 2023 @10:08AM (#36893778)
I never knew Donald Chamberlin and Raymond Boyce were God, it doesn't sound right but I don't know enough about theology to refute it.
Re:Tarsnap outage (July 2-3, 2023) postmortem by nemothekid on Thursday July 27, 2023 @03:57PM (#36899269)
>Cheaper than a 26-hour outage?

AFAICT, using HN theres been roughly 30 hours of non-availability over 15 years. RDS didn't even support Postgres when Tarsnap was released.

EDIT: Tarsnap predates RDS.

Re:Tarsnap outage (July 2-3, 2023) postmortem by ilyt on Thursday July 27, 2023 @08:28AM (#36892430)
The "fancy" option here is trying to act S3 to act like database instead of simple blob storage...
Re:Tarsnap outage (July 2-3, 2023) postmortem by throwawaaarrgh on Thursday July 27, 2023 @08:35AM (#36892494)
Fancy would be writing an application to talk to RDS, creating an RDS instance, creating a database, creating whatever IAM link is needed for auth into the db so you don't need a second set of credentials, creating a schema, creating columns with different data types, and then modifying the application to handle edge cases for the different data types, logic to insert, update, delete rows, select items, yadda yadda yadda.

Dumb is `aws s3 cp` and being done in 5 minutes.

Re:Tarsnap outage (July 2-3, 2023) postmortem by zetalyrae on Thursday July 27, 2023 @08:39AM (#36892544)
If you think creating a database schema is the software equivalent of the Long March, you should find another profession. Types are good, schemas are good, and nobody needs couldn't care less Unix cowboys who build everything out of bash and bailing wire.
Re:Tarsnap outage (July 2-3, 2023) postmortem by HumanOstrich on Thursday July 27, 2023 @11:00AM (#36894629)
This comment is unnecessarily antagonistic, and you are consistently and willfully missing all the points in your replies.

He could have set up a more complex architecture and paid much more in hosting costs over the years to overengineer the solution. What would the benefits be? It might have avoided this one outage or saved a few hours restoring the data. The drawbacks? Much more time developing and maintaining the solution and higher subscription costs for users.

The solutions you are familiar with and comfortable with are perfectly valid. But you are falling into the trap of thinking "what I'm familiar with and comfortable with is the only valid answer and everyone else is wrong and stupid".

Re:Tarsnap outage (July 2-3, 2023) postmortem by dang on Thursday July 27, 2023 @02:15PM (#36897907)
Please see https://news.ycombinator.com/item?id=36897868 and please stop posting in the flamewar style to HN. Regardless of how right you are / how much smarter you are or feel you are, it's exactly what the rules here ask you not to do. We're trying for a very different quality of conversation here.

https://news.ycombinator.com/newsguidelines.html

Re:Tarsnap outage (July 2-3, 2023) postmortem by zetalyrae on Thursday July 27, 2023 @06:11PM (#36900831)
You're right, that was uncalled for. I apologize for lowering the quality of site.
Re:Tarsnap outage (July 2-3, 2023) postmortem by dang on Friday July 28, 2023 @04:13PM (#36912657)
Thanks for the kind reply.
Re:Tarsnap outage (July 2-3, 2023) postmortem by ilyt on Thursday July 27, 2023 @08:58AM (#36892734)
I envy job where you think a database is something fancy and hard to do...
Re:Tarsnap outage (July 2-3, 2023) postmortem by otabdeveloper4 on Thursday July 27, 2023 @10:10AM (#36893813)
I'm only wildly guessing here, but most likely the "cloud storage" backing all those managed databases is actually S3-like blob storage under the hood.
Re:Tarsnap outage (July 2-3, 2023) postmortem by zetalyrae on Thursday July 27, 2023 @10:14AM (#36893893)
The database engine implements ACID and crash recovery so you don't have to. This is precisely what failed in this outage.