Ein Blick auf diese prominenten Beispiele zeigt: Die schon 1987 erschienene Programmiersprache ist alles andere als ein Fall für die Mottenkiste. Im Gegenteil: Die steigende Verbreitung und wachsende Community von Erlang sprechen derzeit für eine Renaissance des Programmierurgesteins. Waren die Anwendungsfälle in der Vergangenheit eher infrastrukturell getrieben, findet Erlang heute sogar immer mehr den Weg Richtung Endanwender. Dazu verhelfen dem Ökosystem insbesondere die moderne und attraktive Programmiersprache Elixir sowie das damit realisierte Webframework Phoenix. Was macht Erlang so besonders?
Ähnlich wie Java ist Erlang nicht nur eine Programmiersprache. Hinter dem Begriff stehen auch eine Laufzeitumgebung, die Erlang VM, sowie ein Ökosystem an Tools und Bibliotheken. Die Basis der Sprache und ihres Ökosystems ist auf parallele Verarbeitung ausgerichtet. Diese Tatsache hat seit 25 Jahren Bestand und seitdem beweist Erlang eine Stabilität, die ihresgleichen sucht. Ein gutes Beispiel hierfür ist der AXD-301-Switch, welcher mit Erlang programmiert ist und dabei eine Verfügbarkeit von 99,9999999 Prozent verzeichnet. Die Fähigkeit, Millionen von Nachrichten parallel stabil und effizient abzuarbeiten, ist kein Zufall, sondern basiert auf Erlangs internen Konzepten.
In einem Erlang-System wird jede Aufgabe von sparsamen, autarken User-Space-Prozessen abgearbeitet. Diese Prozesse kommunizieren über Nachrichten miteinander und besitzen einen entsprechenden Posteingang. Diese Idee passt nicht nur perfekt zu einer Nachrichtenanwendung wie Whatsapp, sondern zu jedem Anwendungsfall, bei dem nebenläufige und unabhängige Prozesse eine Rolle spielen. Das trifft auf IoT-Systeme mit ihren individuellen Sensoren und Steuereinheiten genauso zu wie auf skalierbare Webanwendungen. Jeder Nutzer agiert im Web als eigenständiger Prozess mit seinem eigenen Speicherbereich wie beispielsweise einem Warenkorb.
Im Vergleich zu anderen Ökosystemen wie Java, welches mit Threads arbeitet, haben Erlangs Prozesse keinen shared State, also keinen geteilten Speicherbereich. Das führt zu wesentlich mehr Stabilität und verhindert ungewollte Seiteneffekte. Außerdem ist der Footprint eines solchen Prozesses extrem gering, sodass man selbst auf einem leistungsschwächeren Microcomputer tausende von Prozessen parallel starten kann – und das ohne Speicherprobleme zu erzeugen. Für diese Anwendungsfälle braucht man in Erlang kein Expertenwissen und muss auch nicht handverlesen die richtige Wahl für das korrekte Framework treffen. Man kann in dieser Hinsicht keine grundsätzlichen Fehler machen.
Ein weiterer Punkt, der den Entwicklern von Whatsapp wohl ebenfalls sehr wichtig war, ist der geringe Ressourcenverbrauch von Erlang. Gängige Webserver inklusive deren Software und Frameworks verbrauchen gerne mehrere hundert Megabyte Arbeitsspeicher, Java-Entwickler sind auch schon mal im Gigabyte-Bereich unterwegs. Mit einer Webanwendung auf der Erlang VM inklusive Tools und einem Webserver bleibt man oftmals sogar unter 20 Megabyte Arbeitsspeicherverbrauch. Dieser große Dimensionsunterschied wird schnell mit einem Lächeln abgetan: Arbeitsspeicher koste doch heutzutage nichts mehr. Dem kann man teilweise zustimmen. Der entscheidende Faktor an dieser Stelle ist aber die Entwicklungsgeschwindigkeit. Das Starten eines Erlang-Webservers inklusive Anwendung und VM dauert in der Entwicklung in der Regel zwei bis vier Sekunden. Entwickeln ohne Wartezeit ist nicht nur kostentechnisch effizienter, sondern macht auch den Entwicklern mehr Spaß.
Auch die Skalierbarkeit von in Erlang geschriebenen Anwendungen spricht für sich. Das zeigt sich am Beispiel eines MVP (Minimum Viable Product), mit dem viele erfolgreiche IT-Systeme starten: Ein kleiner Prototyp, der beweisen soll, dass die Ideen sinnvoll und realistisch sind. Software-Ingenieure haben dabei in der Regel die Aufgabe, in kurzer Zeit mit wenig Overhead und Kosten ein stabiles und vor allem erweiterbares System zu schaffen. Erweiterbarkeit hinsichtlich der nichtfunktionalen Anforderungen stellt sie dabei vor besonders große Herausforderungen. Diese sind es nämlich, die der Technologie und deren Architektur alles abverlangen. Wie schafft man es beispielsweise, dass ein kleines Stück Software später von Millionen Nutzern parallel genutzt werden kann? Der Scale-Out von Klein nach Groß wird MVP oft zum Verhängnis und sorgt dann in der Praxis dafür, dass eine komplette Neuentwicklung ansteht. Mit Erlang passiert das in der Regel nicht, denn hier ist für eine unbegrenzte Anzahl an parallel arbeiteten Clients bereits vorgesorgt. Falls der Prototyp erfolgreich wird und ein Scale-Out ansteht, sind die Entwickler sogar in der Lage, die Software horizontal auf verschiedene Server zu installieren und parallel zu betreiben.
Fehlertoleranz und Persistenz
Ein weiterer Vorteil von Erlang versteckt sich hinter dem zunächst bizarr wirkenden Appell „Let it Crash“. Dahinter steht die Erkenntnis, dass Software-Ingenieure niemals in der Lage sind, ein hundertprozentig stabiles System zu kreieren – welches sich in jeder undenkbaren Situation fehlerfrei verhält. Während andere Technologien ihren Quellcode durch Try-Catch-Blöcke punktuell abzusichern versuchen und somit enthaltene Fachlichkeit verwässern, sind Erlang-Entwickler davon überzeugt, dass das kontraproduktiv ist. Besser sei es, in einem Fehlerfall den Prozess crashen zu lassen. Dies gilt aber nur dann, wenn man darauf vorbereitet ist und für Fehlerfälle vorgesorgt hat. Glücklicherweise wird einem dazu das sogenannte Supervisor Behaviour an die Hand gegeben. Ein Prozess, welcher als Supervisor implementiert wird, verwaltet seine ihm zugeordneten Child-Prozesse. Er kontrolliert, startet, stoppt und räumt in Fehlersituationen wieder auf. Dies ist keine blanke Theorie, sondern gelebte Praxis, da es diverse auf Erlang basierende produktive Systeme gibt, die in puncto Ausfallsicherheit ihresgleichen suchen.
Bitte beachte unsere Community-Richtlinien