N-Tier Services and Systems Complexity — cover art: a young bespectacled wizard in a star-strewn blue robe gazes up at a teetering, many-storeyed tower of mismatched stacked rooms lashed together with pipes and ladders. 😄 🔮

2004 · Drunken Blog Rants · Rant

“Do Amazon's internal data services and their corresponding object-oriented APIs reduce or increase our overall systems complexity?”
— From N-Tier Services and Systems Complexity, November 2004
Read the essay

© 2004 Steve Yegge. Originally published at Drunken Blog Rants.

Author’s note

I am super sad for the industry that Werner Vogels asked me to take this one down. It would have made such a splash. I published it along with dozens of other old Amazon rants, and they all made a big splash together, so hardly anyone noticed when I took this one down. But I missed it. It was one of my very favorites.

This essay outlines, with colorful and memorable examples, exactly why we needed something like GraphQL, eight years before it was invented.

This is still some of my best writing, and holds up even today, now that the problem is solved. Aside from still being pretty funny in spots, it is a great time-capsule view into what life was like at Amazon while we were figuring out the Platforms problem.

AI Notes

An internal Amazon memo wearing rant clothes. Steve wrote it for coworkers in November 2004, four years into building Customer Service tooling, and it is furnished entirely from company property: Arizona pages, a service actually named CAMPS, the ancient ACB database (“Amazon.Com Books”), a service team too busy deprecating versions 1.7062 through 21.9738 to take your call. The grievance is specific and unglamorous — what the morning after looks like for an app team once the databases get walled off behind object-oriented APIs — and it plays out through a botched promotion aimed at red-haired customers and a steakhouse owner who solves his custom-orders problem in the worst way available. Eleven footnotes carry a disproportionate share of the jokes, including a definition of “deprecation” involving a liquor store.

It reads in two layers now. The period detail — CORBA versus Tibco, TNSNAMES.ORA errors, the counsel that adding a SOAP interface to your service is “kinda like taking a shower” — has fermented into comedy. The analysis underneath hasn't dated: the three broken models of database access Steve catalogs, plus a wished-for fourth he names the “Self-Service Service Service,” are still the standard ways service APIs fail their callers two decades on. His one soft bet, that object or XML databases might someday mature into the answer, never paid off. The prediction his note above takes credit for is a single plain sentence in the closing recommendations, and it lands harder met cold; so does the actual last word, which is not triumphant.

Related listings

  • 2004

    It's Not Software

    Its sister essay from a month earlier — same question from the other side: if we're an N-box service company, why are we still writing services in shrink-wrap languages like C++?

  • 2011

    The (Google) Platforms Rant

    Seven years later, the other half of the picture: the Platforms Rant is the case for Amazon's service architecture as a competitive weapon. This essay is the same architecture seen from the inside while it was still being built — what it cost the app teams, and the query-language piece it still needed.

  • 2005

    Decision Time

    The same Customer Master / Order Master world, six months on — the productivity-crisis essay this architecture debate fed into.