The encyclopedia · Software & IT · Technical decision · 1986–2003
Ericsson's Erlang switch software hit nine-nines by letting processes crash
AXD301 ran millions of calls on lightweight processes that die and restart, reaching 99.9999999% availability with 4x developer productivity.
Ericsson
the move
Telecom equipment must run for years without stopping, even during upgrades. In 1986 Joe Armstrong and colleagues at Ericsson began building a language for that world: Erlang, with lightweight processes, message passing and hot code replacement instead of shared memory and threads.
The flagship proof was the AXD301 ATM switch, announced in 1998. It runs distributed Erlang on duplicated hardware, scales from 10 to 160 Gbit/s, and is designed so hardware and software can be changed without interrupting traffic. As of 2001 it held 1.13 million lines of Erlang in 2,248 modules, and it achieved observed nine-nines reliability, 99.9999999%.
Erlang's let-it-crash philosophy, supervisor trees that restart failed processes, was also a productivity win: the HOPL history reports a four-fold increase in developer productivity on the project. The same year the AXD301 launched, Erlang was banned for new Ericsson products; in December 1998 it was released as open source instead.
why it works
- Process isolation keeps one failure from taking down the system
- Supervisors restart failures automatically, no human in the loop
- Hot code upgrade removes downtime as a deployment constraint
- Small-process model fits thousands of concurrent calls cheaply
what transfers
For systems that must never stop, invert the error strategy: expect failures, isolate them in small processes, and make recovery automatic, so the system is built to survive rather than to be perfect.
what came after
Open-sourcing Erlang in 1998 spread it far beyond Ericsson: the same model now runs RabbitMQ, Meta's WhatsApp, and Elixir/Discord systems. Inside Ericsson, the AXD301 became one of the company's most successful new products, and the thesis documented it as one of the most reliable products Ericsson ever made.
references
- Making Reliable Distributed Systems in the Presence of Software Errors (PhD thesis)
- A History of Erlang (HOPL III)
- A (Very) Brief History of Erlang
spotted an error? The archive wants to know.