Home › Stories
Amazon · 2002–2006

Item Six

By one former engineer's account, Jeff Bezos once ordered every Amazon team to talk to other teams only through service interfaces. Anyone who didn't would be fired.

◷ 2 min read

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.”

What this story shows

Conway's LawOnce each team could reach the others only through an interface, the lines between pieces of software became the lines between teams. Yegge says teams learned to distrust each other the way they would distrust outside developers.Inverse Conway ManeuverAmazon wanted an application made of independent services, so, by its CTO's account, it broke up its functional hierarchy into small autonomous teams, each owning one piece.Coordinating MechanismsTeams had been able to read each other's data directly. The mandate replaced that with one standard, go through the interface or not at all. Yegge lists the new machinery this took, from caps on how often any one team could call a service to a registry to find every service.Two-Pizza TeamAmazon's CTO says the new teams were kept small enough to feed with two pizzas, and each was given authority over a specific product, service or feature set.

Sources

  1. Steve Yegge, Stevey's Google Platforms Rant, Google+, October 2011 (archived copy, University of Washington CSE 452)
  2. GeekWire, Classic rant by Google engineer rips apart Google+ and describes Jeff Bezos as a micromanager, October 13, 2011
  3. Werner Vogels, Modern applications at AWS, All Things Distributed, August 28, 2019