Erlang was originally designed for non stop systems; for writing firmware's of telecom switches or banking applica¬tions; systems, which are never meant to be shutdown, even for a software maintenance or when a programming logic has to be changed or a feature had to be added.

Erlang makes it possible to replace code & functionality of an application without shutting down the program by simply phasing out the old code with new code.
But that's not it, Erlang takes it a step further by allowing both the new code and old code to exist together dur¬ing a transition; making it possible to fix bugs and upgrades in a running system without disturbing it's operation.