Business AnalyseBusiness Analyst

Wie erfassen und validieren Sie nicht-funktionale Anforderungen an die **Echtzeit**-Daten-synchronisierung zwischen einem Legacy-**Mainframe**-System und einer modernen **SaaS**-Plattform, wenn die Fachanwender keine Leistungsgrenzen artikulieren können, der Anbieter keine **SLA**-Garantien bietet und das Projektmandat vorschreibt, dass keine geschäftskritische Transaktion während der Spitzenlast länger als fünf Sekunden warten kann?

Bestehen Sie Vorstellungsgespräche mit dem Hintsage-KI-Assistenten

Antwort auf die Frage

Die zentrale Herausforderung besteht darin, mehrdeutige Geschäftsbedürfnisse in messbare technische Einschränkungen zu übersetzen, wenn eine direkte Instrumentierung nicht verfügbar ist. Sie müssen eine proxy-basierte Erhebungsstrategie anwenden, indem Sie synthetisches Lasttesting gegen eine Schattenumgebung durchführen, um empirisch Latenz-Baselines abzuleiten, die die Stakeholder anhand konkreter Beispiele und nicht abstrakter Schwellenwerte validieren können. Gleichzeitig sollten Sie ein defensives Pufferungssystem entwerfen, das einen zwischenliegenden Nachrichtenbroker oder In-Memory-Cache verwendet, um den Durchsatz des Legacy-Systems von der variablen Latenz der SaaS-Plattform zu entkoppeln, sodass die harte Vorgabe von fünf Sekunden auch bei einer Verschlechterung auf der Anbieter-Seite eingehalten wird.

Lebenssituation

Problembeschreibung

Ich wurde von einer multinationalen Investmentbank beauftragt, die Integration ihres Legacy-IBM z/OS Mainframe—der zentrale Transaktionsregister enthält, die in COBOL geschrieben sind—mit einer neuen Implementierung der Salesforce Service Cloud zur Verwaltung von Kundenportfolios zu erleichtern. Die kritische Anforderung war, dass jede Handelsausführungsaufzeichnung, die im Mainframe aktualisiert wird, innerhalb von fünf Sekunden in den Dashboards der Berater in Salesforce angezeigt werden muss, während der Marktöffnungszeiten (in der Regel etwa 50.000 Transaktionen pro Minute), doch kein Geschäftsteilnehmer konnte eine "akzeptable" Latenz über "es muss sich sofort anfühlen" definieren. Um die Sache zu komplizieren, weigerte sich Salesforce ausdrücklich, Durchsatz-SLAs für ihre Bulk API bereitzustellen, mit der Begründung, dass es sich um eine Architektur mit Shared Tenant handelt, und das Mainframe-Team verbot jegliche Codeänderungen aufgrund regulatorischer Freeze-Zeiten.

Lösung A: Direkte synchrone REST-API-Aufrufe mit Retry auf der Client-Seite

Dieser Ansatz sah vor, die Middleware zu ändern, um Salesforce-REST-Endpunkte sofort nach der Bestätigung im Mainframe aufzurufen und exponentielles Backoff für Fehler zu verwenden. Vorteile: Einfache Implementierung und sofortige Konsistenz ohne zusätzliche Infrastruktur. Nachteile: Unter Spitzenlast führte die Ratenbegrenzung von Salesforce (100 Anfragen pro Minute und Benutzer) zu kaskadierenden Timeouts und überschritt häufig das Zeitfenster von fünf Sekunden; darüber hinaus riskierte eine Retry-Sturm die Erschöpfung der mainframe-CICS-Region aufgrund von Thread-Blocking.

Lösung B: Apache Kafka-Ereignis-Streaming mit asynchroner Verarbeitung

