Business analyseBusiness Analyst

Hoe haal je en valideer je niet-functionele vereisten voor **real-time** gegevenssynchronisatie tussen een legacy **mainframe** systeem en een modern **SaaS** platform wanneer zakelijke gebruikers geen prestatiegrenzen kunnen articuleren, de leverancier geen **SLA** garanties biedt, en het projectcharter vereist dat geen bedrijfskritische transactie langer dan vijf seconden in de wachtrij kan staan tijdens piekbelasting?

Slaag voor sollicitatiegesprekken met de Hintsage AI-assistent

Antwoord op de vraag

De kernuitdaging ligt in het vertalen van vaag zakelijke behoeften naar meetbare technische beperkingen wanneer directe instrumentatie niet beschikbaar is. Je moet een proxy-gebaseerde elicitatiestrategie gebruiken, met synthetische belastings testen tegen een schaduwomgeving om empirisch latentie-baselines af te leiden die belanghebbenden kunnen valideren door middel van concrete voorbeelden in plaats van abstracte drempels. Tegelijkertijd moet je een defensief bufferen patroon architecteren met behulp van een tussenliggende berichtbroker of in-memory cache om de throughput van het legacy systeem te ontkoppelen van de variabele latentie van het SaaS platform, zodat de harde vijf-seconden beperking zelfs tijdens vendor-side verslechtering wordt nageleefd.

Situatie uit het leven

Probleembeschrijving

Ik werd ingehuurd door een multinationale investeringsbank om de integratie van hun legacy IBM z/OS mainframe—dat de kern transactie ledgers in COBOL host—met een nieuwe Salesforce Service Cloud implementatie voor klantportefeuillebeheer te faciliteren. De kritieke vereiste was dat elke handelsuitvoeringsrecord die in de mainframe werd bijgewerkt, binnen vijf seconden zichtbaar moest zijn in de dashboards van de adviseurs in Salesforce tijdens de pieken op de marktopeningen (ongeveer 50.000 transacties per minuut), terwijl geen enkele zakelijke belanghebbende kon definiëren wat "acceptabele" latentie betekende, behalve "het moet onmiddellijk aanvoelen." De zaken werden bemoeilijkt doordat Salesforce expliciet weigerde doorvoers SLA's voor hun Bulk API te bieden, omdat ze een gedeelde tenant-architectuur hadden, en het mainframe-team verbood enige codewijzigingen vanwege regelgeving.

Oplossing A: Directe synchrone REST API aanroep met client-side retry

Deze benadering hield in dat de middleware werd aangepast om Salesforce REST eindpunten onmiddellijk aan te roepen na de commit van de mainframe, waarbij exponentiële terugval werd toegepast voor fouten. Voordelen: Eenvoud van implementatie en onmiddellijke consistentie zonder extra infrastructuur. Nadelen: Onder piekbelasting veroorzaakte de rate limiting van Salesforce (100 verzoeken per minuut per gebruiker) kettingtijdoverschrijdingen, wat vaak de vijf-seconden venster overschreed; bovendien riskeren retry-stormen de uitputting van de mainframe CICS regio door thread blocking.

Oplossing B: Apache Kafka evenementstreaming met asynchrone verwerking

We overwoegen de inzet van een Kafka cluster om mainframe SMF (System Management Facility) logs in te nemen via een aangepaste parser, zodat Salesforce in zijn eigen tempo kon consumeren. Voordelen: Ontkoppelde architecturen elimineren terugdruk en bieden duurzaamheid. Nadelen: Log parsing introduceerde een variabele latentie van 3-7 seconden door EBCDIC naar ASCII conversie en netwerksprongen, waardoor de garantie van vijf seconden statistisch onmogelijk werd tijdens batch synchronisatievensters; bovendien wees het mainframe beveiligingsteam het idee van het openen van TCP/IP poorten voor Kafka connectors af.

Oplossing C: Change Data Capture (CDC) via IBM InfoSphere met Redis hot-cache en circuitbreaker

De gekozen architectuur gebruikte IBM InfoSphere Data Replication om DB2 DASD write-ahead logs op te vangen op de opslaglaag—waardoor COBOL wijzigingen werden vermeden—en stroomde wijzigingen naar een Redis Cluster (sub-milliseconde latentie) dat samen met de Salesforce middleware werd geplaatst. De middleware las eerst van Redis, met een Hystrix-achtige circuitbreaker om verouderde maar recente gegevens te serveren als de Salesforce API latentie meer dan 4,5 seconden overschreed. Voordelen: Omging de mainframe code freeze door op de database laag te opereren; Redis garandeerde <50ms retrieval; circuitbreaker handhaafde de harde vijf-seconden limiet. Nadelen: Verhoogde operationele complexiteit vereiste Redis persistentie afstemming en potentiële scenario's van uiteindelijke consistentie tijdens cache-invalidation.

Welke oplossing werd gekozen (en waarom)

