Definition

Verteilte Anwendungen (Distributed Applications)

Verteilte Anwendungen (Distributed Apps) sind Anwendungen oder Software, die in verschiedene Aufgaben aufgeteilt auf mehreren Computern innerhalb eines Netzes sowie in der Cloud gleichzeitig laufen. Das unterscheidet sie von herkömmlichen Anwendungen.

Verteilte Anwendungen laufen auf verteilten Computersystemen, das heißt auf einer Sammlung unabhängiger Computer, die für den Benutzer wie ein einziges System erscheinen. Die Computer in einem verteilten System arbeiten gleichzeitig und fallen unabhängig voneinander aus. Sie sind außerdem asynchron, das heißt, es gibt keine Synchronisation zwischen ihren internen Uhren. Zusätzlich zu Netzwerken oder Cloud-Plattformen werden viele verteilte Anwendungen auch auf Blockchain-basierten Plattformen entwickelt und bereitgestellt.

Verteilte Anwendungen sind widerstandsfähiger gegen bestimmte Cyberangriffe, da sie keinen SPoF (Single Point of Failure) haben.

Wie funktionieren verteilte Anwendungen?

Verteilte Anwendungen können von einem beliebigen geografischen Standort aus mit mehreren Servern oder Geräten im selben Netzwerk kommunizieren. Der verteilte Charakter der Anwendungen bezieht sich darauf, dass die Daten über mehr als einen Computer in einem Netzwerk verteilt sind.

Verteilte Anwendungen sind in zwei separate Modelle unterteilt – die Client-Software und die Server-Software. Die Client-Software oder der Computer greift auf die Daten aus der Server- oder Cloud-Umgebung zu, während der Server oder die Cloud die Daten verarbeitet. Cloud Computing ist eine weitere Option, um die Daten oder Programme einer verteilten Anwendung zu hosten. Fällt eine verteilte Anwendungskomponente aus, kann eine andere Komponente sie ersetzten, um weiterzulaufen.

Verteilte Anwendungen ermöglichen mehreren Benutzern den gleichzeitigen Zugriff auf die Anwendung. Viele Entwickler, IT-Fachleute oder Unternehmen entscheiden sich für das Speichern verteilter Anwendungen in der Cloud, weil diese elastisch und skalierbar ist und große Anwendungen oder Workloads bewältigt. Die Cloud selbst basiert ihrerseits auf verteiltem Computing.

IT-Teams können Container-Technologie wie Docker verwenden, um verteilte Anwendungen zu verpacken und bereitzustellen. Die Container tragen auch maßgeblich zur Portabilität bei.

Virtuelle Mashcinen versus Container
Abbildung 1: Container hosten verteilte Anwendungen unabhängig von der zugrundeliegenden Hardware.

Architekturen für verteilte Anwendungen

Verteilte Anwendungen müssen auf mehr als einem Server gehostet werden, um ihre Vorteile zu nutzen. Sie stützen sich auf verteilte Systeme, das heißt ein Netzwerk von Rechnern, die Informationen senden und empfangen, die an verschiedenen Orten verteilt und in einer Architektur organisiert sind. Verteilte Anwendungen lassen sich anhand der Grundlage ihrer zugrunde liegenden Netzwerkarchitektur in die folgenden Kategorien einteilen:

  • Client-Server. In einer Client-Server-Architektur fordern mehrere Clients oder Workstations Ressourcen wie gemeinsame Dateien oder Drucker von Servern über das Internet an. Die Clients stellen dem Server keine Ressourcen zur Verfügung.
  • Serviceorientierte Architektur. In einer SOA werden Softwarekomponenten durch Dienstschnittstellen interoperabel und wiederverwendbar gemacht.
  • Microservices-Architektur. Bei einer Microservices-Architektur werden Softwaresysteme in einzelnen Funktionsmodulen und Diensten entwickelt, wobei jeder Dienst zusammen mit seinen Daten separat enthalten ist.
  • Peer-to-Peer. In einer P2P-Architektur gibt es keinen zentralen Server und jeder Knoten im Netzwerk hat die gleichen Aufgaben. Blockchain verwendet eine P2P-Netzwerkarchitektur.

In verteilten Client-Server-, Server-orientierten und Microservices-Architekturen kommunizieren die Knoten typischerweise über einen Broker, nicht direkt. Es gibt einen Vermittler – oft eine Anwendungsprogrammschnittstelle (API), die das Routing der geteilten Ressourcen übernimmt.

Beispiele für verteilte Anwendungen

Ein typisches Beispiel für eine verteilte Anwendung ist eine E-Commerce-Plattform, die verschiedene Funktionen der Anwendung auf verschiedene Computer in ihrem Netzwerk verteilt. Auf den Servern oder Computern werden verschiedene Funktionen ausgeführt, zum Beispiel:

  • Annehmen von Zahlungen von Kunden an der Kasse.
  • Aktualisieren der Kundenliste mit neuen Registrierungen.
  • Beantworten von Kundenfragen mit einem Chatbot.
  • Verarbeiten von Produktbewertungen von Kunden.
  • Analysieren der Kundenhistorie für gezielte Werbung.

