Środowisko uruchomieniowe Erlanga zostało zaprojektowane, aby efektywnie radzić sobie z obsługą dużej liczby procesów. Wynika to nie tylko z chęci udostępnienia aplikacjom erlangowym większych zasobów, lecz także z faktu, iż konstrukcja języka zachęca programistę do tworzenia procesów w miejscu, gdzie w innych językach stosowane były mechanizmy sekwencyjne. Erlang potrafi wykorzystywać możliwości maszyn wieloprocesorowych, a także skalować aplikację na środowisko sieciowe w sposób przezroczysty – model współbieżności sprawia, że z punktu widzenia procesu nie ma różnicy między komunikacją z innym procesem uruchomionym na tym samym a na odległym węźle.

Długodziałające systemy są narażone na różnego rodzaju awarie, związane zarówno z błędami w oprogramowaniu, jak i problemami sprzętowymi. Istotnym celem Erlanga było zapewnienie możliwości obsługi sytuacji krytycznych już na poziomie języka. Środowisko uruchomieniowe raportuje wszystkie błędy jako wyjątki. Procesy mogą śledzić się nawzajem, dzięki czemu możliwe jest wykrycie awarii jednego z nich i jego ponowne uruchomienie.