Systemintegration
Laravel-Integrations-Engineering
Eine Laravel-Anwendung mit den Systemen verbinden, auf denen ein Unternehmen läuft - ERPs, Zahlungsanbieter, E-Rechnungsplattformen, Banken - und den Tag überstehen, an dem die Gegenseite ausfällt.
Sehr wenige Anwendungen sind allein. Es gibt ein Buchhaltungssystem, dem die Rechnungsnummern gehören, einen Zahlungsdienstleister, der entscheidet wann Geld echt ist, ein Lager, das Meinungen über Bestände hat, und zunehmend eine Steuerbehörde, die Dokumente in strukturierter Form verlangt.
Integration ist der Ort, an dem in einer Geschäftsanwendung die wirklich harte Entwicklungsarbeit sitzt, und sie wird fast immer unterschätzt – weil der Code geradeaus ist und alles darum herum nicht.
Was wir anbinden
Buchhaltung und ERP. SAP, Logo, Netsuite, Xero, Sage und was ein Unternehmen sonst betreibt, seit bevor irgendjemand der heute dort Beschäftigten ankam. Das wiederkehrende Problem ist nicht das Protokoll – es ist, dass beide Systeme glauben, ihnen gehöre derselbe Datensatz, und niemand entschieden hat, welches gewinnt.
Zahlungsdienstleister. Karten, lokale Verfahren, Lastschriftmandate, Marktplatz-Aufteilungen. Jeder hat sein eigenes Modell davon, was eine Zahlung ist, und die Unterschiede reichen bis in die Bestelltabelle statt beim API-Client aufzuhören - Stripe ist das durchgearbeitete Beispiel, und der Rest unterscheidet sich in den Details statt in der Form.
E-Rechnungsplattformen. Zunehmend verpflichtend und zunehmend je Land anders – ZATCA, XRechnung, Peppol, und der akkreditierte Anbieter, der jeweils dazwischensitzt. Eine Rechnung wird zu einem asynchronen Dokument mit einer Zustandsmaschine daran.
Banken und Dateien. Kontoauszugsimporte, Zahlungsdateien, Abstimmung. Die Formate sind alt, schlecht dokumentiert und unversöhnlich, und die Arbeit ist Zuordnung statt Parsen.
Alles andere. Versanddienstleister, SMS, Identitätsanbieter, CRMs, staatliche Register.
Die Teile, die entscheiden ob es funktioniert
Eine Grenze, die Ihnen gehört. Ihre Anwendung spricht mit Ihrer Schnittstelle; eine Implementierung spricht mit deren API. Das kostet fast nichts und macht den Wechsel eines Anbieters zu einer Woche statt zu einem Quartal – was mehr zählt als es klingt, denn Anbieter werden übernommen, verabschieden Versionen und ändern Preise.
Idempotenz, weil alles zweimal ankommt. Webhooks werden erneut zugestellt. Wiederholungen feuern nach einer Anfrage, die tatsächlich erfolgreich war. Ein Netzwerk-Timeout sagt Ihnen nichts darüber, ob die Gegenseite es verarbeitet hat. Jeder Schreibvorgang über die Grenze braucht einen Schlüssel, der den zweiten Versuch wirkungslos macht, und dieser Schlüssel gehört ins Schema und nicht in die Absichten eines Entwicklers.
Eine Entscheidung über das Scheitern, je Integration. Wenn deren System unten ist: Scheitert die Aktion des Nutzers, wandert sie in die Queue, oder läuft sie eingeschränkt weiter? Eine Karte zu belasten ist nicht dasselbe wie eine Werbemail zu senden, und beide gleich zu behandeln ist der Weg, auf dem ein Ausfall bei einem Anbieter zu einem Ausfall bei Ihnen wird.
Ratenbegrenzungen bewusst respektiert. Backoff, eine Queue, die Arbeit verteilt, und eine Obergrenze, die Sie setzen statt sie zu entdecken. Gedrosselt zu werden, weil Sie ein Jahr Nachbefüllung in vier Minuten gesendet haben, ist ein selbstverschuldeter Vorfall.
Ein Protokoll des Austauschs. Jede Anfrage und Antwort, aufbewahrt lange genug, um einen Streit zu klären. Wenn die Gegenseite sagt, sie habe es nie erhalten, ist das der Unterschied zwischen einer Fünf-Minuten-Antwort und zwei Wochen.
Abstimmung ist die eigentliche Arbeit
Zwei Systeme, die dieselben Fakten halten, werden sich widersprechen. Nicht vielleicht – sie werden, denn Nachrichten gehen verloren, Korrekturen werden auf einer Seite eingetragen, und irgendwann bearbeitet jemand einen Datensatz von Hand.
Eine Integration, die Übereinstimmung annimmt, entdeckt die Abweichung, wenn sich ein Kunde beschwert. Eine ordentlich gebaute Integration prüft: eine geplante Aufgabe, die beide Seiten vergleicht, ein Bericht über Unterschiede, und eine festgelegte Auflösung je Art. Das ist unglamourös und es ist der Unterschied zwischen einer Verbindung, der Sie trauen, und einer, die Sie ewig stichprobenartig prüfen müssen.
Wie ein Projekt abläuft
Schicken Sie die API-Dokumentation dessen, womit Sie sprechen müssen, und Zugangsdaten für eine Sandbox, falls es eine gibt. Der größte Teil der Schätzung entsteht beim Lesen dessen, was die Gegenseite tatsächlich zusichert, und nicht dessen, was ihre Marketingseite behauptet.
Der Leistungsumfang, der zurückkommt, listet jede Integration, ihre Fehlerfälle und das, was die Abstimmung damit tun muss. Er trägt einen Preis und ist das, worauf der Vertrag zeigt. Stellt sich eine Integration als Forschungsprojekt statt als Bau heraus, steht das als eigene Zeile darin und nicht als Überraschung im zweiten Monat.
Dann die Arbeit, in Ihrem Repository, mit der Abstimmung gebaut zur selben Zeit wie der Normalfall.
Was Sie bekommen
Die Integration als prüfbare Pull Requests, die Schnittstelle, die den Anbieter kapselt, das Queue- und Wiederholungsverhalten mit aufgeschriebenen Fehlerentscheidungen, die Abstimmungsaufgabe und ihren Bericht, und ein Dokument darüber, was ausgetauscht wird und was passiert, wenn es das nicht wird.
Wo die Arbeit Rechnungsstellung oder Steuermeldung in einem bestimmten Land berührt, sind die Rahmenbedingungen dieses Marktes Teil des Umfangs statt einer Entdeckung. Was sich in Deutschland, Saudi-Arabien, den VAE, dem Vereinigten Königreich und den Niederlanden jeweils ändert, ist auf den englischsprachigen Marktseiten im Einzelnen beschrieben, auf Englisch.