We implementeerden Oplossing C omdat dit de enige optie was die voldeed aan de onveranderlijke vijf-seconden beperking zonder in strijd te zijn met de mainframe regulatoire freeze of de architectonische beperkingen van Salesforce. De CDC benadering behandelde het legacy systeem als een onveranderlijke black box, wat de compliance officers tevredenstelde, terwijl de Redis cache fungeerde als een schokdemper voor SaaS volatiliteit. Het circuitbreaker patroon bood een elegante degradatie in plaats van harde fouten, wat overeenkwam met de risicotolerantie van het bedrijf voor tijdelijke verouderde gegevens versus volledige onbeschikbaarheid.

Resultaat

Tijdens de eerste productie stresstest die het handelsvolume van Black Friday simuleerde, behield het systeem een P99 latentie van 1,8 seconden voor updates van het adviseursdashboard, met geen enkele transactie die de vijf-seconden grens overschreed, zelfs niet toen Salesforce een 45-seconden latentiepiekt ervaren vanwege een concurrerende tenant-geïnduceerde noisy neighbor effect. De overhead van de mainframe DB2 CPU steeg met slechts 0,3%, ruim binnen de capaciteitsplannen, en de bank slaagde erin de legacy green-screen interface zes maanden voor schema uit te faseren, wat een extra $2M aan jaarlijkse licentiekortingen opleverde dankzij gedemonstreerde technische haalbaarheid.

Wat kandidaten vaak missen

Wanneer zakelijke belanghebbenden prestatievereisten beschrijven met subjectieve termen zoals "onmiddellijk" of "real-time," welke specifieke technieken kun je dan gebruiken om deze om te zetten in meetbare KPI's zonder niet-technische gebruikers te vervreemden?

Vertrouw niet op technische jargon of eis exacte milliseconden. Voer in plaats daarvan een walkthrough observatiesessie uit waarbij je gebruikers observeert tijdens piekuren, en meet de werkelijke tijd die ze besteden aan wachten op respons van de huidige systemen voordat ze frustratie tonen (typisch 3-7 seconden voor financiële adviseurs). Presenteer deze empirische observaties als "Wist je dat je momenteel gemiddeld 12 seconden wacht, en wij kunnen onder de 2 seconden garanderen?" Dit verandert het gesprek rondom tastbare verbeteringen in plaats van abstracte technische beperkingen. Stel ook RUM (Real User Monitoring) pilot dashboards voor met behulp van JavaScript agentinjectie in de SaaS frontend om baseline metrics te verzamelen vóór migratie, wat objective data biedt om de discussies te verankeren.

Als de legacy mainframe geen native CDC mogelijkheden heeft en de opslaglogs (DASD) op hardware-niveau zijn versleuteld, waardoor log-gebaseerde replicatie wordt voorkomen, hoe kun je dan bijna real-time synchronisatie bereiken zonder de legacy broncode te wijzigen?

In dit geval moet je database triggers op het DB2 niveau gebruiken in plaats van wijzigingen in de applicatielaag COBOL. DB2 voor z/OS ondersteunt SQL triggers die externe opgeslagen procedures kunnen aanroepen via LE (Language Environment) oproepen naar C of Java programma's die draaien in USS (Unix System Services). Deze externe routines kunnen vervolgens berichten naar IBM MQ of Kafka Connect op z/OS in de wachtrij plaatsen. Hoewel dit technisch de database aanraakt, vermijdt het veranderingen in de procedurele COBOL bedrijfslogica, die vaak de regulatoire beperking is. Als alternatief kun je shadow table replicatie implementeren met behulp van IBM Db2 Mirror of Q Replication als de z/OS versie dit toestaat, wat op niveau van de database-engine werkt en transparant is voor bestaande applicaties.

Wanneer een SaaS leverancier strikte limieten oplegt (bijv. 100 verzoeken/minuut) die wiskundig je piekbelasting (1000/minuut) niet kunnen ondersteunen, en ze weigeren te onderhandelen of dedicated tenancy te bieden, welke architectonische patronen stellen je in staat hun servicevoorwaarden te respecteren terwijl je toch aan je sub-vijf-seconden zakelijke vereiste voldoet?

Je kunt de API limiet niet overschrijden, dus je moet de datagrootte aanpassen. Implementeer het Command Query Responsibility Segregation (CQRS) patroon in combinatie met batch delta compressie. In plaats van individuele transacties te versturen, verzamel je wijzigingen in je Redis cache-laag en zend je aggregaat status snapshots (bijv. "portefeuille netto waarde veranderd met $X") elke 30 seconden via een geplande batch job die slechts één API aanroep verbruikt. Voor de "onmiddellijke" weergave van de adviseurs, dien de gedetailleerde gegevens direct van je Redis cache (de query kant) terwijl de SaaS de gecomprimeerde command samenvatting ontvangt voor officiële verslaglegging. Dit respecteert de limiet omdat 100 batches per minuut 6000 updates dekt (100 x 60 seconden / 1 seconde intervallen), wat goed boven je behoefte van 1000/minuut ligt, terwijl de gebruikerslatentie op cache-snelheid blijft.