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 nahezu jede Programmiersprache es unterstützt, unabhängig vom Prozessortyp Ihres Computers, und es bietet mehrere vorteilhafte Sicherheitseigenschaften, die der Browser nutzt, um unberechtigten Zugriff auf Ihre Daten oder Systemressourcen zu verhindern. Diese Eigenschaften erweisen sich außerhalb des Browsers als besonders wertvoll, vor allem wenn Sie Code isoliert oder extrem portabel ausführen möchten.
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, weshalb wir Wasm hauptsächlich für rechenintensive Aufgaben wie das Dekodieren von Videos oder die Bildbearbeitung sehen, nicht jedoch für die vollständige App-Entwicklung. Sie können Ihrer WebAssembly-Sandbox leicht Zugriff auf externe Funktionen wie aktuelle Zeitinformationen oder in Dateien gespeicherte Daten geben, aber welche APIs genau zum Einsatz kommen, hängt von der jeweiligen Anwendung ab.
Unix-Systeme erlebten eine ähnliche Entwicklung wie WebAssembly außerhalb des Browsers. Viele Anwendungen benötigten Zugriff auf gemeinsame Systemressourcen wie Netzwerk und Dateisysteme, doch jedes Betriebssystem regelte das etwas anders. Deshalb entstand POSIX als standardisierte, portable Betriebsschnittstelle – sämtliche Unix-ähnlichen Systeme konnten diese Schnittstelle übernehmen, um die Kommunikation der Programme mit dem Betriebssystem zu vereinheitlichen. So ließen sich Programme, die für ein Unix-ähnliches System entwickelt wurden, einfach auf ein anderes übertragen.
Um WebAssembly-Programmen eine standardisierte Schnittstelle zum Betriebssystem zu bieten, entstand WASI, das WebAssembly System Interface. WASI basiert wesentlich auf dem Projekt CloudABI, das seinerseits von POSIX inspiriert wurde. So eröffnete sich WebAssembly außerhalb des Browsers eine neue Welt an Möglichkeiten – Sie profitieren jetzt von allen Sicherheits- und Sandboxing-Eigenschaften von WebAssembly kombiniert mit durchdachten APIs, über die Sie auf gängige Systemressourcen zugreifen können, ohne das Sandboxing komplett aufzugeben. Natürlich denkt man dabei sofort an eine verwandte Technologie – Container. Kein Gespräch zu diesem Thema ist komplett ohne den Hinweis auf einen der einflussreichsten und meistgeteilten Beiträge 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.
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.
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.