Dec 17, 2019 9:18:00 AM

Bleiben Sie am Ball - Zuverlässige Integrationen mit Drittanbietern

 

Wie die meisten Technologieunternehmen bietet Solvemate nicht nur einen Service, der auf seine Software gestützt ist, sondern auch die Verbindung und Integration mit vielen anderen Partnern.

 

So bieten wir z.B. die Integration mit CRM-Systemen wie Salesforce, Zendesk und Freshdesk, verlassen uns auf Partner zum Senden von E-Mails und SMS-Nachrichten und haben Partner für die Abwicklung der Abrechnung. Unser Produkt hätte ohne diese Partnerschaften einfach nicht den gleichen Wert.

 

Die Zusammenarbeit mit Drittanbietern ist eine gute Möglichkeit, unser Geschäft schnell weiterzuentwickeln und uns darauf zu konzentrieren, was unsere Marke einzigartig macht. Unsere Entwickler wissen, dass sie im Jahr 2019 nichts über die Feinheiten des E-Mails-Versendens wissen müssen. Stattdessen wissen sie, dass sie sich dafür auf unseren Partner verlassen können und ihm nur eine einfache API zur Verfügung stellen müssen.

 

Das funktioniert meistens und wir müssen uns nicht den Kopf darüber zerbrechen.

 

Allerdings sind Softwaresysteme nicht so einfach. Kein Service ist 100 % der Zeit verfügbar und wenn ein Provider Ihnen so etwas gesagt hat, ist es eine Lüge. Unsere Systeme können ausfallen, die Systeme der anderen können ausfallen. Cloud-Anbieter können von Ausfällen betroffen sein, Internetleitungen können unterbrochen sein, die Sterne können aus der Bahn geraten…

 

Software kann fehlerhaft sein und wenn Sie das bei Ihrer Planung nicht berücksichtigen, schaffen Sie zwangsläufig eine für Ihre Kunden enttäuschende Erfahrung.

 

Im Fall von Solvemate ist das sogar noch wichtiger. Die Nutzer, die mit unserer Software interagieren, machen das, weil sie Hilfe von einem unserer Kunden benötigen. Sie denken nicht daran, dass sie mit Solvemate, sondern mit einem unserer Kunden interagieren. Unsere Nutzer sind die Kunden unserer Kunden. Wenn wir ihnen keinen zuverlässigen Service bieten, lässt das unsere Kunden schlecht dastehen. Deshalb ist Zuverlässigkeit eines der wichtigsten Kriterien für die von uns entwickelte Software. 

 

Übergabe von Support-Tickets an ein CRM-System

 

Wenn ein Nutzer einen Chatflow von Solvemate durchläuft, sein Problem komplex ist und die direkte Beteiligung eines Support-Mitarbeiters benötigt, müssen wir zuverlässig den Chat-Verlauf und die Nutzerdaten an das CRM-System unseres Kunden übergeben.

 

Solvemate lässt sich mit vielen verschiedenen CRM-Systemen integrieren, aber der Ablauf ist immer recht ähnlich. Wir müssen alles, was wir bisher über das Gespräch mit dem Nutzer wissen, sammeln, uns gegenüber dem Drittanbietersystem authentifizieren und die entsprechenden API-Aufrufe durchführen.

 

Diese API-Aufrufe sind in der Regel recht schnell und es geht nichts schief. Die einfachste Implementierung wäre die Verbindung mit dem CRM-System, sobald ein Nutzer auf den Handover-Button klickt und das Warten auf seine Rückmeldung: Entweder im Live Chat mit einer Person oder durch die Beendigung der Chatbot-Unterhaltung. Doch was normalerweise nur ein paar Millisekunden dauert, kann im schlimmsten Fall Sekunden oder sogar Stunden dauern.

 

Mögliche Fehler beim Enqueue-Work

 

API-Aufrufe können fehlschlagen. Darum sollten Drittanbieterintegrationen in der Regel asynchron behandelt werden.

 

Die Abläufe, die Drittanbieter einbinden, können viel länger als erwartet dauern, fehlschlagen und der Ausfall kann dann sehr lange dauern. Wir müssen in der Lage sein, uns die Zeit dafür zu nehmen und es erneut versuchen. Um damit umzugehen, verlagern wir diese Aufgaben am besten in ein Warteschlangensystem und verarbeiten sie asynchron.

 