Wir erwogen, einen Kafka-Cluster bereitzustellen, um Mainframe-SMF (System Management Facility)-Protokolle über einen benutzerdefinierten Parser zu erfassen, damit Salesforce mit seiner eigenen Geschwindigkeit konsumieren kann. Vorteile: Entkoppelte Architekturen beseitigen den Backpressure und bieten Haltbarkeit. Nachteile: Das Protokoll-Parsing führte zu einer variablen Latenz von 3-7 Sekunden aufgrund der EBCDIC-zu-ASCII-Umwandlung und Netzwerk-Hops, was die fünf-sekündige Garantie während der Batch-Synchronisation statistisch unmöglich machte; zusätzlich wiesen die Sicherheits-Teams des Mainframes die Idee zurück, TCP/IP-Ports für Kafka-Connectoren zu öffnen.

Lösung C: Change Data Capture (CDC) über IBM InfoSphere mit Redis-Hot-Cache und Schaltkreisbrecher

Die gewählte Architektur nutzte IBM InfoSphere Data Replication, um die DB2-DASD-Schreibprotokolle auf der Speicherebene zu erfassen – ohne COBOL-Änderungen vorzunehmen – und Änderungen an einen Redis-Cluster (sub-millisekündliche Latenz) zu streamen, der in der Nähe der Salesforce-Middleware plaziert war. Die Middleware las zuerst von Redis und verwendete einen Hystrix-Stil Schaltkreisbrecher, um veraltete, aber aktuelle Daten bereitzustellen, wenn die Salesforce-API-Latenz 4,5 Sekunden überschritt. Vorteile: Umging den Mainframe-Code-Freeze, indem es auf der Datenbankebene operierte; Redis garantierte <50ms Abfrage; der Schaltkreisbrecher setzte die harte fünf Sekunden Obergrenze durch. Nachteile: Erhöhte betriebliche Komplexität erforderten Redis-Persistenz-Tuning und mögliche Szenarien mit eventueller Konsistenz während der Cache-Invaliderung.

Welche Lösung wurde gewählt (und warum)

Wir implementierten Lösung C, da es die einzige Option war, die die unverrückbare fünf-sekündige Vorgabe erfüllte, ohne den regulatorischen Freeze des Mainframe oder die architektonischen Einschränkungen von Salesforce zu verletzen. Der CDC-Ansatz behandelte das Legacy-System als eine unveränderliche Black Box, was die Compliance-Beauftragten zufriedengestellt hat, während der Redis-Cache als Stoßdämpfer für die Volatilität der SaaS fungierte. Das Schaltkreisbrecher-Muster ermöglichte eine sanfte Abwärtskompatibilität statt harter Fehler und stimmte mit der Risikotoleranz des Unternehmens hinsichtlich vorübergehender Datenverzögerungen im Vergleich zur vollständigen Unverfügbarkeit überein.

Ergebnis

Während des ersten Produktion-Stresstests, der ein Handelsvolumen an einem Black Friday simulierte, hielt das System eine P99-Latenz von 1,8 Sekunden für die Updates des Berater-Dashboards aufrecht, mit null Transaktionen, die die fünf Sekunden überschritten, selbst als Salesforce einen Latenzspitzenwert von 45 Sekunden erlebte, aufgrund des durch einen Wettbewerber ausgelösten Nachbarmiteinflusses. Die Mainframe-DB2-CPU-Last stieg nur um 0,3 %, was gut im Rahmen der Kapazitätspläne lag, und die Bank schloss die legacy green-screen-Schnittstelle sechs Monate vor dem Zeitplan ab und sicherte sich zusätzlich 2 Millionen Dollar an jährlichen Lizenzrabatten durch nachgewiesene technische Machbarkeit.

Was Kandidaten oft übersehen

Wenn Geschäftstakeholder die Leistungsanforderungen mit subjektiven Begriffen wie "sofort" oder "echtzeit" beschreiben, welche spezifischen Techniken können Sie verwenden, um diese in messbare KPIs zu übersetzen, ohne nicht-technische Benutzer zu entfremden?

