Ein österreichisches Unternehmen, das moderne Softwarelösungen für Banken und Finanzorganisationen in Westeuropa und Skandinavien anbietet, benötigte Backend App Entwicklung von Elinext.
Projektbeschreibung
Unser Kunde hatte eine Web-Banking-Anwendung, die moderne Lösungen für Asset-Management, Online-Trading und umfassende Finanzdienstleistungen bietet. Sie wollten die Benutzererfahrung mit Hilfe eines schnelleren Zugriffs auf Informationen und einer erhöhten Betriebseffizienz durch eine schnelle und zuverlässige Suchlösung verbessern.
Aufgrund der großen Datenmengen war die Suchfunktion langsam und ineffizient. Elinext-Mitarbeiter, die Erfahrung in der App Backend Entwicklung hatten, erhielten die technische Aufgabe und schlugen die Architektur für eine schnellere Lösung vor. Nach der Freigabe des Kunden für den Tech-Stack und andere technische Details begannen wir mit der Arbeit am Projekt.
Herausforderungen
Die größte Herausforderung unseres Kunden bestand darin, den Endnutzern die Möglichkeit zu bieten, eine schnelle Volltextsuche in ihrer Banking-App zu nutzen.
Eine schnellere Suche hätte die Benutzererfahrung durch eine gesteigerte Betriebseffizienz verbessert und die Wettbewerbsfähigkeit auf dem Markt für Softwarelösungen für Banken erhöht. Der Kunde suchte eine erfahrene Agentur für Webentwicklung, die seinen spezifischen Anforderungen gerecht werden konnte.
Die langsame Suchgeschwindigkeit war ein bestehendes Problem, das durch die großen Datenmengen verursacht wurde und die Suchfunktion ineffizient machte. Außerdem mussten wir die baumbasierte Zugriffsrechtsstruktur für verschiedene Benutzerrollen sowie die Benutzer selbst berücksichtigen.
Der Kunde suchte einen technisch versierten Auftragnehmer mit Erfahrung in Elasticsearch und anderen Tools für die Backend App Entwicklung sowie die Fähigkeit, schnelle und effiziente Suchlösungen zu implementieren. Mit der Frontend Entwicklung war der Kunde zufrieden.
Zusammenfassend lassen sich die Hauptherausforderungen wie folgt auflisten:
Signifikante Reduzierung der Suchzeiten in der Banking App
Steigerung der Effizienz bei der Datenverarbeitung
Verbesserung der Benutzererfahrung durch schnelleren Zugriff auf Finanzinformationen
Prozess
Als ein auf dem Markt positioniertes Unternehmen mit umfassender Expertise in der Entwicklung von Bankensoftware nahm Elinext Kontakt mit dem Kunden auf.
Das Team bestand aus zwei Senior-Entwicklern mit Spezialisierung auf Backend-Entwicklung. Ein entscheidender Vorteil war, dass die Entwickler bereits erfolgreiche Erfahrungen mit Elasticsearch, Apache Kafka und Docker vorweisen konnten.
Unsere Ingenieure arbeiteten größtenteils eigenständig, mit kurzen täglichen Meetings mit den Product Ownern im Laufe der Woche. Sie erstellten eigene Aufgaben und präsentierten wöchentliche Demos, um den Fortschritt zu zeigen. Gelegentlich gab es Meetings mit dem Kunden, um Anforderungen zu besprechen und Anpassungen vorzunehmen.
Die Ingenieure von Elinext nutzten Grafana und Prometheus, um die Systemkomponenten zu überwachen und die Leistung sowie Effizienz zu bewerten. Zusätzlich wurden Endpunkte bereitgestellt, um Systemstatistiken abzurufen.
Phase eins des Projekts war die Entwicklung des Designs und der Architektur. Die Entwickler von Elinext benötigten eine Woche, um das Design und die Architektur zu definieren sowie Technologien und Komponenten auszuwählen, die für die Fertigstellung des Projekts erforderlich waren.
Phase zwei umfasste die Entwicklung und Implementierung. Der geschätzte Zeitraum hierfür betrug zwei Monate (mit einer zusätzlichen Woche für unvorhergesehene Situationen), jedoch wurde die Arbeit eine Woche vor dem geplanten Abschluss fertiggestellt.
Lösung
Unsere Ingenieure nutzten ihre vorherige Erfahrung in der Backend App Entwicklung bei ähnlichen Projekten. Sie setzten Elasticsearch für schnelle Volltext-Suchfunktionen, Kafka Connect für die Echtzeit-Datensynchronisation und Docker für die Containerisierung ein, um Portabilität und Konsistenz über verschiedene Umgebungen hinweg sicherzustellen. Die Entscheidung, Quarkus, Helm und Kubernetes zu verwenden, basierte auf den Anforderungen an hohe Leistung, Skalierbarkeit und eine effiziente Bereitstellung. Dieses Projekt war das erste, bei dem unsere Ingenieure diese Technologien einsetzten, wodurch sie während des Prozesses viel dazugelernt haben.
Die Hauptidee besteht darin, einen lokalen Cache für jedes System hinzuzufügen, um Daten und Zugriffsrechte für eine schnelle Suche zu speichern, sowie einen globalen Cache, der mit den lokalen Caches synchronisiert wird. Gleichzeitig muss jeder lokale Cache auch mit der Datenbank des Systems synchronisiert werden:
Datenbank Synchronisation mit lokalem Cache
Der verteilte Cache umfasst:
Elasticsearch Cluster Container (lokaler Cache, globaler Cache): Dient zur Speicherung und Verwaltung von Suchdaten.
Cache Sync Service: Dieser verbindet sich mit einem Messaging-Dienst, um Benachrichtigungen über neue oder geänderte (gelöschte) Daten zu erhalten. Anschließend werden diese Daten an den entsprechenden Elasticsearch-Index weitergeleitet. Dieser Prozess stellt sicher, dass der Cache mit den Informationen der Datenquelle synchron bleibt. Außerdem kann der Dienst Synchronisationsereignisse für Kafka Connect erzeugen, um den globalen Cache mit dem lokalen Cache zu synchronisieren.
Globaler Cache Sync Service über Kafka: Kafka Connect synchronisiert die Daten von lokalen Caches zu einem oder mehreren globalen Caches.
Search Backend: Die Implementierung der Elasticsearch-Methoden erfolgt, um Daten zu finden und abzurufen.
Verteilter Cache
Technologie-Stack:
Quarkus: Ausgewählt wegen seiner hohen Leistung und schnelleren Startzeiten im Vergleich zu traditionellen Frameworks (z. B. Spring), was es ideal für cloud-native Anwendungen und Microservices macht.
Elasticsearch: Eingesetzt wegen seiner leistungsstarken Volltextsuch-Funktionen, die schnelle und präzise Suchergebnisse innerhalb der Anwendung gewährleisten.
Apache Kafka: Verwendet für die Datensynchronisation aufgrund seiner Fähigkeit, große Datenmengen in Echtzeit zu verarbeiten und dabei Konsistenz und Zuverlässigkeit zwischen verschiedenen Systemkomponenten sicherzustellen.
Docker: Diente zur Containerisierung der Anwendung, um sie konsistent in unterschiedlichen Umgebungen auszuführen und die Bereitstellungsprozesse zu vereinfachen.
Helm und Kubernetes: Eingesetzt zur Optimierung der Bereitstellung und Verwaltung containerisierter Anwendungen, was eine einfache Skalierung und Orchestrierung von Diensten ermöglicht.
Docker Compose: Verwendet, um die Konfiguration und Verwaltung von Docker-Containern während der Entwicklung zu vereinfachen.
Unsere Ingenieure verbrachten viel Zeit damit, den Umgang mit Sicherheitszertifikaten zu erlernen. Zudem mussten sie die Architektur an neue Anforderungen des Kunden anpassen und komplexe Suchabfragen in Elasticsearch verwalten.
Architektur des Sync-Services:
Sync Services Architektur
Unsere Ingenieure nutzten Grafana und Prometheus, um jede Systemkomponente zu überwachen und die Leistung sowie Effizienz zu bewerten. Darüber hinaus wurden Endpunkte bereitgestellt, um Systemstatistiken abzurufen.
Was die Qualitätssicherung betrifft, so führten die Entwickler Einheitstests und manuelle Tests durch, um die Funktionalität sicherzustellen. Außerdem führten sie Leistungstests mit großen Datenmengen durch, um die Effizienz des Systems bei hoher Belastung zu bewerten.
Ergebnisse
Individuelle Softwareentwicklung gehört zu unseren wichtigsten Spezialgebieten. Elinext hat das Projekt erfolgreich termingerecht und im Rahmen des festgelegten Budgets abgeschlossen. Das System, das unsere Implementierung erhielt, wird nun in die Umgebung des Kunden integriert. Es sollte die Produktivität steigern, dank der schnelleren und effizienteren Volltextsuch-Funktionen, der verbesserten Benutzerzufriedenheit durch schnelleren Zugang zu Finanzdaten und der verbesserten Skalierbarkeit, um wachsende Datenmengen zu bewältigen. Langfristig wird es zu Kostensenkungen durch Systemoptimierung und Automatisierung führen.
Die Ergebnisse von Elinexts Beteiligung an der Backend App Entwicklung sollten in Zukunft bewertet werden, nachdem die Integration des Systems abgeschlossen ist. Der Kunde plant auch, in Zukunft ein Admin-Panel und Single Sign-On (SSO) hinzuzufügen, sodass das Projekt Potenzial für eine weitere Zusammenarbeit in der Zukunft bietet. Unser Kunde ist ohne Zweifel äußerst zufrieden mit unserer Expertise in der Entwicklung von Software für Finanzdienstleister.