Last week I attended the second annual Erlang Factory 2010 conference in San Francisco. Erlang, is a programming language and runtime environment (which means it has it's own virtual machine, unlike most languages). For example you would develop your application using the Erlang programming language and then run it in an Erlang virtual machine on top of your operating system. This added level of abstraction allows your Erlang application to run on any system that can support the Erlang virtual machine. During that conference I delivered a 10-minute presentation on Erlang in Healthcare, how the Voalté server is powered by this new technology and what it can offer other developers in the healthcare community.
Who is using Erlang in Healthcare? As far as I know, Voalté is the only company using Erlang in production software within the healthcare market. Please comment if you know of any other companies. We would love the opportunity to share best practices and discuss how to better evangelize Erlang in the healthcare space.
Why are we using Erlang? Ericsson, the European telecommunication supplier, developed Erlang in their research labs during the mid-1980's for the following reasons:
Concurrency - Erlang's main strength lies within its support for multi-core CPU's. Erlang is designed around the idea of extremely lightweight "processes" that communicate via asynchronous message passing,, thus avoiding the complexity and performance impact of threads and memory locks.
Distribution - Erlang was designed to be run in a distributed environment with each Erlang virtual machine referred to as a node. A network of these nodes on different machines can communicate as if they were all on the same computer. This built-in distribution makes it very easy to create a cluster of computers running your application.
Fault-tolerance - Erlang will continue to operate if a node goes down or becomes unreachable. Erlang processes can be linked to each other so if one fails the other process is immediately notified and could restart the crashed process. Therefore crashes in an Erlang application are not the end of the world because they can restart immediately in a manner that is transparent to the end user.
Robustness – Erlang’s error detection can be used to fail-over to other nodes and Erlang's use of pattern matching allows for a "catch all." This makes designing and prototyping new features easier because you don't have to specify, in advance what types of objects you can receive.
Soft real-time – Erlang’s response times are in the order of milliseconds, which is excellent for failover support.
Hot-code swapping – Erlang code can be changed without stopping a system, something no other runtime system has built-in. This is one of the coolest features, that can permit users to update code without stopping their application and thus enable continuation of an application.
Healthcare, like telecommunications has the same general system requirements, which are distributed high-availability systems. Point of Care workers need to receive and respond to realtime data from nurse call, patient monitoring and smart medical devices. Erlang was designed and created from the ground up to make creating these types of distributed high-availability systems practical. Voalté embraced Erlang's sophisticated functionality, which allowed us to produce a product that was ready to pilot in an impressive time frame of only six months. In addition, the hot-code swapping aspect has allowed us to update our server while causing minimal system interruption to the end users.
It's an exciting time to be apart of the Erlang community. Bjarne Däcker, one of the fathers of Erlang, presented the growth curve for Erlang and it’s starting to look like a hockey stick curve (hopefully just like Voalté sales!). Erlang is being adopted by many leading companies such as Facebook for their chat system, Yahoo, E*trade, and Chrysler, just to name a few. At the Erlang Factory conference I had the opportunity to meet many people using Erlang in their applications including the founders of the Erlang language. It was great to get their feedback on Voalté and to hear their stories about creating this great platform that is at the heart of the Voalté Server.