---
title: "Lemmid Store mit Küchen verknüpfen"
date: 2020-06-12
language: de
topics: ["data", "design", "lemmid-store", "networking", "programming", "server", "work"]
source_url: https://willem.com/de/2020-06-12_lemmid-store-mit-kuchen-verknupfen/
---
# Lemmid Store mit Küchen verknüpfen

*Anbindung an externe Systeme, die du nicht kontrollierst*

> Für die Bestell-App für Essen, die ich gerade baue, brauchte ich einen verlässlichen Weg, die App mit externen Systemen zu verbinden. Diese Systeme liegen außerhalb meiner Kontrolle, zum Beispiel verschiedene Kassen, Küchenverwaltungssysteme und Bondrucker. Lies weiter, wenn du wissen willst, wie man für das Unbekannte und Unzuverlässige plant.

## Bestell-App für Essen

Die App, an der ich arbeite, heißt Lemmid_Store (https://lemmid-store.com). Sie ist eine benutzerfreundliche App, mit der man Essen zum Mitnehmen bestellen (und bezahlen) kann. Hier findest du alle_Beiträge_zu_Lemmid_Store (https://willem.com/blog/lemmid-store/).

![Lemmid Store: eine App zum Bestellen von Essen zum Mitnehmen](https://willem.com/global/images/e4dce3b523ff.webp)

## Externe Systeme

Die Anbindung externer Systeme ist nötig, weil die Bestell-App in die Geschäftsabläufe des Lieferdienstes passen soll. Denk zum Beispiel an:

- Bestelldaten in die Verwaltung übernehmen (z. B. in die Buchhaltung)

- Bestellungen an die Küchen weitergeben, wo die Gerichte zubereitet und verpackt werden

- Routeninformationen bereitstellen, die zeigen, wohin das Essen geliefert werden soll

- Bestellungen für spätere Lieferungen einplanen

![Gedruckter Bon über eine externe Verbindung, mit detaillierten Bestelldaten wie Produktvarianten (die Wahl des Kunden pro Produkt)](https://willem.com/global/images/2c395cf2f419.webp)

### Die Tücken der Anbindung externer Systeme

Vielleicht ist dir das nicht klar, aber die Anbindung externer Systeme kann knifflig sein. Stell dir die Bestell-App als eine Art "Motor" vor (wie in deinem Auto). Diesen Motor willst du mit externen Teilen verbinden. Wie du dir denken kannst, passen nicht alle Teile gleich gut unter die sprichwörtliche Motorhaube. Dazu kommt: Du weißt nicht sicher, wie zuverlässig die externen Teile sind. Du musst die Anbindung so bauen, dass sich unterschiedliche externe Teile leicht anschließen lassen und die Leistung nicht von deren Zuverlässigkeit abhängt.

![Externe Systeme in deine App einzubinden ist, als würdest du Fremdteile in einen Motor einbauen: Du musst Passform und Zuverlässigkeit sorgfältig prüfen (Bild eines Verbrennungsmotors, gemeinfrei)](https://willem.com/global/images/a1d4ad9cd8a3.webp)

Wie bei einem Verbrennungsmotor musst du bei der Anbindung externer Systeme auf Passform und Zuverlässigkeit achten. **Du kannst nicht davon ausgehen, dass externe Software:**

- perfekt passt

- immer konsistent ist

- immer verfügbar / vorhanden ist

- vertrauenswürdig ist

Angesichts dieser eher düsteren Sicht auf externe Verbindungen fand ich es klug, die Verantwortung dafür vom Haupt-Backend-Server meiner Bestell-App an einen eigens gebauten "Connector-Server" abzugeben. Der Connector-Server verbindet sich dann selbstständig mit dem externen System. So spricht der Hauptserver nur mit "First-Party"-Teilen und -Systemen, und das Risiko von Inkompatibilitäten und Ausfällen sinkt.

![Der Haupt-Backend-Server wird durch einen eigens gebauten "Connector-Server" von den externen Systemen getrennt](https://willem.com/global/images/2e9aca708f2b.webp)

In der Praxis heißt das: Der "Connector-Server" ist eine eigene Maschine mit eigenem Software-Stack. Diese Trennung hat ein paar wichtige Vorteile:

- **Sicherheit:** Der Connector-Server speichert nicht alle Bestellungen. Nur die Bestellungen, die an ein externes System weitergegeben werden müssen, liegen vorübergehend im Speicher. Ein mögliches Sicherheitsproblem in einem externen System legt dadurch nur ein Minimum an Daten offen.

- **Passt zu allem:** Der Connector-Server kann viele verschiedene Protokolle und Verbindungswege unterstützen. Eine neue Verbindung hinzuzufügen ist, als würde der Server "eine neue Sprache lernen". Da er schon "mehrsprachig" ist, ist ein neuer Dialekt oder eine neue Sprache oft schnell erledigt. Die Anbindung an verschiedene externe APIs fällt leichter, wenn du alle Bausteine zum Umstrukturieren von Daten schon hast.

- **Mit Unzuverlässigkeit umgehen:** Eine einfache Warteschlange im Connector-Server hilft ihm, Ausfälle und Probleme bei externen Verbindungen elegant abzufangen. Wenn du pro externem Dienst protokollierst und in eine Warteschlange stellst, bleiben die Folgen für andere Teile und Verbindungen klein, wenn ein Dienst ausfällt.

## Fazit

So verlockend es ist, einfach neue, schicke Teile an deine App zu schrauben: Du musst deinen Aufbau sorgfältig durchdenken, damit alles zuverlässig läuft.

Backend-Software zu entwickeln, die sich mit externen APIs verbindet, ist eine Herausforderung. Du musst auf das Beste hoffen, aber für das Schlimmste planen!
