BLOG | BÜRO DES CTO

Warum Sie sich für WebAssembly interessieren sollten

Oscar Spencer Miniaturbild
Oscar Spencer
Veröffentlicht am 02. Oktober 2024

Die Technologie um uns herum verändert sich rasant – Sie haben vielleicht gehört, dass WebAssembly (oder kurz Wasm) bei Entwicklern und Technikbegeisterten für Aufsehen sorgt. Aber was genau ist WebAssembly und warum ist es so wichtig, dass Sie darauf achten sollten? Lassen Sie uns darauf eingehen.

Was ist WebAssembly?

WebAssembly ist im Grunde ein binärer Befehlssatz. Es ähnelt Assemblersprachen, von denen Sie vielleicht schon gehört haben, wie x86 oder ARM, verfügt jedoch über einige neue Eigenschaften und Sicherheitsgarantien. Sie schreiben Code in einer Programmiersprache wie C oder Rust und dieser Code kann in ein WebAssembly-Artefakt kompiliert werden. Da Wasm ursprünglich für das Web entwickelt wurde, bestand der größte Reiz darin, dass man Hochleistungsanwendungen im Web bei nahezu nativer Geschwindigkeit ausführen konnte, obwohl WebAssembly heute auch außerhalb des Browsers breite Akzeptanz findet.

Eine Sache, die Wasm von anderen Compilerzielen unterscheidet, ist seine Portabilität. WebAssembly-Code kann auf jeder Plattform ausgeführt werden, sofern eine Laufzeitumgebung dafür vorhanden ist, unabhängig von der zugrunde liegenden Architektur. Das bedeutet, dass Entwickler ihren Code einmal schreiben und erwarten können, dass er überall läuft – sei es unter Windows, macOS, Linux, mobilen Betriebssystemen, im Browser oder sogar auf einer Glühbirne.

Ist WebAssembly sicher?

Sicherheit ist von größter Bedeutung, insbesondere in der digitalen Welt, in der wir heute leben. Aus diesem Grund wurde bei der Entwicklung von WebAssembly Sicherheit als zentrales Designziel berücksichtigt. Lassen Sie uns einen Moment darüber nachdenken, was Webbrowser tun. Wenn Sie eine Webseite besuchen, lädt Ihr Browser unbekannten, nicht vertrauenswürdigen Code herunter und führt ihn aus – absolut furchterregend, wenn Sie genau darüber nachdenken. Die Aufgabe Ihres Browsers besteht darin, Sie und Ihr Gerät vor Schadcode zu schützen. Und genau diese Denkweise ist in WebAssembly integriert:

  1. Sandboxing: Dadurch wird der WebAssembly-Code von der Hostumgebung isoliert und kann nicht auf nicht autorisierte Daten zugreifen oder Informationen darüber ermitteln, wo der Code ausgeführt wird.
  2. Zugriff standardmäßig verweigern: WebAssembly verfügt über eine sehr strenge Deny-by-Default-Sicherheitsrichtlinie. Dies bedeutet, dass ohne ausdrückliche Genehmigung kein Zugriff auf Systemressourcen gestattet ist. Dies gilt sogar bis hin zu einfachen Ressourcen wie der Systemzeit, die überhaupt nicht verfügbar sind, sofern sie nicht ausdrücklich mit dem Wasm-Code geteilt werden.
  3. Speichergrenzen: Jede laufende WebAssembly-Instanz erhält ihren eigenen Speicherblock, über den sie nicht hinaussehen kann, und der vollständig von anderen WebAssembly-Instanzen und dem Hostspeicher isoliert ist.

Ist WebAssembly schnell?

WebAssembly wurde auf Geschwindigkeit ausgelegt. Im Vergleich zu JavaScript kann Wasm-Code dekodiert und ausgeführt werden, bevor der JavaScript-Code überhaupt analysiert werden kann. Es ermöglicht neue Erfahrungen in Browsern, bietet mit seinen Portabilitäts- und Sicherheitsgarantien aber auch eine nahezu native Leistung außerhalb des Browsers.

Warum sollte es Sie interessieren?

Es geht keineswegs darum, JavaScript zu ersetzen. Bei beiden handelt es sich um komplementäre Technologien, die so konzipiert sind, dass sie zusammenpassen und nicht miteinander konkurrieren. Für die dynamischen und interaktiven Teile von Webanwendungen ist JavaScript weiterhin erforderlich, während Wasm eher für rechenintensive Aufgaben verwendet wird.

