IT-Dienstleistungsunternehmen
Standort:
Skandinavien
Branchen:
Software und Hi-Tech
Mitarbeiter:
20 000+ Vollzeitarbeitskräfte
Über den Kunden:
Eines der größten IT-Dienstleistungsunternehmen und ein multinationaler Anbieter von Computersoftware, IT-Dienstleistungen und innovativen Lösungen für Unternehmenskunden in der EU sowie weltweit.
Anforderung
Unser zuverlässiger Kunde, ein großes IT-Dienstleistungsunternehmen, wandte sich an Infopulse, damit wir die Modernisierung der Kernbanklösung seines Kunden unterstützen. Das Finanzdienstleistungsunternehmen wollte die Effizienz, Wartungsfreundlichkeit und Sicherheit seines Batch-Grid-Systems verbessern. Da das Projekt umfangreich und langfristig angelegt war, wurden verschiedene interne Teams an der Lösungsentwicklung beteiligt. Das System selbst war nicht konsistent und erzeugte eine Reihe von Abhängigkeiten zwischen anderen Systemen, die für reguläre Batch-Prozesse verantwortlich waren (z. B. Tagesabschluss).
Dadurch musste sich der Kunde mit folgenden Herausforderungen auseinandersetzen:
- Die zunehmende Zahl der Wartungsprobleme der Kernbankenlösung.
- Releases neuer Funktionen wurden aufgrund mehrerer Entwicklungszweige erschwert, welche vor jedem Release einzeln zusammengeführt und getestet werden mussten.
- Die Lösungsstruktur war fehleranfällig, wobei über zehn Systeme für den Systemcode des Core Batch Grids (CBG) verantwortlich waren. Die enge Kopplung im System machte es schwierig, die Versionierung und das Umschalten der Funktionen zu handhaben.
Lösung
Nach der Durchführung der detaillierten Analyse entwickelten die Experten von Infopulse Lösungen, mit denen die entdeckten Probleme behoben und die Effizienz der Systeme in der PoC-Phase validiert werden konnten:
- Die iterative Aufteilung würde aufeinanderfolgende Trennung der Systeme ermöglichen und somit vor Systemausfällen schützen.
- Die Integration von eigenständigen Systemtests in die Build-Pipeline würde die Arbeitsqualität verbessern und eine Rückkopplungsschleife für alle Entwicklungsteams beschleunigen.
- Ein Transaktionsframework würde helfen, die Geschäftslogik von einer Technologieplattform zu trennen.
- Ein verbesserter Entwicklungs-Workflow würde die Verteilung der Aufgaben zwischen den Entwicklungsteams ermöglichen, wodurch ihre Autonomie erhöht, Konflikte reduziert und der Fokus auf die Funktionalität verbessert würde.
- Eine Testsuite für die Leistungsvalidierung würde schnellere und genauere Leistungstests ermöglichen.
- Die Einführung von gemeinsamen Standards der Architekturentwicklung hilft technische Schulden zu verringen und zu vermeiden.
Als wir alle oben genannten Lösungen für die Produktion implementierten und bereitstellten, wurde eine eng gekoppelte Monolith-Anwendung in eine Plattform verwandelt. Diese entscheidende Änderung führte zu folgendem:
- Jede Codebasis eines Subsystems wurde auf Geschäftslogik reduziert, die sich nur auf die Subsystemdaten bezog.
- Subsysteme wurden in separaten Git-Repositories platziert.
- Mit Hilfe der API-Integration haben wir Verträge zwischen Subsystemen implementiert, die es Entwicklern ermöglichen, Integrationen durch Konsens zu ändern, der durch die Pull-Request-Funktionalität bereitgestellt wird.
- Die Umstellung auf den schwachen Code-Besitz gibt einzelnen Teams die Möglichkeit, unabhängig an der End-to-End-Funktionalität zu arbeiten und ihren Arbeitsablauf zu steuern.
Technologien
- Java 8/11 - eine Programmiersprache
- Hazelcast – ein In-Memory Data Grid
- Spring Framework - eine Java-Anwendungsplattform
- Flyway - ein Datenbankmigrationstool
- Oracle Datenbank - ein Persistenzspeicher
- jOOQ – eine leichtgewichtige Bibliothek für das Datenbank-Mapping und typsichere SQL-Abfrage in Java
- Narayana - ein Transaktionsmanager für JTA
- IBM MQ - ein Java-Nachrichtendienst
- ArchUnit, JUnit, Mockito, Gurke, DBUnit - automatisierte Test-Tools
- Jenkins, Docker, Maven, Python, Git (Bitbucket), Linux - Entwicklungstools und CI-Deployment-Tools
- Prometheus - ein Monitoring-Tool
- Logstash, Logback - Protokollierungstools
Technologien
Ergebnis
- Die Funktionalität der Geschäftsdomänen wurde in Subsysteme aufgeteilt, wodurch eine unabhängige Wartung ermöglicht wurde.
- Die Änderungen an einer Geschäftslogikkomponente wirken sich nicht auf andere Komponenten aus, wodurch die Anzahl der Fehler verringert, deren Erkennung erleichtert und die Fehlerbehebungszeit erheblich verbessert wird.
- Durch die Einführung einer Abstraktionsschicht zwischen einer Geschäftslogik- und einer Persistenzschicht wurden die Code-Duplikate beseitigt und damit der Produktentwicklungsprozess vereinfacht.
- Schnellere Markteinführung und höhere Qualität neuer Produkte.
- Durch die Verteilung der Systeme auf separate Aufbewahrungsorte wurde die Erstellungszeit erheblich verkürzt, was ein schnelleres Feedback zu Veränderungen und geringere Kosten für ihre Implementierung ermöglichte.
- Gemeinsame Entwicklungsstandards schufen einen einheitlichen Rahmen für Softwareentwickler. Die Gesamteffizienz des Entwicklungsteams wurde bedeutend verbessert.
- Der schwache Code-Besitz gibt den Teams die Möglichkeit zu entscheiden, wie das Framework auf ihrer Ebene implementiert werden soll, um Technologie- und Prozessverbesserungen zu ermöglichen.
- Laut Development Managern erhöht sich auf solche Weise das Mitarbeiterengagement.
Wir haben eine Lösung für Ihre Anforderungen. Senden Sie uns einfach eine Nachricht, und unsere Experten werden sich so schnell wie möglich mit Ihnen in Verbindung setzen.
Vielen Dank!
Wir haben Ihre Anfrage erhalten und werden Sie in Kürze kontaktieren.