June 12, 2020
Lemmid Store mit Küchen verknüpfen
Integration mit externen Systemen, die Sie nicht kontrollieren
Im Rahmen der Entwicklung meiner Essensbestell-App musste ich eine zuverlässige Methode entwerfen, um die App mit externen Systemen zu verbinden. Diese externen Systeme liegen außerhalb meiner direkten Kontrolle und umfassen verschiedene Kassen, Küchenmanagementsysteme und Bondrucker. Lesen Sie weiter, um mehr über das Design für das Unbekannte und Unzuverlässige zu erfahren.
Bestell-App für Essen
Die App, die ich entwickle, ist Lemmid Store. Es ist eine benutzerfreundliche App, mit der man Essen zum Mitnehmen bestellen (und bezahlen) kann. Sie finden alle Beiträge zu Lemmid Store hier.

Externe Systeme
Die Notwendigkeit, sich mit externen Systemen zu verbinden, ergibt sich aus dem Wunsch, die Bestell-App in die Geschäftsprozesse des Essenslieferdienstes zu integrieren. Denken Sie an Dinge wie:
- Sammeln von Bestelldaten in Verwaltungsdatensätzen (z. B. Buchhaltung)
- Weiterleiten von Bestellungen an die Küchen, wo die Gerichte zubereitet und verpackt werden
- Einfacher Zugriff auf Routinginformationen, die anzeigen, wohin das Essen geliefert werden soll
- Planung von Essensbestellungen, die für spätere Lieferungen vorgesehen sind

Herausforderungen bei der Verbindung mit externen Systemen
Sie merken es vielleicht nicht, aber die Verbindung mit externen Systemen kann knifflig sein. Wenn Sie sich die Bestell-App als eine Art "Motor" (wie in Ihrem Auto) vorstellen, möchten Sie diesen Motor im Wesentlichen mit externen Teilen integrieren. Wie Sie sich vorstellen können, sind nicht alle Teile gleichermaßen geeignet, um unter die sprichwörtliche Motorhaube zu passen. Um die Sache noch schwieriger zu machen: Sie wissen nicht genau, wie zuverlässig die externen Teile sind. Sie müssen Ihre Integration so gestalten, dass verschiedene externe Teile einfach angeschlossen werden können und die Leistung unabhängig von der Zuverlässigkeit dieser externen Teile ist.
![Die Integration externer Systeme in Ihre App ist wie die Anpassung von Drittanbieterteilen an einen Motor: Sie müssen deren Passform und Zuverlässigkeit sorgfältig prüfen. [image]](/de/2020-06-12_lemmid-store-mit-kuchen-verknupfen/i_02_Die-Integration-externer-Systeme-in-Ihre-App-ist-wie-die-Anpassung-von-Drittanbieterteilen-an-einen-_500px.jpg?u=1753195365474)
Wie bei einem Verbrennungsmotor müssen Sie bei der Integration Ihrer Software mit externen Systemen die Passform und Zuverlässigkeit berücksichtigen. Sie können nicht davon ausgehen, dass externe Software:
- perfekt passt
- immer konsistent ist
- immer verfügbar / vorhanden ist
- vertrauenswürdig ist
Um für diese eher düstere Sicht auf externe Verbindungen zu planen, hielt ich es für eine gute Idee, den Haupt-Backend-Server meiner Bestell-App die Verantwortung für die Verbindung mit externen Systemen an einen speziell entwickelten "Connector-Server" abzugeben. Der Connector-Server würde sich dann unabhängig mit dem externen System verbinden. Auf diese Weise kommuniziert der Hauptserver nur mit "First-Party"-Teilen und -Systemen, wodurch das Risiko von Fehlanpassungen und möglichen Ausfallzeiten minimiert wird.

In der Praxis bedeutet dies, dass der "Connector-Server" tatsächlich eine andere Maschine ist, auf der ein eigener Software-Stack läuft. Diese Segmentierung bietet einige wichtige Vorteile:
- Sicherheit: Der Connector-Server speichert keine vollständigen Aufzeichnungen aller Bestellungen, sondern nur die Bestellungen, die an ein externes System weitergeleitet werden müssen, werden vorübergehend im Speicher gehalten. Ein mögliches Sicherheitsproblem in einem externen System legt nur eine minimale Datenmenge offen.
- Passt zu allem: Der Connector-Server kann viele verschiedene Protokolle und Möglichkeiten zur Verbindung mit externen Systemen aufnehmen. Verbindungen zu externen Systemen können hinzugefügt werden, ähnlich wie der Server "eine neue Sprache lernt". Da er bereits "mehrsprachig" ist, ist das Hinzufügen eines neuen Dialekts oder einer neuen Sprache oft einfach. Die Verbindung zu verschiedenen externen APIs ist einfacher, wenn Sie alle Bausteine zur (Re-)Strukturierung von Daten haben.
- Berücksichtigung von Unzuverlässigkeit: Ein einfacher Warteschlangenmechanismus im Connector-Server ermöglicht es ihm, mögliche Ausfallzeiten und Probleme mit externen Verbindungen elegant zu behandeln. Durch die Protokollierung und Warteschlangenbildung pro externem Dienst wird es möglich, die Auswirkungen auf andere Teile und Verbindungen zu minimieren, wenn ein Dienst ausfällt.
Schlussfolgerung
So verlockend es auch ist, einfach neue und schicke Teile an Ihre App anzuschrauben, müssen Sie Ihr Setup sorgfältig prüfen, um sicherzustellen, dass es zuverlässig funktioniert.
Die Entwicklung von Backend-Server-Software für die Verbindung mit externen APIs ist eine Herausforderung. Sie müssen auf das Beste hoffen, aber für das Schlimmste planen!