Stellen Sie sich vor, Sie machen sich auf den Weg, um die Komplexität der Integration von Banken in Ihr System zu bewältigen. Sie beginnen mit einer einfachen Idee: Daten sammeln, speichern und präsentieren. Aber die Landschaft verändert sich ständig, und hinter jeder Ecke lauern unzählige Unbekannte.

Sie treffen also eine Entscheidung: Halten Sie es einfach und auf den aktuellen Bedarf ausgerichtet. Ihre Lösung muss wie ein lebender Organismus sein, der sich ständig an seine Umgebung anpasst. Das ist vergleichbar mit dem Konzept der genetischen Algorithmen, bei denen sich Lösungen im Laufe der Zeit weiterentwickeln, aus Fehlern lernen und mit jeder Iteration besser werden.

Stellen Sie es sich so vor: Jede Generation Ihrer Lösung ist wie ein neues Kapitel in einer Geschichte. Sie beginnen mit dem, was funktioniert, aber Sie sind immer offen für neue Herausforderungen und Erfahrungen. Und wie in einer guten Geschichte bemühen Sie sich um Rückwärtskompatibilität - Sie stellen sicher, dass alte Elemente erhalten bleiben, während Sie neue Wendungen einführen, um die Dinge spannend zu halten.

Auf dem Weg dorthin haben Sie keine Angst vor Experimenten. Sie probieren neue Ideen aus, sehen, was funktioniert, und verwerfen, was nicht funktioniert. Es geht darum, zu lernen und zu wachsen, und jedes Experiment bringt Sie der perfekten Lösung näher.

In dieser Erzählung werden Methoden wie Agile und Extreme Programmierung sind Ihre treuen Begleiter, die Sie durch die Irrungen und Wirrungen der Entwicklung führen. Sie bieten Struktur und Unterstützung und helfen Ihnen, sich in der sich ständig verändernden Landschaft der Bankintegrationen zurechtzufinden.

Und so geht Ihre Reise weiter, bewaffnet mit Einfachheit, Anpassungsfähigkeit und der Bereitschaft zu lernen. Jedes Kapitel bringt neue Herausforderungen mit sich, aber mit jeder Herausforderung auch die Möglichkeit, sich weiterzuentwickeln und zu verbessern. Und am Ende steht Ihre Lösung als Zeugnis für die Macht des Geschichtenerzählens in der Softwareentwicklung.

In der Generation 0 unseres Ansatzes zur Datenspeicherung und -abfrage verfolgten wir eine vereinfachte, optimistische Strategie, die stark auf externe Bank-APIs und die Netzwerkinfrastruktur angewiesen war. Dieser "Alles oder nichts"-Ansatz ging von der Annahme aus, dass jeder Fehler beim Empfang einer Transaktion für ein Konto bedeutet, dass die Daten nicht gespeichert werden.

Obwohl wir einen Mechanismus zur Wiederholung implementiert haben, war dieser oft unzureichend, da er dieselbe Schleife fortsetzte und zu anhaltenden Fehlern wie Datentypabweichungen führte, die letztendlich die Datenspeicherung verhinderten. Trotz dieser Mängel entschieden wir uns dafür, die Daten unverändert in einer relationalen Datenbank zu speichern - eine Entscheidung, die zwar unkonventionell war, aber die Anforderungen unseres ursprünglichen Anwendungsfalls erfüllte.

Als wir uns jedoch mit der Nutzung der Generation 0 beschäftigten, entdeckten wir kritische Schwachstellen in unserem allzu optimistischen Vertrauen auf externe Faktoren. Ein potenzielles Problem ist das Fehlen von Daten nach der Autorisierung, was die Grenzen eines "Alles-oder-Nichts"-Ansatzes verdeutlicht. Es wurde deutlich, dass wir für die Zukunft einen belastbareren und anpassungsfähigeren Ansatz benötigen.

Auftritt Generation 1. Da wir die Unzulänglichkeiten unserer früheren Strategie erkannten, schwenkten wir auf eine "So viel wie möglich" -Mentalität um. Da Konten im Rahmen einer Genehmigung verwaltet werden, verfeinerten wir unseren Ansatz, um jedes Konto innerhalb dieses Rahmens einzeln zu bearbeiten. Diese Methode stellte sicher, dass ein Problem mit einem bestimmten Konto nicht die Bearbeitung anderer Konten unter derselben Berechtigung unterbrach. Indem wir die Konten auf diese Weise isolierten, konnten wir Probleme von Fall zu Fall angehen und beheben, was unsere Fähigkeit zur effizienten Verwaltung und Lösung von Diskrepanzen verbesserte. Durch diese strategische Anpassung konnten wir nicht nur den Umgang mit großen Datenmengen rationalisieren, sondern auch die Integrität und den Datenschutz der Daten unserer Kunden stärken und unser Engagement für die Beibehaltung klarer Grenzen zwischen den einzelnen Konten unter Beweis stellen, selbst innerhalb einer einheitlichen Autorisierungsumgebung.