Jede Anwendung, die Daten an einem Ort erzeugt und an einem anderen speichert sowie weiterverarbeitet, kann als verteilte Anwendung betrachtet werden. Verteilte Webanwendungen kommen hauptsächlich in Szenarien vor, in denen Fehlertoleranz, Skalierbarkeit und gemeinsame Nutzung von Ressourcen erforderlich sind.

Ein weiteres Beispiel für eine verteilte Anwendung ist der Webbrowser Tor, der ein verteiltes Overlay-Netzwerk zur Anonymisierung von auf dem Transmission Control Protocol basierenden Anwendungen verwendet.

Weitere Beispiele für verteilte Anwendungen sind

  • Bankanwendungen;
  • Börsenanwendungen;
  • Webbrowser;
  • Streaming-Dienste;
  • Rideshare-Anwendungen;
  • Anwendungen für Lebensmittellieferungen; und
  • Massively Multiplayer Online Games.

Betriebssysteme (OS) sind ein weiteres Beispiel für eine Anwendung, die verteilt werden kann. Verteilte Betriebssysteme können auf eine Reihe physisch unabhängiger Knoten laufen, die jeweils eine andere Aufgabe des zusammengesetzten Betriebssystems übernehmen und von mehreren CPUs bedient werden.

Wie die Blockchain verteilte Anwendungen nutzt

Eine Blockchain ist eine verteilte Datenbank, die von mehreren Knoten in einem Computernetzwerk unterstützt und von diesen gemeinsam genutzt wird. Blockchains – wie Bitcoin – wirden am häufigsten als verteiltes Hauptbuch für Kryptowährungstransaktionen verwendet.

Es gibt viele Arten von Blockchains, und sie dienen zum Speichern verschiedener Arten von Informationen, wie zum Beispiel Hauptbucheinträge und Aufzeichnungen. Ethereum zum Beispiel ist eine Blockchain, die zum Hosten anderer Arten von Informationen, einschließlich Anwendungscode, verwendet werden kann. Verteilte Anwendungen, die auf der Blockchain gehostet werden, werden als dezentralisierte Anwendungen oder Dapps bezeichnet.

In solchen Fällen ist der gesamte Code quelloffen und alle Vorgänge der dezentralen Anwendung werden im unveränderlichen Ledger aufgezeichnet. Jeder kann auf dezentralisierte Anwendungen auf der Blockchain zugreifen, aber keine einzelne Person ist Eigentümer der Anwendung. Dezentralisierte Anwendungen auf der Blockchain sind über die gesamte Blockchain verteilt und durch Verschlüsselungsalgorithmen geschützt. Es gibt keine zentrale Schwachstelle, an der Hacker dezentrale Anwendungen angreifen könnten.

Das Verteilte Anwendungsmodell Client frägt Service A an; Client frägt Service B an Anwendung API-Aufruf für Service A und B (durch die Anwendung) API-Gateway Routing, Sicherheit, Protokollübersetzung, Load Balancing, Cache-Management, Abhängigkeitsauflösung API-Aufruf für Service A (vom Gateway); API-Aufruf für Service B (vom Gateway) Service A API; Service B API Service A; Service B
Abbildung 2: Blockchain verwendet ein Peer-to-Peer-Netzwerk, um dezentralisierte Anwendungen zu hosten.

Dezentrale Anwendungen auf der Blockchain können von herkömmlichen Anwendungen nicht zu unterscheiden sein und für ähnliche Funktionen verwendet werden, unterscheiden sich aber durch die Art und Weise, wie sie gehostet werden und intelligente Verträge verwenden.

Einige Beispiele für dezentralisierte Anwendungen, die auf der Blockchain – meist Ethereum – gehostet werden, sind die folgenden:

  • Eine dezentralisierte Musik-Streaming-Plattform.
  • Eine dezentrale Blogging-Plattform ähnlich wie Twitter.
  • Golem Netzwerk. Ein dezentraler Open-Source-Supercomputer, der für jeden auf der Welt frei zugänglich ist. Benutzer können ihre Rechenleistung an andere vermieten und so ein globales Netzwerk schaffen.
  • Zed Run. Ein dezentralisiertes digitales Pferderennen, bei dem die Nutzer mit nicht fälschbaren Token spielen.
  • Eine Virtual-Reality-Plattform, die es Nutzern ermöglicht, Avatare zu erstellen und Grundstücke zu kaufen und zu verkaufen.

Ethereum.org bietet Lernressourcen, die Dapp- und Softwareentwicklung auf der Blockchain lehren.

Diese Definition wurde zuletzt im Juli 2022 aktualisiert

Erfahren Sie mehr über Cloud Computing