Architecture

The interface is the asset

Amazon S3 turns nineteen this month. Its implementation has been rebuilt continuously; its API has barely moved. On what that asymmetry teaches.

Code, Noted1 min readArchitecture

Amazon S3 launched in March 2006 with a short announcement and a shorter API: put an object, get an object, list a bucket. It turns nineteen this month. The storage fleet behind it has been rebuilt, by public accounts, several times over; hard drives have turned over in generations; the internal software bears no resemblance to 2006. The API is almost untouched.

That asymmetry is the lesson, and it is worth stating precisely. An implementation is a liability that produces value; an interface is an asset that accrues it. Every year an interface holds still, more tooling, more integrations, more organizational memory and more trained engineers accumulate around it. Every year an implementation holds still, it merely ages.

The industry mostly understands this in reverse. Teams spend design review arguing implementation choices, the part that can be changed later at known cost, and wave through interface choices, the part that will outlive everyone in the room. The S3 API's authors could not have known it would become a de facto standard implemented by competitors and open-source projects alike. They only had to get the contract right once. Their successors have been free to be wrong about everything else, repeatedly, invisibly, behind it.

There is a sober corollary for enterprise systems. The twenty-year ledger inside a company survives for the same reason: not because its implementation deserves affection, but because a stable interface let three decades of the business build against it. A modernization that respects the interface can replace the implementation at leisure. A modernization that breaks the interface has volunteered to replace the whole accumulated city around it, and should price that honestly.

One rule of thumb follows. Spend interface review budget in proportion to expected lifetime, not expected complexity. A mediocre implementation behind a good interface is a Tuesday. A good implementation behind a mediocre interface is a decade of apology. Nineteen years of putting and getting objects suggests the trade has a right side.