Als wir in eine relativ ruhige Phase eintraten, in der wir uns darauf konzentrierten, so viele Banken wie möglich in unser System zu integrieren, warf der Zustrom an Daten ein Licht auf die wahre Natur unserer Daten - ihre Form, ihr Volumen und ihre Größe. Unsere ursprüngliche Strategie, die Daten direkt in ihrer ursprünglichen Form zu speichern, begann unsere Ressourcen zu belasten und unsere Verarbeitungsmöglichkeiten zu verlangsamen, was sich besonders bei der Erstellung von Berichten für Konten mit über 100.000 Transaktionen bemerkbar machte. Angesichts solcher Mengen mussten wir unseren Ansatz für die Datenspeicherung neu bewerten. Um dieses Problem zu lösen, gehen wir zu einer effizienteren Methode über, die es uns ermöglicht, Berichte zu verwalten und zu erstellen, ohne auf die Besonderheiten einzelner Transaktionen einzugehen. Diese überarbeitete Strategie zielt darauf ab, die Ressourcennutzung zu optimieren und die Verarbeitungsgeschwindigkeit zu erhöhen, während gleichzeitig die Vertraulichkeit und Integrität der Daten gewahrt bleibt.

Nach reiflicher Überlegung trafen wir die Entscheidung, die Möglichkeiten unserer relationalen Datenbank voll auszuschöpfen. Mit einem tieferen Verständnis der Daten und des Canonic-Datenmodell besprochen in einem früheren Artikelbesprochen wurde, begannen wir mit der Erstellung einer breiten Tabelle, die uns als primäre Datenspeicherlösung dienen sollte. Diese Umstellung ermöglichte nicht nur einen effizienteren Datenabruf, sondern erforderte auch die Implementierung des Adapter Patterns, um eine nahtlose Integration mit unseren bestehenden Systemen zu ermöglichen.

Dieser Übergang brachte jedoch auch neue Herausforderungen mit sich, insbesondere bei der Datenmigration und den Einführungsprozessen. Diese komplexen Zusammenhänge sollten in künftigen Veröffentlichungen näher beleuchtet werden, da sie wichtige Aspekte unserer Entwicklungsreise darstellen.

Mit der Veröffentlichung von Generation 2 haben wir eine neue Ära der Datenverwaltung eingeläutet, indem wir die Leistungsfähigkeit relationaler Datenbanken genutzt und einen stärker strukturierten Ansatz für die Speicherung gewählt haben. Doch unsere Reise geht weiter, denn wir navigieren durch die sich ständig verändernde Landschaft der Bankintegrationen und versuchen, unsere Prozesse mit jeder neuen Generation zu optimieren und zu verfeinern.

Die Bedeutung der Auswahl geeigneter Datentypen und -kapazitäten kann gar nicht hoch genug eingeschätzt werden, wie wir in einem besonders interessanten Fall erfahren haben. Ursprünglich gingen wir davon aus, dass unser System nicht mit Transaktionen im Milliardenbereich konfrontiert werden würde, also entschieden wir uns für einen dezimalen Datentyp mit einer Kapazität von 12 Ziffern, einschließlich 2 Dezimalstellen. Das Schicksal wollte es jedoch, dass wir auf ein Szenario stießen, in dem sich diese Kapazität als unzureichend erwies.

Transaktionen, die über unsere ursprünglichen Erwartungen hinausgingen, veranlassten uns, die Kapazität unseres Datentyps um weitere 2 Stellen zu erweitern. Doch damit war unsere Reise noch nicht zu Ende. Mit der Integration unseres ersten Kryptoanbieters standen wir vor einer weiteren Herausforderung. Kryptowährungstransaktionen mit ihren inhärent unterschiedlichen Skalen- und Präzisionsanforderungen erforderten eine weitere Anpassung. Wir sahen uns gezwungen, die Genauigkeit auf 8 Stellen zu erhöhen, um den einzigartigen Merkmalen von Krypto-Transaktionen Rechnung zu tragen.

Diese Erfahrung machte deutlich, wie dynamisch unsere Datenlandschaft ist und wie wichtig es ist, angesichts der sich verändernden Anforderungen anpassungsfähig zu bleiben. Außerdem wurde deutlich, wie wichtig es ist, bei der Auswahl von Datentypen und -kapazitäten vorausschauend vorzugehen, um sicherzustellen, dass unsere Systeme in der Lage sind, ein breites Spektrum an Transaktionsvolumen und -typen zu verarbeiten.

Als wir unser Produktangebot um Verified Analytics und Insights erweiterten, blieb unser Vertrauen in die Zuverlässigkeit von relationalen Datenbanken unerschütterlich.

Unser Optimismus wurde jedoch bald von der Realität eingeholt.

Als wir tiefer in den Entwicklungsprozess eintauchten, stießen wir auf eine große Hürde: den Aufwand für die Vorberechnung der Berichte während der Laufzeit. Dieser Aufwand wurde besonders deutlich, wenn wir mit großen Konten zu tun hatten, was uns dazu veranlasste, unseren Ansatz zu überdenken.

