Kunde
Ein schwedisches Startup beauftragte Elinext, seinen Antrag mit den Informationssystemen der Kreditanbieter zu verbinden.
Herausforderung
Das Unternehmen arbeitete an einer Anwendung, mit der Verbraucher Kredite aus mehreren Quellen gleichzeitig beantragen können. Es hatte ein System entwickelt, bei dem die App mit den APIs der Kreditanbieter verbunden war, um Anfragen und Antworten weiterzugeben.
Zum Zeitpunkt unseres ersten Kontakts baute das Unternehmen seine PHP-Anwendung in Java neu auf. Es fehlten genügend Hände, um die App in die Informationssysteme von Finanzunternehmen zu integrieren. Es bat mehrere Entwickler um Hilfe und entschied sich für Elinext.
Lösung
Der Kunde hatte ein bereits entworfenes System, als er zu uns kam. Es sah aus wie ein Netzwerk, in dem die Benutzeroberfläche (UI) über sogenannte Events mit den APIs der Kreditanbieter verbunden war. Diese APIs waren alle unterschiedlich. Um eines in das System zu integrieren, mussten wir direkt mit den Partnern unserer Kunden sprechen und es gemeinsam testen.
Zu Beginn des Projekts verlangte der Kunde zwei Java-Entwickler in Teilzeit und vier Monate später acht weitere. Aber das waren eindeutig zu viele unserer Leute, die an dem Projekt arbeiteten. Schließlich haben wir zwei Vollzeit-Ingenieure zugewiesen, die den Job mit der agilen Methodik gemeistert haben.
Events
Die Funktion "Ausleihanforderung/Antwort" basiert auf Ereignissen. Ein Nutzer beantragt ein Darlehen und die Anwendung erstellt ein JSON-formatiertes Ereignis in einer Cloud in der Google Cloud Platform (GCP). Das Ereignis wird in die Warteschlange gestellt und an einen automatisierten Hub zur Verteilung von Anforderungen gesendet.
Das System erstellt ein Ereignis „Antrag erstellt“, wandelt seine Daten in die Formate um, die von der API jeder Finanzorganisation verwendet werden, und sendet sie an die Organisation, die dann entweder ein Angebot erstellen oder die Anfrage ablehnen kann. Basierend auf der getroffenen Auswahl erstellt das System ein Ereignis „Abgelehnt“ oder „Angeboten“ und informiert den Benutzer darüber.
Integrationen
Die größte Herausforderung dieses Projekts bestand darin, die APIs der Kreditanbieter mit der Anwendung zu verbinden. Wir mussten eng mit Finanzinstituten zusammenarbeiten, die ihre eigenen bürokratischen Vorgehensweisen haben.
Wir haben Gradle, Java und Spring verwendet, um die Integrationen zu erstellen. Jede Integration ist ein separates Projekt und Service. Es besteht aus dem Hauptmodul mit Komponenten in Controller-, Service- und Modellschicht.
Integrationen verwenden HTTP und gRPC, um Anfragen zwischen verschiedenen Diensten zu verarbeiten. Ein Shared-Library-Modul ermöglicht den Shared Service, das Modell und den Autokonfigurationscode. Infolgedessen dupliziert das System keinen Code.
Wir haben bei jedem neuen Build automatisierte Unit-Tests durchgeführt. Die von uns verwendete Methode kombiniert das Build-Tool Gradle mit Testbibliotheken und Frameworks wie JUnit, Spring Boot Starter Test und Mockito. Wir haben Integrationen auch manuell durch Fallszenarien getestet, manchmal zusammen mit Kreditanbietern in Echtzeit.
Eine durchschnittliche Integration hat uns zwischen einer und drei Wochen gedauert. Ab dieser Veröffentlichung haben wir 16 entwickelt.
Statistiken
Wir haben ein Statistik-Board für Administratoren entwickelt, das Zahlen anzeigt, wie viele Kreditanträge in Bearbeitung sind, akzeptiert oder abgelehnt wurden, wie viele Anträge zu einem Fehler geführt haben und mehr. Wir haben Prometheus verwendet, um die Metriken zu beziehen, und Grafana, um sie zu visualisieren.
Ergebnis
Elinext half dem Startup, die Markteinführungszeit zu verkürzen. Heute verarbeitet das System täglich rund 3000 Kreditanträge von 16 Finanzorganisationen. Diese Zahlen werden steigen, während wir weiterhin neue Integrationen entwickeln.
Auch im Projektmanagement haben wir einzigartige Erfahrungen gesammelt. Wir mussten eine effiziente Zusammenarbeit mit mehreren Parteien erarbeiten, unserem Kunden und den traditionell in Bürokratie versunkenen Einzelanbietern. Dies hat uns einige wichtige Lektionen gelehrt.