One way Erlang achieves nine-nines application availability is by having a rock-solid release-management system. Elixir makes this system easy to use.
Before we get too far, let’s talk terminology.
A release is a bundle that contains a particular version of your application, its dependencies, its configuration, and any metadata it requires to get running and stay running. A deployment is a way of getting a release into an environment where it can be used.
A hot upgrade is a kind of deployment that allows the release of a currently running application to be changed while that application continues to run—the upgrade happens in place with no user-detectable disruption.
In this section we’ll talk about releases and hot upgrades. We won’t dig too deeply into deployment.