How-To

Erlang: Die Programmiersprache, die Whatsapp antreibt

(Grafik: Shutterstock / photovibes)

Schnell, skalierbar, ausfallsicher: Das sind die drei wichtigsten Argumente, die für Erlang sprechen. Der Klassiker der funktionalen Programmiersprachen erlebt ­gerade eine ­Renaissance.


Software ohne Grenzen: Das war wohl das Ziel der kleinen Entwicklertruppe von Whatsapp, die sich bei der Auswahl der Kerntechnologie ihres Messengers 2009 für Erlang entschied. Mehr als neun Millionen Nachrichten pro Sekunde und über 450 ­Millionen aktive Clients: Das sind ­Größenordnungen, bei denen sich die nach dem dänischen Mathematiker Agner Krarup ­Erlang benannte Programmiersprache zu Hause fühlt. Whatsapps Mutterkonzern Facebook setzt bei einem Teil des Facebook-Chat-­Backends ebenfalls auf Erlang. Und auch Amazon hat sich innerhalb der Amazon Cloud bei der Entwicklung der SimpleDB für die Sprache entschieden.

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 Programmier­sprache. 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 ihres­gleichen 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 Experten­wissen 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: Arbeits­speicher 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ß.

In Erlang wird jede Aufgabe von sparsamen, autarken ­­­ User-Space-Prozessen abgearbeitet: Für stark verteile Applikationen ein enormer Stabilitätsvorteil. Whatsapp und zum Teil auch der Facebook Messenger setzen darauf. (Abbildung: Frank Hinkel, Jean Michel Malatray)

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

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Schreib den ersten Kommentar!

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.