Wenn in einem Onlineshop die Prozesse im Hintergrund zeitverzögert abgearbeitet werden, profitiert davon am Ende der Kunde. Die asynchrone Kommunikation bietet auch einige Vorteile für den Plattform-Betreiber, wozu unter anderem die Skalierung des Systems gehört. Warum? Das wird hier erklärt.
Was bedeutet asynchrone Kommunikation?
Ich gebe zu, der Titel ist nicht direkt selbsterklärend und wirkt etwas technisch. Doch wir alle nutzen „asynchrone Kommunikation“ im Alltag und wollen diesen Modus auch nicht missen.
Ein Beispiel für asynchrone Kommunikation ist die gute alte E-Mail. Sobald wir eine neue E-Mail erhalten, können wir selbst entscheiden, ob wir diese direkt beantworten, sie erstmal liegen lassen oder gänzlich ignorieren. Im Gegensatz zu einer direkten (nicht asynchronen) Nachricht – wie sie zum Beispiel in einer normalen Chat-Situation üblich ist – haben wir als Empfänger von E-Mails die Entscheidungsfreiheit, wann wir die E-Mail öffnen, lesen und beantworten möchten.
Was hat nun eine E-Mail bzw. eine asynchrone Kommunikation mit E-Commerce zu tun?
Ein Praxisbeispiel für asynchrone Kommunikation im E-Commerce
E-Commerce-Systeme werden immer komplexer. Es genügt nicht mehr, einen „einfachen“ Onlineshop zu betreiben. Während es früher ausreichte, einen Warenkorb mit Bestellstrecke bereitzustellen, so sind heutzutage immer mehr Prozesse notwendigerweise am Shopbetrieb beteiligt.
Nehmen wir das Beispiel, dass ein Kunde im Shop einen Artikel bestellt – das mag simpel erscheinen. Was aber dann im Shopsystem passiert, ist alles andere als trivial. Üblich ist etwa folgender Ablauf:
- Umwandeln des Warenkorbs zu einer Bestellung
- Deaktivieren des bestehenden Warenkorbs
- Versenden von E-Mails (z. B. eine Bestellbestätigung)
- Aktualisieren von Caches bei Preis- und Verfügbarkeitsänderungen
- Aktualisieren von Verkaufsstatistiken
- Verarbeiten von Bestandsveränderungen
- Exportieren von Bestelldaten an ein ERP-System
Welche Vorteile bieten die zeitversetzten Prozesse?
Bei einer Bestellung im Onlineshop laufen diverse Prozesse ab, die asynchrone Kommunikation bringt hierbei ein paar entscheidende Vorteile mit sich. Nämlich: Wie im Falle der E-Mail können wir auch bei Shopsystemen entscheiden, die Verarbeitung der Vorgänge nicht direkt zu starten.
Das Shopsystem kann dem Kunden direkt nach der Speicherung der Bestellung eine „Success Page“ anzeigen. Der Kunde muss somit nicht warten, bis das System die Bestellbestätigung als E-Mail versendet hat.
Einige Prozesse erfordern zudem längere Berechnungszeiten. So könnte in der Zwischenzeit ein Artikel nicht mehr lieferbar sein. Eine asynchrone Kommunikation sorgt also dafür, dass der Kunde Priorität hat. Umgekehrt folgt aus der Bestellung eine Bestandsänderung, die wiederum die dargestellten Preise in einem Shop beeinflusst. Die Preisaktualisierung sollte aber nicht erst nach der vollständigen Bearbeitung der Bestellung erfolgen, sondern sofort.
Die asynchrone Kommunikation erlaubt es, die anfallenden Aufgaben in Warteschlangen abzulegen. Das System kann die Aufgaben verteilen, um sie zu einem späteren Zeitpunkt zu verarbeiten. Damit erhalten wir ein schnelles Shop-Frontend und langweilen Kunden nicht mit Warte-Animationen.
Die technischen Lösungen für eine asynchrone Onlineshop-Kommunikation
Zur Umsetzung einer solchen asynchronen Kommunikation werden gerne sogenannte „Message Queues“ genutzt. Eine Message (Nachricht) besteht in den meisten Fällen aus einer einfachen Anweisung oder einem zu verarbeitenden Objekt (etwa der zu exportierenden Bestellung oder einer Artikelnummer und einer bestellten Menge). Die Anweisung kann sich auch durch die Ablage in der jeweiligen Queue ergeben, wenn diese eben nur Nachrichten einer definierten Aufgabe umfasst.
Dazu werden die Nachrichten vom Shopsystem an einen Message Broker gesendet. Das sendende System nennt man in diesem Kontext auch „Publisher“. Moderne Message Broker unterstützen eine Vielzahl an Protokollen. Dadurch lassen sie sich mit vielen Systemen verbinden.
Was macht ein Message Broker genau?
Ein Message Broker dient als Vermittler (Broker) von Nachrichten. Eingehende Nachrichten werden je nach Thema und Regelwerk an entsprechende Warteschlangen delegiert. Außerdem bestätigt der Broker den Erhalt der Nachricht an den Publisher. Damit ist die Nachricht erstmal nicht mehr im Kontext des Shops, der sich dann wieder seinen primären Aufgaben – dem Verkaufen von Artikeln – widmen kann.
Was passiert aber nun mit der Nachricht? Hier kommt nun der sogenannte „Consumer“ ins Spiel. Dieser „konsumiert“ die Nachrichten aus der Warteschlange. Der Consumer fragt beim Message Broker nach einer gewissen Anzahl Nachrichten einer bestimmten Warteschlange. Der Broker übermittelt die Nachrichten, die dann vom Consumer interpretiert und verarbeitet werden: So wird die Bestellung exportiert oder der Bestand aktualisiert.
Welche Vorteile haben diese Abläufe?
Moderne Queue-Systeme arbeiten an dieser Stelle transaktionssicher: Nach der Verarbeitung der Nachricht wird diese in der Message Queue entsprechend markiert. Damit ist etwa garantiert, dass die Bestellung nur einmal exportiert wird. Sollte die Verbindung abbrechen, ist die Nachricht nicht verloren, sondern kann nochmals verarbeitet werden. Dies sorgt auch für einen weiteren Vorteil: Ausfallsicherheit.
An dieser Stelle spricht man oft von „Quality of Service“. Gerade für Onlineshops ist die Sicherstellung des Betriebs essenziell umsatzrelevant.
Ein weiterer Vorteil: Skalierung und Sicherheit
Das Thema Skalierung wird im E-Commerce Umfeld immer wichtiger. Wächst der Umsatz, muss die Enterprise-Shop-Plattform ebenfalls mitwachsen. Nutzt man ein System, das nur über Hardware (Server) skaliert, ist das Wachstum schnell beendet. Auch hier kann uns die asynchrone Kommunikation helfen.
Die beschriebenen Queue-Systeme lassen sich von Haus aus skalieren. Es ist möglich, mehr als ein System zu betreiben. Die Nachrichten können dann auf mehrere Systeme verteilt werden.
Auch die Ausfallsicherheit ist ein wichtiges Thema, um die Service-Qualität zu gewährleisten. Ein gutes Message-Queue-Gesamtsystem lässt sich über Replikation absichern. Nachrichten werden dann automatisch auf mehrere Systeme verteilt. Fällt ein Message-Queue-Server aus, übernimmt ein anderer dessen Aufgabe. Man spricht hier von einem „failover„.
Natürlich ist nicht jede Nachricht gleich wichtig, daher lassen sich Nachrichten entsprechend priorisieren. Dies gewährleistet, dass die absolut notwendigen Arbeiten immer zuerst erledigt werden und auch in großen Lastsituationen kritische Prozesse nicht ins Stocken geraten.
Eine weitere Skalierungsmöglichkeit ist die Erhöhung der Anzahl der abarbeitenden Consumer. Durch die Transaktionssicherheit können die Nachrichten an mehrere Prozesse verteilt werden, die parallel Arbeiten übernehmen. Damit ist es möglich, effizient und mit hoher Geschwindigkeit Daten im Hintergrund abzuarbeiten.
Fazit
Die asynchrone Kommunikation bietet sich für die Skalierung eines Shopsystems an. Davon profitierten die E-Commerce-Lösung und damit dann auch die Endkunden, da sie ein schnelleres Shopping-Erlebnis erhalten. Diese Punkte können sich positiv auf den Umsatz des Onlineshops auswirken – zufriedene Kunden geben gerne mehr Geld aus.