Things Have History
Service-oriented architecture: three specifications and a decade of optimism

software-architecture

Service-oriented architecture: three specifications and a decade of optimism

Listen · 4:46

In June 1998, a developer named Dave Winer had run out of patience with Microsoft. He and engineers at Redmond — Don Box, Bob Atkinson, Mohsen Al-Ghosein — had been designing a protocol for remote procedure calls over the internet using XML, clean work that Microsoft was somehow managing to delay through departmental politics. Winer went home and published a stripped-down version himself: XML-RPC, shipped as part of his Frontier 5.1 software. Don Box later explained the holdup simply as “politics within Microsoft.” The specification that eventually emerged — SOAP 1.0, published in late 1999 — inherited the idea and the impatience in equal measure.

The concept behind it was older still. In October 1996, Gartner analysts Roy Schulte and Yefim Natis had coined the phrase “service-oriented architecture” to describe a style of computing where organizations exposed their logic as discrete, reusable services. The infrastructure did not exist yet. Enterprise integration was a tangle of CORBA, DCOM, and proprietary middleware, each system speaking its own protocol. Schulte and Natis were describing a world that would take five more years to become buildable.

What made SOA buildable was a three-part stack that arrived between 2000 and 2001. SOAP 1.1 provided the envelope — a standard format for sending messages between systems over HTTP, published as a W3C Note on May 8, 2000. WSDL gave each service a machine-readable description of what it offered and how to call it. UDDI was the registry: a directory where services could list themselves so other systems could discover them automatically. By March 2001, when WSDL 1.1 landed at the W3C, IBM, Microsoft, and Sun had declared the enterprise integration problem as good as solved. Any computer on earth could now find any other computer’s services, read the contract automatically, and make the call without human mediation.

The industry had not been warned about what “solved” was going to look like in practice. Over the following years, vendors bolted security specifications onto the stack, then reliable delivery, then distributed transactions, then business process choreography. The resulting galaxy of “WS-*” standards grew dense enough that developers gave it a nickname: the “WS-Deathstar.” The IBM and BEA products that implemented these specifications — Enterprise Service Buses, sold to orchestrate all this traffic — were among the most complicated pieces of software money could buy in 2004.

On January 1, 2009, Burton Group analyst Anne Thomas Manes published a blog post with a specific date on the death certificate: SOA had died on that very day, killed by the 2008 recession’s elimination of IT budgets that had been sustaining projects that were never quite working. Her argument was not that services were a wrong idea, but that the WS-* machinery had displaced the point. “People forgot what SOA stands for,” she wrote. “They were too wrapped up in silly technology debates.” After millions invested, systems were no better than before — costs higher, projects longer, systems more fragile.

What SOA did accomplish, beneath the specification stack, was force a generation of architects to think in terms of contracts and explicit interfaces. The discipline — define what you expose, hide everything else — reappears in every microservice, every REST endpoint, every gRPC schema written in the twenty years since. The pipes got dumber. The endpoints got smarter. The specifications got shorter.

The acronym died in 2009. The question it was asking — how do independently deployable pieces of software talk to each other without collapsing — kept going. It just turned out to require a lighter answer than anyone had planned to write.

Sources

Spot a mistake?

Wrong date, broken citation, a fact that doesn't hold? Tell us. It lands in an inbox a human reads and the post can be pulled or corrected.