Amazon's API mandate
Sometime in 2002, every Amazon engineer received a memo from Jeff Bezos. It ended with two sentences: “Anyone who doesn’t do this will be fired. Thank you; have a nice day!”
By then, Amazon’s codebase had accumulated the kind of mass that always looks manageable from the inside. Werner Vogels, who became Amazon’s CTO in 2005, later described it as “a monolithic code base that included everything from content to customer service apps to the logistics of shipping packages.” Teams read each other’s databases directly. Services bypassed each other with shared memory and internal shortcuts. Nothing was cleanly bounded, and as the company scaled, the cost of that informality was compounding.
The mandate was seven points. All teams would expose their data and functionality through service interfaces. Teams must communicate only through those interfaces. No direct linking, no reading another team’s data store, no shared-memory model, no back-doors whatsoever. The underlying technology didn’t matter — HTTP, CORBA, pubsub, custom protocols were all acceptable. What was not negotiable: every interface, without exception, must be “designed from the ground up to be externalizable.” Six working rules, then the closing: “Anyone who doesn’t do this will be fired. Thank you; have a nice day!”
Enforcement fell to Rick Dalzell — ex-Army Ranger, West Point graduate, former amateur boxer, and Amazon’s senior vice president of worldwide operations. These details come from Steve Yegge, who was an Amazon engineer during the mandate years and later joined Google. In October 2011, Yegge accidentally published an internal Google memo about platform thinking to the public internet, making it the most complete surviving account of what happened in Seattle after Bezos sent his email. According to Yegge, “people went to work” with a clarity of purpose that Dalzell’s background only reinforced.
The transition was not clean. Amazon discovered that a network of services is not automatically a network of well-behaved services. Pager escalations became byzantine as failures cascaded across service chains. Every peer team was a potential denial-of-service threat — your API absorbing a neighbor team’s thundering retry loop was your problem to solve, not theirs. Monitoring, service discovery, and cross-boundary debugging all had to be built. Amazon spent years fixing a problem its own mandate had created.
When AWS launched in 2006 with S3 and EC2, it was externalizing infrastructure Amazon had already been forced to build for itself. The mandate’s insistence that every interface be “designed from the ground up to be externalizable” turned out to be a literal business strategy. S3, in its first month, ran on eight microservices. Vogels later reported it had grown to more than 235 distributed services, all connected via API.
The service boundary — not the class, not the module — became the primary unit of software composition. The industry, watching what Amazon had assembled, drew its own conclusions.
Sources
- Steve Yegge’s Google Platforms Rant (UW CSE transcript) — First-hand account of the mandate’s text, Rick Dalzell’s enforcement role, and Amazon’s cultural transformation into a services-first organization; the 2011 accidental leak that made this history public.
- The Bezos API Mandate — Nordic APIs — The seven mandate points and context on how Amazon’s platform strategy emerged from the directive.
- API Mandate: How Jeff Bezos’ memo changed software forever — Kong — Werner Vogels on the pre-mandate monolith and S3’s growth from 8 to 235+ microservices.