Da alle unsere Systeme auf der Google Cloud-Plattform laufen, haben wir uns entschieden, das Einreihen in die Warteschlange für asynchrone Aufgaben auf dem Produkt Cloud Pub/Sub auszuführen. Wenn wir eine Handoveranforderung von einem Nutzer erhalten, reihen wir sie schnell in die Warteschlange ein und geben dem Nutzer eine unmittelbare Rückmeldung. Dadurch bleibt das UI flüssig und zwingt ihn nicht zu warten, bis das Handover tatsächlich abgeschlossen ist.

 

Sobald die Aufgabe in der Warteschlange ist, verwenden wir die ereignisgesteuerte serverlose Plattform Cloud Functions von Google, um die Aufgabe zu verarbeiten und die Übergabe an einen unserer Partner durchzuführen. Mit Cloud Functions haben wir die Möglichkeit, kleine und einfache Skripts für die Verarbeitung unserer verschiedenen Integrationen zu schreiben.

 

Nach der asynchronen Ausführung der Funktion können wir die verschiedenen Fehlerszenarien sicher behandeln. Unser primäres Tool zur Fehlerbehandlung sind Wiederholungsversuche. Wenn eine Aktion fehlschlägt, versuchen wir sie einfach erneut. Aber wir müssen vorsichtig sein, wann und wie wir diese Aktionen erneut versuchen.

 

Wissen, wann es genug ist

 

Wenn es beim ersten Mal nicht klappt, bleiben Sie ruhig und versuchen Sie es erneut. Aber wenn die Services von Partnern betroffen sind, sollten wir bei neuen/wiederholten Versuchen rücksichtsvoll vorgehen.

 

Das Produkt Cloud Functions bietet uns die Möglichkeit, unsere Aufgabe bei einem Fehler automatisch für einen Wiederholungsversuch zu konfigurieren, allerdings ist diese Wiederholungslogik für unseren Anwendungsfall zu einfach. Wenn eine Funktion fehlschlägt versucht sie es erneut und erneut und erneut… Sie hört erst nach tausenden Versuchen und mehreren Tagen auf. Die CRM-Systeme, mit denen wir arbeiten, sind unsere Partner und wenn sie aus irgendeinem Grund den API-Aufruf nicht verarbeiten können, ist es sinnlos, sie mit tausenden Wiederholungen zu bombardieren.

 

Zunächst möchten wir uns vergewissern, dass unser Wiederholungsmechanismus einen Exponential Backoff verwendet. Das bedeutet, dass wir nach einer Wartezeit von 1 Sekunde zwischen dem ersten und zweiten Versuch beim nächsten Versuch 2 Sekunden warten, danach 4 Sekunden usw. Jedes Mal, wenn wir einen Fehler erkennen, warten wir länger, bevor wir den Prozess erneut versuchen.

 

Wir möchten auch die Anzahl der Versuche begrenzen. Wenn eine Aufgabe 15 Mal in Folge fehlgeschlagen ist, ist es sehr unwahrscheinlich, dass der 16. Versuch erfolgreich ist. Zu diesem Zeitpunkt müssen wir dafür sorgen, dass wir die Aufgabe an eine andere dauerhafte Stelle verschieben.

 

Warteschlange für unzustellbare Nachrichten

 

Was geschieht mit einem Ereignis, dessen Ausführung fehlgeschlagen ist?

 

Diese Terminologie wird von Services mit mehreren Warteschlangen verwendet, um den Ort für fehlgeschlagene Ereignisse zu beschreiben. Im Fall von Solvemate senden wir diese Ereignisse an eine Datenbank.

 

Wenn eine Aufgabe oft genug fehlgeschlagen ist, um in der Warteschlange für unzustellbare Nachrichten zu landen, benachrichtigen wir unseren abrufbereiten Entwickler und geben ihm den notwendigen Kontext, um den Fehler zu verstehen. In der Regel kommt es wegen längerer Ausfälle bei einem unserer Provider zu solchen fehlgeschlagenen Ereignissen.

 

