Six years ago, Swedish programmer Jonas Bonér set about trying to crack some of the most challenging problems in distributed computing.
These included scalability, so that a system as large as the Internet of Things won’t fail no matter how large it gets; elasticity, a way of making sure that its computing problems are matched with the right hardware and software at the right time; and fault-tolerance. And he wanted to make sure his system would work in a “concurrent” world in which zillions of calculations are happening at once—and often interacting with one another.
Bonér had built compilers, runtimes and open-source frameworks for distributed applications at vendors like BEA and Terracotta. He’d experienced the scale and resilience limitations of existing technologies—CORBA, RPC, XA, EJBs, SOA, and the various Web Services standards and abstraction techniques that Java developers have used to deal with these problems over the last 20 years.
This time he looked outside of Java and classical enterprise computing for answers. He spent some time with concurrency-oriented programming languages like Oz and Erlang. Bonér liked how Erlang managed failure for services that simply could not go down—i.e., things like telecom switches for emergency calls—and how principles from Erlang and Oz might also be helpful in solving concurrency and distributed computing problems for mainstream enterprises.
In particular he saw a software concept called the actor model—which emphasizes loose coupling and embracing failure in software systems and dataflow concurrency—as a bridge to the future.