Da WebAssembly-Code innerhalb einer Laufzeit ausgeführt wird, lässt er sich problemlos in eine vorhandene Anwendung einfügen – unabhängig davon, ob es sich um eine Webanwendung oder eine Anwendung handelt, die am Edge oder auf dem Server ausgeführt wird. Auf diese Weise können Sie Ihre Anwendung mit Code erweitern, der in nahezu jeder Sprache geschrieben ist, oder sogar mit nicht vertrauenswürdigem Code von Drittanbietern. Dadurch eignet sich WebAssembly gut für Plug-in-Systeme, da Sie in Ihrer Anwendung sicher Code ausführen können, der von Community-Mitgliedern oder Kunden bereitgestellt wurde. Das großartige Sicherheitsmodell von WebAssembly macht dies alles möglich.

WebAssembly ist effizient

WebAssembly hat im Bereich des serverlosen Computing für großes Aufsehen gesorgt. Im Vergleich zu Containern sind Wasm-Module winzig – die Größe der meisten produzierten Module liegt im Kilobyte- oder einstelligen Megabyte-Bereich, während Container leicht Hunderte Megabyte oder mehrere Gigabyte groß sein können. Neben der reinen Speichergröße löst Wasm auch das bekannte „Kaltstart“-Problem: Die Ausführung von Wasm-Code kann innerhalb von Mikrosekunden beginnen, sodass dieser nicht laufen bleiben muss, um schnell auf Anfragen reagieren zu können. Sie könnten beim Empfang einer Anfrage eine Wasm-Instanz starten, mit sehr geringen Auswirkungen auf die Latenz. Dies bedeutet, dass auf WebAssembly basierende Systeme bei fehlendem Datenverkehr bis auf Null herunterskaliert werden können – ein Segen sowohl für Mutter Natur als auch für Ihr Bankkonto.

WebAssembly ist zusammensetzbar

Meiner Meinung nach ist das WebAssembly-Komponentenmodell der eigentliche Wendepunkt. Es wird die Art und Weise, wie Entwickler Software konstruieren und zusammenstellen, grundlegend verändern, und zwar durch:

  1. Ökosystemübergreifender Zugriff: Möchten Sie die Kryptografiebibliotheken von Go, einen JSON-Serialisierer von Rust und Rechenprogramme von Python? Kein Problem. Mit dem Komponentenmodell können Sie Software aus nahezu jedem Sprachökosystem auswählen und sie so zusammenstellen, als wären sie native Bibliotheken, die alle in derselben Sprache geschrieben sind.
  2. Entwicklungsflexibilität: Verschiedene Teams innerhalb einer Organisation können das beste Werkzeug für die jeweilige Aufgabe auswählen. Sie können Programmiersprachen und Software-Stacks auswählen, die ihrem Fachwissen und ihren Projektanforderungen entsprechen, und sich darauf verlassen, dass die Ergebnisse ihres Teams nahtlos in die vollständige Anwendung integriert werden.

Einfach ausgedrückt können Entwickler Softwarekomponenten in jeder Sprache erstellen, die WebAssembly-Code erzeugen kann, und diese dann problemlos zu einer einzigen Anwendung zusammenfügen.

WebAssembly ist eine Technologie, die Ihre Aufmerksamkeit verdient. Egal, ob Sie Entwickler sind und Ihrer Anwendung neue Funktionen hinzufügen möchten, oder ob Ihr Unternehmen auf die Entwicklung skalierbarer und kosteneffizienter Lösungen ausgerichtet ist – Wasm könnte das Richtige für Sie sein. Mit seiner Weiterentwicklung und zunehmenden Unterstützung ist WebAssembly im Begriff, unsere Denkweise und unsere Interaktion mit der Softwareentwicklung neu zu definieren. Behalten Sie WebAssembly im Auge, denn es ist nicht nur die Zukunft – es ist bereits da und verändert die Software, wie wir sie kennen.

Möchten Sie mehr über WebAssembly erfahren? Sehen Sie sich den Podcast „WebAssembly Unleashed“ von F5 auf YouTube , Spotify oder Apple Podcast an.