Getty Images/iStockphoto
Wie WebAssembly Microservices immer stärker ergänzt
Die Microservices-Architektur ist inzwischen sehr beliebt, aber auch komplex und kostenintensiv. Die Implementierung von WebAssembly kann diese Probleme verkleinern.
Die Welt der Softwareentwicklung und des Cloud Computings entwickelt sich ständig weiter. Innovationen von heute werden bald durch etwas Schnelleres, Leichteres und Leistungsfähigeres ersetzt werden.
Docker kam 2013 auf den Markt und hat die Konsistenz, Portabilität und Modularität von Anwendungscode und Infrastruktur entscheidend verändert. Microservices-Architekturen konstruieren Anwendungen als Blöcke unabhängiger Services mit hoher Skalierbarkeit und Flexibilität.
Heute verspricht WebAssembly, die Containerisierung zu verbessern, indem es sowohl auf der Client- als auch auf der Server-Seite Leistungsfähigkeit, Modularität und Portabilität bietet.
Sehen wir uns die Funktionen und Einsatzmöglichkeiten von WebAssembly genauer an und untersuchen wir seine Verbindung zu Microservices. Außerdem werden wir uns mit dem Potenzial von WebAssembly befassen, einige der Herausforderungen bei der Verwaltung von Microservices zu bewältigen, zum Beispiel die Komplexität und die Betriebskosten.
Was ist WebAssembly?
WebAssembly (Wasm) ist ein offener Standard, der es Entwicklern ermöglicht, hochwertige Weberlebnisse mit nahezu nativer Anwendungsleistung zu erstellen. Entwickler können Binärcode im Web ausführen und Programmiersprachen wie C, C++ und Rust auf die Webentwicklung anwenden. Da es sich um ein Codeformat ähnlich wie Assembly handelt, können Entwickler eine beliebige Programmiersprache und einen beliebigen Browser wählen.
Derzeit ist JavaScript die einzige Programmiersprache, die nativ in einem Webbrowser läuft. WebAssembly hingegen bietet eine nahezu native Leistung für Webanwendungen. Es parst und kompiliert den Code, bevor er in den Browser geladen wird, und liefert maschinenlesbare Anweisungen, mit denen der Browser das Programm schnell validieren und ausführen kann.
WebAssembly hat sich als ideale Wahl für die Entwicklung von Webservices erwiesen, die ein hohes Maß an Leistung erfordern. Google Earth und Figma sind auf WebAssembly umgestiegen und nutzen dessen Fähigkeit, die Ausführungsgeschwindigkeit zu erhöhen und die Ladezeit zu verkürzen.
Mit einem Wasm-Modul können Sie Rust-Programme problemlos unter Betriebssystemen wie Linux, Windows und macOS ausführen. Sie können sie auch über Hardwareplattformen hinweg einsetzen, um eine konsistente Erfahrung von der Cloud bis zum Edge zu gewährleisten.
Wasm bietet eine bessere Isolierung für Programme und reduziert die Angriffsfläche durch eine Sandbox-Umgebung. Diese Maßnahmen erschweren es bösartigem Code, auf sensible Daten zuzugreifen, die auf Ihrem System gehostet werden.
Ein weiteres Merkmal von Wasm ist, dass es Code in ein Binärformat umwandelt, das mit hoher Geschwindigkeit geladen und ausgeführt wird. Dies führt zu größerer Effizienz und besserer Leistung.
Microservices mit WebAssembly und Rust
Eine Microservices-Architektur vereinfacht das Design und die Implementierung umfangreicher Anwendungen, indem sie diese in mehrere kleinere Anwendungen (in der Regel einzelne HTTP-Endpunkte) aufteilt, die nur eine Funktion ausführen. Dieser modulare Ansatz unterstützt Entwickler bei der Skalierung von Software, obwohl er zunehmend komplexer zu verwalten ist.
Inzwischen ermöglicht Wasm nicht nur leistungsfähige Anwendungen in Webbrowsern, sondern führt auch komplexe Anwendungen in anderen Umgebungen aus. Diese Idee wird innerhalb des Wasm-Projekts der Cloud Native Computing Foundation, WasmEdge Runtime, vorangetrieben. Damit können Entwickler Micro-Anwendungen mit einzelnen HTTP-Servern ausführen. Dies ist besonders für Anwendungen geeignet, die eine dynamische Skalierung in Edge-Cloud- und serverlosen Umgebungen erfordern.
Wasm-Anwendungen sind bis zu 100-mal schneller und deutlich kleiner als Rust-Apps. Indem Sie diese Eigenschaften von Wasm-Apps nutzen, können Sie Ihre Programme in Rust kompilieren, sie in Wasm-Bytecode konvertieren und in der Cloud bereitstellen. Auf diese Weise können Sie das Rust-Programm praktisch überall sicher ausführen, mit größerer Isolation und einer erheblich reduzierten Angriffsfläche.
Was ist WASI?
WebAssembly System Interface (WASI) ist ein modularer Satz von Systemschnittstellen, der die Portabilität von WebAssembly-Code gewährleistet. Es umfasst sowohl Low-Level-Schnittstellen wie IO als auch High-Level-Schnittstellen wie Kryptographie.
Bei der Verwendung innerhalb von Browsern verwaltet Wasm den Zugriff auf das Betriebssystem. Um Wasm-Anwendungen auf Servern auszuführen, benötigen Sie jedoch eine separate Schnittstelle.
Ohne WASI müssen diese Anwendungen mit vollem Zugriff auf die Betriebssysteme ausgestattet werden. Dies bindet Wasm-Anwendungen an ein bestimmtes Betriebssystem und erhöht die Anfälligkeit.
Wasm und Docker
Obwohl WebAssembly ein neuer technischer Standard ist, hat er in der Softwarebranche bereits für Aufsehen gesorgt. Besonders bemerkenswert ist es, wenn sich Branchenführer über ihre Plattformen für ihn verbürgen.
Dazu gehört der Mitbegründer von Docker, Solomon Hykes, der auf X, früher bekannt als Twitter, schrieb: "If [Wasm plus WASI] existed in 2008, we wouldn't have needed to create Docker. That's how important it is. WebAssembly on the server is the future of computing. A standardized system interface was the missing link. Let's hope WASI is up to the task!" (Hätte es [Wasm plus WASI] bereits 2008 gegeben, hätten wir Docker nicht entwickeln müssen. Das zeigt, wie wichtig es ist. WebAssembly auf dem Server ist die Zukunft der Datenverarbeitung. Eine standardisierte Systemschnittstelle war das fehlende Glied. Hoffen wir, dass WASI dieser Aufgabe gewachsen ist!)
Im Jahr 2022 hat Docker die technische Preview von Docker plus Wasm veröffentlicht, die zeigt, wie sich die beiden Technologien ergänzen.
Für Wasm ist es noch zu früh, aber die Technologie sieht vielversprechend aus.
Der Weg in die Zukunft mit WebAssembly
Die Microservices-Architektur ist auf dem Vormarsch. Sie ist hochgradig skalierbar und ermöglicht es Benutzern, verschiedene Technologien für verschiedene Dienste zu verwenden. Die Verwendung von Microservices kann die Betriebskosten erhöhen. Die Verwaltung wird komplexer, wenn die Zahl der kleinen Blöcke unabhängiger Dienste steigt.
WebAssembly kann die Antwort auf die Herausforderungen bei der Verwaltung von Microservices sein. Es ist leichtgewichtig, bietet plattformübergreifende Portabilität und ermöglicht eine nahezu native Ausführung von Code. Entwickler können ihre bevorzugte Sprache verwenden und verschiedene Komponenten integrieren, um bessere Software zu erstellen. WebAssembly ist eine vielversprechende Option für Unternehmen, um komplexe Webservices zu entwickeln, die überall ausgeführt werden können.