het probleem.
Veel bedrijven willen één systeem vervangen, bijvoorbeeld de webshop, en de rest laten staan. Dat gaat stroef zodra de oude systemen rechtstreeks met het verdwijnende systeem praten. Elk daarvan moet dan worden aangepast, en aan oude systemen wil niemand graag sleutelen. Soms kan het niet eens: de leverancier is weg, de kennis is weg, of de aanpassing kost meer dan de vervanging zelf.
het idee: de koppeling gedraagt zich als het oude systeem.
In plaats van de oude systemen om te bouwen, laten we de integratielaag het gedrag van het verdwijnende systeem nabootsen. De oude systemen sturen en vragen op dezelfde manier als vroeger. Ze merken niet dat er iets is vervangen. Achter de schermen geeft de koppeling alles door aan het nieuwe systeem, en antwoordt ze op de manier die het oude systeem verwacht.
waarom dat werkt.
- Er hoeft niets te worden ontwikkeld aan het oude systeem, ook niet als de leverancier er niet meer aan werkt.
- De overstap is kleiner en beter te testen, omdat je één kant vervangt in plaats van alle kanten tegelijk.
- Je kunt de oude systemen later op je eigen tempo vervangen.
een voorbeeld.
Bij de nieuwe webshop van Profuomo bouwden we de oude API's na, zodat de bestaande systemen met de nieuwe webshop bleven werken. Lees de Profuomo-case voor het hele project.
wat het lastig maakt.
Je hebt geen ruimte om te onderhandelen. Het oude systeem verandert niet, dus de koppeling moet precies werken zoals het verdwenen systeem werkte. Dat kan lastig zijn, want je kunt niet kiezen voor een eenvoudiger oplossing: wat de oude systemen verwachten, ligt vast. Reken daarom ruim tijd in voor het uitzoeken van hoe het oude systeem zich precies gedraagt.
wat het oude systeem verwacht.
Begin met inventariseren wat het oude systeem stuurt en wat het terugverwacht. Dat is meer dan een lijst met velden. Leg per koppelvlak vast:
- Het formaat van de berichten: bestandsindeling, veldnamen, datum- en getalnotaties en veldlengtes.
- De identificatie: welke nummers het oude systeem gebruikt voor klanten, producten en bestellingen, en of het nieuwe systeem die overneemt of een vertaaltabel nodig heeft.
- De antwoorden: welke bevestiging het oude systeem verwacht, binnen welke tijd, en wat het doet bij een fout of een leeg antwoord.
- Het ritme: haalt het oude systeem zelf op of wordt het gevoed, hoe vaak, en in welke volgorde.
Documentatie is zelden volledig. Bewaar daarom een periode aan echt verkeer en gebruik dat als maatstaf: wat daar niet in voorkomt, hoef je waarschijnlijk niet na te bouwen, en wat er wel in staat, moet precies kloppen.
oud en nieuw naast elkaar.
De koppeling kan het nieuwe en het verdwijnende systeem een tijd lang allebei bedienen. De oude systemen zien één koppelvlak, dat van vroeger. Daarachter bepaal je zelf welk deel al naar het nieuwe systeem gaat, bijvoorbeeld eerst alleen voorraad opvragen en later ook bestellingen aanmaken. Zo ontdek je verschillen in kleine stappen in plaats van allemaal op één dag.
vergelijken voordat je overschakelt.
Voordat het nieuwe systeem leidend wordt, wil je weten dat het dezelfde antwoorden geeft als het oude. Stuur dezelfde vragen naar beide en vergelijk de uitkomsten: aantallen, totalen en een steekproef van losse records. Bepaal vooraf wat "hetzelfde" betekent. Een andere volgorde in een lijst is misschien onschuldig, een andere afronding van een bedrag niet. Spreek ook af wie beslist dat het goed genoeg is.
weet welk systeem wat heeft afgehandeld.
Zodra twee systemen tegelijk werk aannemen, heeft elk record een herkomst. Leg per bestelling, zending of factuur vast welk systeem die heeft afgehandeld. Andere processen hebben die informatie nodig om de juiste vervolgstap te kiezen.
Een voorbeeld uit de praktijk: een klant stapte tegelijk over op een nieuwe webshop en een nieuw WMS. Tijdens de overgang vergat men vast te leggen naar welk WMS elke bestelling was gegaan. Andere geautomatiseerde processen hadden die informatie nodig om goed te blijven werken. Het gevolg was dat bestellingen die naar het oude WMS waren gegaan handmatig moesten worden afgehandeld, terwijl nieuwe bestellingen volledig automatisch konden lopen. Samen met de klant losten we dat op met een reconciliatieflow. Het is een les voor elke overgang: leg per bestelling vast welk systeem haar heeft afgehandeld, en bedenk dat vooraf in plaats van achteraf.
terugdraaien.
Spreek vooraf af tot welk punt je terug kunt en wat daarvoor nodig is. Zolang het oude systeem ongewijzigd blijft en de koppeling kan terugschakelen, is terugdraaien een instelling en geen project. Bepaal wel wat er gebeurt met records die het nieuwe systeem in de tussentijd heeft afgehandeld: die moeten in het oude systeem bekend zijn of apart worden bijgehouden.
wat het kost.
Eerst valideren we technisch of de koppeling kan, daarna geven we een vaste prijs voor de afgesproken scope. De prijs hangt af van de soorten systemen, bekend of oud, van het aantal routes en van de totale complexiteit.
checklist.
- Koppelvlakken van het oude systeem geïnventariseerd: berichten, identificatie, antwoorden, ritme.
- Echt verkeer bewaard als maatstaf.
- Afgesproken welke delen eerst overgaan en welke later.
- Oud en nieuw vergeleken met vooraf bepaalde criteria.
- Per record vastgelegd welk systeem het heeft afgehandeld.
- Rollbackpunt afgesproken, inclusief wat er met tussentijdse records gebeurt.