Daraufhin haben wir in der nächsten Generation unseres Systems eine wesentliche Verbesserung vorgenommen. Wir führten ein Konzept ein, das wir als "Post-Processing" bezeichneten, bei dem die Berechnung von Berichten auf eine spätere Phase verlagert wurde, wodurch die Laufzeitoperationen entlastet wurden.

Durch diese strategische Umstellung wurden nicht nur unsere Prozesse gestrafft, sondern auch die Effizienz und Skalierbarkeit unseres Systems verbessert, um sicherzustellen, dass unsere Produkte zeitnahe und genaue Einblicke liefern, ohne dabei Kompromisse bei der Leistung einzugehen. Dies war ein entscheidender Moment auf unserer Entwicklungsreise, der die Bedeutung von Anpassungsfähigkeit und kontinuierlicher Verbesserung bei der Bewältigung der Komplexität von Datenmanagement und -analyse verdeutlicht hat.

Die Begegnung mit unserem ersten Konto mit mehreren Millionen Transaktionen stellte uns vor mehrere Herausforderungen, die zu einer erheblichen Weiterentwicklung unseres Ansatzes für die Datenabfrage führten. Zunächst erwies sich der Prozess der Datenerfassung für solch große Konten als zeitaufwändig und dauerte oft mehrere Stunden. Darüber hinaus konnte unsere bestehende Speichermethode die Einfügung solch großer Datenmengen nur schwer bewältigen.

Inmitten dieser Herausforderungen ist es erwähnenswert, dass unsere Verschlüsselungsprotokolle unerschütterlich blieben und die Sicherheit der Daten in unserem System gewährleisteten.

Um diese Probleme zu lösen, haben wir die nächste Generation der Datenabfrage eingeleitet, die durch die Einführung von Bankeinsätzen gekennzeichnet ist. Durch diese Innovation wurde die Leistung drastisch verbessert und die Datenerfassungszeit von mehrerenDutzend Minuten auf nur wenige Sekunden oder Minuten reduziert.

Außerdem haben wir unsere Datenabrufstrategie umfassend überdacht und neu gestaltet. Eine wesentliche Verbesserung bestand darin, historische Daten in überschaubare Teile aufzuteilen und diese gleichzeitig zu füllen. Diese Parallelisierungsstrategie führte zu einem erheblichen Leistungsschub, der die Effizienz um den Faktor N steigerte, wobei N für die Anzahl der Datenchunks steht.

Mit diesen Fortschritten wurden nicht nur die unmittelbaren Herausforderungen durch Konten mit mehreren Millionen Transaktionen bewältigt, sondern auch die Grundlagen für ein skalierbareres und stabileres Datenabrufsystem geschaffen. Durch die Nutzung paralleler Verarbeitungstechniken und die Optimierung unseres Ansatzes für die Datenspeicherung und -abfrage konnten wir sicherstellen, dass unser System nahtlos wachsende Datenmengen verarbeiten kann und gleichzeitig ein optimales Leistungsniveau beibehält.

Gerade als wir dachten, wir hätten den Höhepunkt unserer Datenabfragelösung erreicht, sahen wir uns mit einer neuen Reihe von Herausforderungen konfrontiert. Trotz der Effizienzgewinne, die wir mit unserem System der neuesten Generation erzielten, stellten wir bald einen alarmierenden Trend fest: Größe und Belastung unserer Datenbank wuchsen in einem noch nie dagewesenen Tempo, das in keinem Verhältnis zu unseren Erwartungen zu stehen schien.

Als wir die Ursachen für dieses exponentielle Wachstum genauer untersuchten, entdeckten wir eine Vielzahl neuer Anwendungsfälle und Anforderungen, die aus verschiedenen Bereichen unseres Unternehmens kamen. Der Bedarf an Funktionen wie z. B. Backfills und vielen anderen wurde immer deutlicher und zwang uns dazu, unseren Ansatz erneut zu überdenken und neu zu gestalten.

Aber diese Erkenntnis trübte unsere Laune nicht, sondern entfachte ein neues Gefühl der Begeisterung und Entschlossenheit. Wir wussten, dass die Reise zu unserer nächsten Generation der Datenabfrage mit Herausforderungen verbunden sein würde, aber sie versprach auch Innovation und Fortschritt. Und so machten wir uns voller Vorfreude auf den Weg, um das nächste Kapitel unserer Entwicklungsgeschichte zu erforschen und zu gestalten.

Aber das, mein Freund, ist eine Geschichte für ein anderes Mal - eine, die Sie auf den Seiten unserer kommenden Abenteuer vor Ihren Augen entfalten werden.

Bleiben Sie dran, denn das Beste kommt erst noch.

pdf herunterladen
EINE DEMO ANFORDERN

Sehen Sie, was Circit für Ihr Unternehmen tun kann