Nichts Passendes dabei? Stellen Sie ein, welche Inhalte Sie auf aleri.de sehen möchten:
Häufig werden die Stichworte „Web3“ und „dezentralisiert“ in einem Atemzug genannt. Sie sind ein Gegenentwurf zu den zentralisierten Plattformen, auf denen heute viele Anwendungsbeispiele laufen. Tatsächlich nimmt auf einer technischen Ebene aber schon seit vielen Jahren die Verteilungen von Applikation und Diensten weiter zu im Sinne der technischen Verteilung von APIs, Daten auf verschiedene Stationen im Netz.
Systeme des „Web2“ haben demonstriert, dass sie sehr gut skalieren können. Auch wenn Endpunkte wie aus einem Guss erscheinen (z. B. die REST-API eines Social Media Dienstes), sind sie intern als verteilte System konzipiert. Sie bestehen aus Webserver-Farmen, Datenbankclustern, Kubernetesclustern, Storage-Systeme und vielem mehr. Diese Dinge bestehen aus vielen Knoten, die untereinander kommunizieren. Den allermeisten ist aber gemein, dass sie hierarchisch gebaut sind und von zentralen Punkten aus gesteuert werden.
Am Beispiel Kubernetes: Auf einem Kubernetes-Cluster werden die eigenen Microservices auf viele Nodes automatisch verteilt, sie können dort untereinander und mit der Außenwelt kommunizieren. Die Verteilung wird aber von der Control Plane gesteuert. Die ist wiederum redundant konzipiert, stellt aber halt eine zentrale Steuerung dar.
Bei Web3-Architekturen fällt häufig das Stichwort „P2P“ – also Peer-To-Peer. Das Ganze ist schon seit längerem bekannt, z. B. durch Filesharing-Dienste. In P2P-Netzwerken [1] sind Knoten von der Idee her gleichberechtigt, ein Netzwerk kann dann selbstorganisiert und ohne zentrale Steuerung funktionieren. Als aktuelle Beispiele dafür können viele Blockchain-Netzwerke dienen, so halten aktuell fast 6.000 Knoten das Ethereum Mainnet am laufen [2].
Dabei müssen nicht alle Knoten immer direkt miteinander kommunizieren, aber der Datenaustausch ist so organisiert, dass alle schließlich zum gleichen Datenstand kommen.
Um sich dem Web3-TechStack zu nähern, können wir drei Kategorien aus der Cloud-Welt betrachten: Compute, Network und Storage. Wenn diese Dinge gelöst sind, lassen sich skalierungsfähige Anwendungen bauen.
Bezüglich Rechenpower sieht die Welt im Web3 nicht viel anders auf – natürlich läuft Backend-Code auf Servern bzw. virtuellen Maschinen und wird über APIs zugänglich gemacht. Allerdings kommt den Browsern und mobile Clients eine immer höhere Bedeutung bei. Single-Page-Applikationen können immer komplexere Anwendungslogik beinhalten und weisen schon heute im Web2 die Backends die Rolle der Datenlieferanten zu – relevante Teile der Business-Logik können auch im Browser ablaufen.
Das trifft vor allem dann zu, wenn die Logik aus Interaktion zwischen verschiedenen Browsern und Nutzern besteht. In dem Fall kann sie ohne dem Umweg über ein Backend geschehen.
Ein weiterer Anwendungsfall kommt aus dem Bereich der Blockchains und Krypto-Währungen – wenn aus einer im Browser installierten Wallet eine Transaktion auf einem Smart Contract initiiert wird.
In klassischen Web2-Architekturen ist die Verteilung relativ klar: Endgeräte wie Browser oder Mobile Clients richten Webanfragen an Backends. Die Server sind netzwerkseitig hinter Load Balancern und Firewalls verborgen, d. h. sie sind Teil lokaler Netzwerke und ihre Erreichbarkeit von außen ist streng limitiert. Anwendungen wie Chat- oder Videokonferenz-Apps benötigen technische Tricks, um die Erreichbarkeit von Endgeräten untereinander zu ermöglichen.
Bei vollständig dezentralisierten (P2P-)Systemen müssen Knoten miteinander kommunizieren und Endgeräte müssen in der Lage sein, Knoten eines P2P-Netzwerks zu lokalisieren. Perimeter-Sicherheit spielt keine so wichtige Rolle mehr, die Sicherheit muss sich aus authentifizierter und verschlüsselter Kommunikation der Knoten untereinander ergeben.
Der Schritt zum Web3 wird vermutlich weiter dafür sorgen, dass Services aus gesicherten Netzwerken herausgelöst, und dezentralisiert angeboten werden. Ein spannender Aspekt ist dabei die Erreichbarkeit – ein P2P-Netzwerk mag aus tausenden Knoten bestehen, aber wie findet eine App eine stabile Menge dieser Knoten?
Praktisch jede Anwendung benötigt Storage – relationaler und nicht-relationaler Art in Form von Datenbanken, Object Storage („S3“) und weitere. Dabei kann man schon seit einiger Zeit die Veränderung und Externalisierung als Services sehen. Man muss die eigene Datenbank nicht im Backend selber betreiben, sondern kann sie – am Beispiel von MongoDB Atlas – auch als „Cloud-Datenbank“ as-a-Service verwenden.
Web3-Architektuen sind dabei, die Lösung von Storage um neue Produkte zu erweitern wie z. B. IPFS, FileCoin oder StorJ. Daten werden dabei ggf. zerstückelt und verschlüsselt, und auf dezentralisierten Systemen gespeichert.
Wenn man nun eine Applikation für das Web3 bauen möchte, kann die in signifikanten Teilen eine andere Architektur aufweisen.
In der Tendenz geht es weg von zentralisierten Backends und klassischen Front-APIs hin zu der Anbindung verschiedener Services und der Verlagerung von Geschäftslogik in die Ebene des Clients – Browser oder Mobile.
Es geht hin zu verteilten Speicherkonzepten, die darauf ausgerichtet werden, Browseranwendung direkteren und autorisierten Zugriff zu geben, ohne die APIs der eigenen Backends zu belasten – eine direkt Weiterentwicklung aus dem Mobile Web.
Je nach Anwendungsfall können P2P-Ansätze integriert werden, um Nutzer direkt miteinander interagieren zu lassen. So können „DApps“ entstehen, die Teile der Geschäftslogik Smart Contracts einbinden. Im Extremfall wird kein eigenes Backend mehr benötigt.
Die Sicherheit einer Anwendung liegt schon heute nicht mehr darin begründet, dass ein Backend hinter einer Firewall läuft und die Daten in selbstbetriebenen Datenbanken liegen. Moderne Anwendungssicherheit liegt auch darin begründet, dass nicht nur Nutzer, sondern auch Komponenten sich authentifizieren, verschlüsselte Kommunikation verwenden und auch die Daten („at rest“) verschlüsselt werden. Web3 verlängert dabei die Reichweite bis in den Browser, wenn z. B. privaten Schlüssel eines Nutzers in einer Crypto Wallet stecken und nur dort Verwendung finden.
Im nächsten Teil werden wir diese Aspekte in ein Web3-Architekturbild verpacken und Komponenten eines möglichen Web3-TechStacks vorstellen.
Quellen
[1] https://de.wikipedia.org/wiki/Peer-to-Peer
[2] https://ethernodes.org/