In October 2011, a Google engineer named Steve Yegge wrote a long post on Google+, 4,771 words by GeekWire’s count. It was meant for his colleagues. At one point he addresses “You 150-odd ex-Amazon folks here.” But he had posted it to the whole internet by mistake. He quickly took it down. It was copied and argued over anyway.
Yegge had spent about six and a half years at Amazon before Google. The heart of his post was a story from there. One day, “back around 2002 I think, plus or minus a year,” Jeff Bezos issued a mandate. According to Yegge, it went something like this.
“All teams will henceforth expose their data and functionality through service interfaces.” Teams would talk to each other only through those interfaces. No reading another team’s database directly, no shared memory, no back doors. Which technology they used didn’t matter: “Bezos doesn’t care.” Every interface had to be built so it could one day be opened to developers outside the company.
Then item six: “Anyone who doesn’t do this will be fired.”
Item seven, “Thank you; have a nice day!”, Yegge admitted was his own joke. Six, he wrote, “was quite real, so people went to work.”
Plenty had already been written about how to build software out of services. At Amazon’s scale, Yegge wrote, all that lore was “about as useful as telling Indiana Jones to look both ways before crossing the street.”
Over the next couple of years, he says, Amazon rebuilt itself as a collection of services anyway, and its engineers found out the hard way what that costs. A pager ticket might bounce through 20 service calls before anyone found the real owner. Any team down the hall could now flood your service with requests and knock it over, so every service had to cap how much any one caller could ask of it. As he put it: “Organizing into services taught teams not to trust each other in most of the same ways they’re not supposed to trust external developers.”
Amazon’s chief technology officer, Werner Vogels, tells the company’s side without the threat. In 1998, he wrote in 2019, every Amazon development team worked on the same application, and every release had to be coordinated across every team. Amazon broke the application into services and broke its organization into small, autonomous teams, “small enough that we could feed each team with only two pizzas.”
Vogels also draws a line to what came next. Amazon’s success in building highly scalable infrastructure, he wrote, “ultimately led to the development of new core competencies and resulted in the founding of AWS in 2006.” Yegge’s version: Bezos saw that the machinery built for selling books could be turned into a computing platform for other companies.
Yegge’s whole post was really aimed at his own employer. Google, he argued, didn’t get platforms. About Amazon’s, he wrote: “Amazon’s AWS (aws.amazon.com) is incredible. Just go look at it. Click around. It’s embarrassing. We don’t have any of that stuff.”