Der für diese Fehler zuständige Entwickler kann sich die Zeit nehmen, um den Fehler zu untersuchen, und kann versuchen, ihn dementsprechend zu beheben. Im Fall von längeren Ausfällen ist die beste Antwort oft, zu warten und die Statusseite zu verfolgen.

 

Sobald wir sicher sind, dass das Problem behoben wurde, verfügen wir über ein System, das den Entwickler in die Lage versetzt, alle Ereignisse in der Warteschlange für unzustellbare Nachrichten zu wiederholen.

 

Sichere Wiederholversuche

 

Alles hängt von der Fehlermeldung ab, nicht bei allen Vorgängen ist eine Wiederholung sicher.

 

Die Wiederholung eines fehlgeschlagenen Vorgangs scheint eine einfache Möglichkeit zu sein, ein System zuverlässiger zu machen, aber Sie müssen sehr vorsichtig sein, wann und wie Sie die Wiederholung versuchen.

 

Um mit dem Beispiel des Ticket-Handover fortzusetzen: Wenn der API-Aufruf zum Anlegen eines Tickets im CRM-System unseres Kunden erfolgreich ist, aber die Aufgabe aus einem anderen Grund fehlgeschlagen ist, könnte unser Wiederholungsmechanismus am Ende 15 duplizierte Tickets im CRM-System unseres Kunden anlegen. Die Duplizierung eines Ereignisses kann weniger problematisch sein als ein Ereignis ganz zu verlieren, aber Sie verlieren rasch das Vertrauen Ihrer Kunden, wenn Bugs deren Systeme mit Duplikaten überschwemmen.

 

Duplizierte Ereignisse sind besonders beim Senden von E-Mails oder SMS-Benachrichtigungen an Nutzer schlecht.

 

Zur Vermeidung solcher Situationen achten wir darauf, dass wir eine Funktion nur für Wiederholversuche markieren, wenn wir einen ganz bestimmten Fehler von unseren Partnern erhalten. Wir müssen sicherstellen, dass das Ticket nicht im CRM-System angelegt wurde, bevor wir eine Wiederholung versuchen. In allen anderen Fällen senden wir das Ereignis sofort in die Warteschlange für unzustellbare Nachrichten und lassen einen Entwickler das Problem untersuchen.

 

Eine weitere Ursache von Duplikaten könnten die Garantien Ihres Warteschlangensystems sein. In unserem Fall garantiert Cloud Pub/Sub, dass ein Ereignis „mindestens einmal“ verarbeitet wird. Das bedeutet, dass unser Warteschlangenanbieter in sehr seltenen Fällen das gleiche Ereignis möglicherweise zwei Mal verarbeiten würde. Für diesen Fall verwenden wir ein Sperrsystem, um sicherzustellen, dass jedes Ereignis immer nur einmal verarbeitet wird.

 

Zuverlässige Integrationen

 

Die Kundenserviceautomatisierung ermöglicht einen persönlicheren Service und eine bessere Service Experience, wenn der Kunde schließlich mit Ihren Servicemitarbeitern Kontakt hat. Das ist aber nur dann der Fall, wenn die Informationen und der Kontext erfolgreich zum CRM-System oder zu einer anderen Partnersoftware übertragen wurde. Obwohl Ausfälle nicht oft passieren, ist es wichtig, Systeme zuverlässig zu planen, um Kundenerwartungen nicht zu enttäuschen. 

 

Verlorene Anfragen sind einer der Hauptgründe, warum Endkunden glauben, dass Sie sich nicht um sie kümmern, und weshalb sie schließlich abwandern. Ihrem Endkunden ist es letzten Endes egal, ob eine Drittanbieterintegration ausgefallen ist und Sie deshalb seine Anfrage verloren haben. Daher ist es wichtig, dass Sie einen zuverlässigen Software-Anbieter auswählen, der sich seiner Verantwortung bewusst ist und wichtige Prozesse und Workflows so plant, dass sie auch in schwierigen Fällen gut dastehen. 

 

Teaser-DE_square_button

 

AUTHOR

Meet Alex, Platform Engineer at Solvemate by day, music geek by night. He has been building reliable platforms for various startups over the years, fuelled by his passion for databases and data storage tech. In his spare time you can find him attending concerts, walking his dog or ski-ing the mountains of his homeland Canada.