BLOG | BÜRO DES CTO

Ist WebAssembly auch außerhalb des Browsers nutzbar?

Oscar Spencer Miniaturbild
Oscar Spencer
Veröffentlicht am 26. November 2024

Kurz gesagt: ja.

WebAssembly (Wasm) hat sich als dominante Technologie herauskristallisiert, die die Webentwicklung im Sturm erobert hat. Von frühen technischen Demos wie dem beliebten Spiel Doom, das vollständig im Browser läuft , bis hin zu großen Legacy-Apps wie Photoshop, die ein vollständiges Desktop-ähnliches Erlebnis auf einer normalen Webseite bieten, ermöglicht WebAssembly völlig neue Erfahrungen in einem vertrauten Programm, das bereits auf jedem PC der Welt installiert ist.

Wasm wurde so entwickelt, dass es von nahezu jeder Programmiersprache unterstützt wird, egal welchen Prozessortyp dein Computer nutzt. Es bietet mehrere vorteilhafte Sicherheitseigenschaften, die der Browser aktiv nutzt, um unberechtigten Zugriff auf deine Daten oder Systemressourcen zu verhindern. Diese Eigenschaften erweisen sich auch außerhalb des Browsers als äußerst nützlich, besonders wenn du Code isoliert und hochgradig portabel ausführen möchtest.

Die Geschichte von POSIX unter Unix

WebAssembly hat standardmäßig keinen Zugriff auf Ressourcen des Systems, auf dem es ausgeführt wird. Es arbeitet ausschließlich mit der Manipulation von Nullen und Einsen. Deshalb nutzen wir Wasm hauptsächlich für rechenintensive Aufgaben wie Videodekodierung oder Bildbearbeitung, nicht für die vollständige Anwendungsentwicklung. Wir können Ihrer WebAssembly-Sandbox relativ einfach Zugriff auf externe Funktionen, etwa die aktuelle Uhrzeit oder in Dateien gespeicherte Daten, ermöglichen. Dabei variiert die Nutzung der APIs je nach Anwendung.

Unix-Systeme durchliefen eine Entwicklung ähnlich der von WebAssembly außerhalb des Browsers. Viele Anwendungen wollten auf gemeinsame Systemressourcen wie Netzwerk und Dateisysteme zugreifen, doch jedes Betriebssystem handhabte dies auf leicht unterschiedliche Weise. Deshalb etablierte sich POSIX als standardisierte, portable Betriebsschnittstelle – so konnten alle Unix-ähnlichen Systeme diese Schnittstelle übernehmen und die Kommunikation zwischen Programmen und Betriebssystem vereinheitlichen. Das ermöglichte außerdem, dass Programme, die für ein Unix-ähnliches System entwickelt wurden, problemlos auf ein anderes übertragen werden konnten.

Hier kommt WASI ins Spiel, die WebAssembly System Interface

Damit WebAssembly-Programme standardisiert mit einem Betriebssystem kommunizieren können, haben wir WASI, die WebAssembly System Interface, entwickelt. WASI baut hauptsächlich auf dem Projekt CloudABI auf, das wiederum von POSIX inspiriert wurde. So eröffnen sich für WebAssembly völlig neue Einsatzmöglichkeiten außerhalb des Browsers – Sie profitieren von der Sicherheits- und Sandboxing-Technologie von WebAssembly und erhalten zugleich wohlüberlegte APIs, um gängige Systemressourcen sicher zu nutzen, ohne das Sandboxing aufzugeben. Eine ähnliche Technologie liegt dabei nahe: Container. Kein Gespräch über dieses Thema ist vollständig ohne Hinweis auf einen der einflussreichsten, oft geteilten Artikel zu WASI vom Docker-Mitbegründer Solomon Hykes:

Das ist eine ziemliche Aussage. WebAssembly bietet eine portable Möglichkeit zum Verpacken von Code, der auf jeder Plattform sicher und geschützt mit nahezu nativer Geschwindigkeit ausgeführt werden kann, mit dem zusätzlichen Vorteil gegenüber Containern, dass überhaupt kein Betriebssystem vorhanden sein muss. Die meisten von Entwicklern erstellten Container verfügen über eine Art Linux-Betriebssystem, auf dem Programme ausgeführt werden, was zu Containergrößen von oft Hunderten von Megabyte oder mehreren Gigabyte führt. WebAssembly-Binärdateien bestehen aus reinem Code mit Größen oft im Kilobyte- oder einstelligen Megabyte-Bereich. Es erscheint verrückt, sich eine Welt vorzustellen, in der Entwickler nicht überall Container, sondern WebAssembly einsetzen. Doch diese Realität wird bereits Wirklichkeit: Es werden bereits mehrere Projekte entwickelt, um Wasm auf Kubernetes auszuführen.

Serverseitiges WebAssembly in der Produktion

Zahlreiche Unternehmen profitieren bereits von serverseitigem Wasm in der Produktion. Cloudflare und Fastly verfügen beide über riesige Edge-Compute-Netzwerke, die es Kunden ermöglichen, Code überall auf der Welt und so nah wie möglich an den Benutzern bereitzustellen. Beide haben sich aus strategischen Gründen für WebAssembly entschieden, um über kleine, ultra-portable Binärdateien mit schnellen Startzeiten und solider Multi-Tenancy zu verfügen. Das aufstrebende Unternehmen Cosmonic nutzt intelligente Netzwerke, um es WebAssembly-Komponenten zu ermöglichen, nahtlos miteinander zu kommunizieren, egal wo sie ausgeführt werden – sei es auf einem winzigen Gerät in Ihrer Handfläche oder auf einer Maschine, die am anderen Ende der Welt läuft. Ein weiterer Emporkömmling, Fermyon, verwendet WebAssembly, um die Server-Arbeitslastdichte massiv zu erhöhen. Das Ergebnis ist eine drastische Reduzierung der Serverkosten und eine umweltfreundlichere Computernutzung.

Wachstum außerhalb des Browsers

Zusammenfassend lässt sich sagen, dass WebAssembly, obwohl ursprünglich für das Computing im Browser entwickelt, auch außerhalb des Browsers eine hohe Lebensfähigkeit gezeigt hat. Sein Design, das verschiedene Programmiersprachen unterstützt und auf Sicherheit setzt, macht es zu einer ausgezeichneten Wahl für die isolierte Ausführung von Code und das Erreichen von Portabilität. Durch die Einführung von WASI konnte serverseitiges WebAssembly florieren. Unternehmen können nun Wasm nutzen und bessere Produkte zu wesentlich geringerer Kosteneffizienz anbieten. Das Potenzial von WebAssembly außerhalb des Browsers ist nicht nur eine Idee, sondern eine wachsende Realität für die Branche.

Weitere Informationen finden Sie in unserem vorherigen Blogbeitrag „ Warum Sie sich für WebAssembly interessieren sollten “.

Sehen oder hören Sie sich auch unseren Podcast „WebAssembly Unleashed“ an.