Verlassen Sie sich nicht auf technische Fachbegriffe oder fordern Sie genaue Millisekunden. Stattdessen führen Sie eine Beobachtungsdurchführung-Sitzung durch, in der Sie die Benutzer während der Hauptgeschäftszeiten begleiten und die tatsächliche Zeit messen, die sie damit verbringen, auf aktuelle Systeme zu warten, um zu antworten, bevor sie frustriert sind (typischerweise 3-7 Sekunden für Finanzberater). Präsentieren Sie diese empirischen Beobachtungen als "Wussten Sie, dass Sie derzeit im Durchschnitt 12 Sekunden warten, und wir garantieren unter 2 Sekunden?" Das stellt die Unterhaltung um greifbare Verbesserungen und nicht um abstrakte Ingenieureinschränkungen herum um. Darüber hinaus schlagen Sie vor, RUM (Real User Monitoring)-Pilot-Dashboards mithilfe von JavaScript-Agenteninjektion in die SaaS-Frontend zu erstellen, um Basismesswerte vor der Migration zu sammeln, und so objektive Daten zu liefern, um Diskussionen zu verankern.

Wenn das Legacy-Mainframe keine nativen CDC-Funktionen hat und die Speicherprotokolle (DASD) auf hardwareseitig verschlüsselt sind, die eine protokollbasierte Replikation verhindern, wie können Sie eine nahezu-echtzeit-synchronisierung erreichen, ohne den Legacy-Quellcode zu ändern?

In diesem Szenario müssen Sie Datenbankauslöser auf der DB2-Ebene nutzen und keine Änderungen auf Anwendungs-Ebene mit COBOL vornehmen. DB2 für z/OS unterstützt SQL-Trigger, die externe gespeicherte Prozeduren über LE (Language Environment)-Aufrufe an C- oder Java-Programme, die in USS (Unix System Services) ausgeführt werden, aufrufen können. Diese externen Routinen können dann Nachrichten in IBM MQ oder Kafka Connect enqueue, das auf z/OS läuft. Obwohl dies technisch die Datenbank berührt, vermeidet es Änderungen an der prozeduralen COBOL-Geschäftslogik, die oft die regulatorische Einschränkung ist. Alternativ können Sie Shadow-Table-Replikation mithilfe von IBM Db2 Mirror oder Q Replication implementieren, sofern die z/OS-Version dies zulässt, was auf Datenbank-Engine-Ebene operationiert und für vorhandene Anwendungen transparent ist.

Wenn ein SaaS-Anbieter harte Ratenlimits (z. B. 100 Anfragen/min) durchsetzt, die mathematisch Ihr Spitzenvolumen (1000/min) nicht unterstützen können, und sich weigern, zu verhandeln oder eine dedizierte Tenancy bereitzustellen, welche architektonischen Muster ermöglichen es Ihnen, ihre Servicebedingungen zu respektieren und gleichzeitig Ihr Geschäftsziel von unter fünf Sekunden zu erreichen?

Sie können das API-Limit nicht überschreiten, also müssen Sie die Datenfeinheit ändern. Implementieren Sie das Command Query Responsibility Segregation (CQRS)-Muster kombiniert mit Batch Delta Compression. Anstatt einzelne Transaktionen zu senden, akkumulieren Sie Änderungen in Ihrer Redis-Cache-Schicht und senden Sie Aggregatzustands-Snapshots (z. B. "Portfoliowert hat sich um $X geändert") alle 30 Sekunden über einen geplanten Batch-Job, der nur einen API-Aufruf konsumiert. Für die "sofort"-Sicht der Berater dienen Sie die granularen Daten direkt aus Ihrem Redis-Cache (der Abfrage-Seite), während die SaaS die komprimierte Befehls-Zusammenfassung für offizielle Aufzeichnungen erhält. Dies entspricht dem Limit, da 100 Batches pro Minute 6000 Aktualisierungen abdecken (100 x 60 Sekunden / 1-Sekunden-Intervalle), was gut über Ihrem Bedarf von 1000/min liegt, während die Benutzerschnittstellenverzögerung auf Cache-Geschwindigkeit bleibt.