Retail

Veertien systemen die eindelijk dezelfde taal spreken

Tom&Co verkoopt in honderden winkels, online en via franchise. Achter die winkels draaien een retail-ERP, een kassasysteem, een magazijn, een productdatabase, een loyaltyprogramma en een klantendataplatform — allemaal met hun eigen bestandsformaat, hun eigen ritme en hun eigen idee van wat een artikel is. Arcade bouwde het platform dat ze met elkaar laat praten.

KLANT

Tom&Co

SECTOR

Retail

OPLOSSING

Integratieplatform op Azure

SAMENWERKING

Doorlopend beheer & uitbreiding
Onder de motorkap
Azure Functions
Azure Service Bus
Azure Blob Storage
Event Grid
Application Insights
Azure DevOps Pipelines
.NET
EDIFACT
Oracle
SFTP / FTP
De uitdaging

Elke koppeling apart is te doen. Veertien tegelijk is dat niet.

Een retailketen koppelt niet één systeem aan één ander systeem. Elk nieuw kanaal, elke nieuwe leverancier en elk nieuw loyaltyprogramma wil dezelfde artikelgegevens, prijzen en bestellingen — telkens in een ander formaat.
  • Punt-tot-puntkoppelingen vermenigvuldigen zichWie elk systeem rechtstreeks aan elk ander systeem hangt, bouwt bij het tiende systeem geen koppeling meer maar een kluwen. Eén formaatwijziging raakt dan alles tegelijk.
  • Een bestand dat stilletjes verdwijnt, kost dagenEen leveringsbericht dat niet aankomt of een factuur die halverwege sneuvelt, merk je pas als iemand belt. Tegen dan is het spoor koud.
  • Eén foute regel mag geen hele batch blokkerenVoorraadbestanden komen per duizenden regels binnen. Als één regel de hele verwerking tegenhoudt, staat de winkel met verkeerde voorraad.
  • Een nieuw kanaal mag geen half jaar durenEen nieuwe verkooplijn of een nieuwe partner moet erbij kunnen zonder dat het bestaande landschap opnieuw getest wordt.
De aanpak

Eén gedeelde taal in het midden, veertien vertalers eromheen

In plaats van systemen rechtstreeks aan elkaar te knopen, spreken ze allemaal met hetzelfde centrale datamodel. Elk systeem krijgt één vertaler — meer niet.
Eén canoniek datamodel
Een artikel, een prijs, een bestelling of een levering heeft binnen het platform precies één definitie. Ruim veertig berichttypes delen dat model. Wat een systeem er ook van maakt, in het midden ziet het er altijd hetzelfde uit.
Eén vertaler per systeem
Elk aangesloten systeem heeft zijn eigen koppelmodule met zijn eigen inkomende modellen. Die module vertaalt heen en weer naar het centrale model en kent verder niets van de rest van het landschap.
Berichten in plaats van bestandskoppelingen
Alles loopt over een berichtenbus op Azure. Een systeem publiceert een gebeurtenis; wie ze nodig heeft, luistert mee. Een nieuwe luisteraar toevoegen verandert niets aan de zender.
Een spoor voor elk bestand
Binnenkomende bestanden doorlopen altijd dezelfde vaste route: in → in verwerking → klaar, en bij een fout naar mislukt in plaats van naar de prullenbak. Wat misloopt blijft staan, met tijdstempel, klaar om opnieuw te draaien.
Fouten die zichzelf melden
Elke stap logt met een eigen kenmerk naar Application Insights. Een mislukte verzending wordt automatisch opnieuw geprobeerd en apart gelogd als ze een tweede keer faalt — geen stille mislukking.
Elke koppeling apart uitrolbaar
Elke koppelmodule heeft haar eigen build- en uitrolpijplijn, die alleen start als er in die module iets wijzigt. Een aanpassing aan het loyaltyprogramma raakt de facturatie niet.
Het resultaat

Een landschap dat meegroeit in plaats van vastloopt

14
gekoppelde systemen, elk apart uitrolbaar
45
berichttypes op één gedeeld datamodel
5 min
datamodel 5 min maximale wachttijd op inkomende bestanden
  • Een nieuw systeem is één nieuwe vertaler. Niet veertien aanpassingen. De laatste koppelingen kwamen erbij zonder dat de bestaande hertest moesten worden.
  • Niets verdwijnt in stilte. Elk bestand staat na verwerking op een bekende plaats — ook, en vooral, wanneer het misging.
  • Eén foute regel stopt de rest niet. Voorraadbestanden worden regel per regel afgehandeld; wat lukt gaat door, wat faalt wordt apart gemeld.
  • Onderhoud zonder stilstand. Het platform wordt stap voor stap gemoderniseerd naar het nieuwste Azure Functions-model, koppeling per koppeling, terwijl het gewoon blijft draaien.
>> Press start

Groeit uw systeemlandschap sneller dan uw koppelingen?

Vertel ons welke systemen bij u niet met elkaar praten. In een gesprek van dertig minuten weet u of dit ook bij u werkt.