Wat een koppeling is en waar het misgaat
Een koppeling is een stuk software dat gegevens tussen twee systemen heen en weer brengt, meestal via een API: een vaste manier waarop programma's met elkaar praten. Als het goed werkt, merk je er niets van. Als het misgaat, merk je het in je omzet.
- Prijzen lopen uit de pas: de shop toont een andere prijs dan het systeem waar de prijs vandaan komt.
- Een bestelling komt niet aan in het systeem dat hem moet verwerken, en niemand ziet het.
- Foutmeldingen verdwijnen stilletjes in een logbestand dat niemand leest.
- Productgegevens komen in een verkeerd formaat binnen en breken pagina's.
- Een koppeling draait zo zwaar dat bezoekers er last van hebben.
Bijna al deze problemen zijn te voorkomen met controles en zichtbare foutmeldingen. Daar begin ik mee, niet met de koppeling zelf.
Hoe ik een koppeling bouw
Ik begin met lezen: hoe zit de Magento-shop in elkaar, welke modules raken hetzelfde onderdeel, en wat verwacht het andere systeem precies. Pas daarna schrijf ik code.
Elke koppeling krijgt een controle op wat er binnenkomt. Klopt een waarde niet, dan gaat hij niet de shop in. Fouten komen op een plek waar iemand ze ziet.
Wijzigingen gaan eerst naar een testomgeving. De uitrol gebeurt zonder dat de shop plat gaat, en op productie doe ik geen volledige cache-flush, want daarmee gooi je alle opgeslagen pagina's weg en wordt de shop tijdelijk traag.
Koppelingen waar ik aan werkte
Dit zijn koppelingen uit de Magento-shop waar ik zelf in werk. De namen van partijen laat ik weg, de soorten werk zijn echt.
- Een marktplaatskoppeling: producten en bestellingen lopen tussen de shop en een marktplaats.
- Een verzendkoppeling met afhaalpunten via een logistieke partner: klanten kiezen bij het afrekenen een afhaalpunt, en de verzendgegevens gaan automatisch door.
- Prijssynchronisatie tussen twee systemen, met een controle die foute prijzen tegenhoudt voordat ze in de shop komen.
- Een koppeling tussen Magento en een losse Next.js-webshop, waarbij bestellingen via de API in Magento terechtkomen. Voorraad en administratie blijven zo op een plek.
Elk van deze koppelingen heeft een eigen valkuil. Bij prijzen is dat een verkeerd getal, bij verzending een ontbrekend adres, bij een tweede shop dubbele of verloren bestellingen.
Productdata: herstellen en herschrijven
Niet elke koppeling gaat naar een ander bedrijf. Soms koppel ik je productdata aan Google of aan een AI-stap die teksten schrijft.
- Herstel van productdata voor Google: bij de shop waar ik in werk was 97 procent van de product-JSON-LD kapot. JSON-LD is de gestructureerde data in een pagina waaruit Google prijs en voorraad haalt. Ik heb het gerepareerd.
- Een AI-pijplijn die ruim 2.000 productpagina's herschreef in drie talen. Een pijplijn is een vaste reeks stappen die per pagina dezelfde controles doorloopt.
Ook hier geldt: eerst de bestaande data lezen, dan wijzigen op een testomgeving, en pas daarna op productie.
Uit de praktijk
Een Magento 2-shop met koppelingen in alle richtingen
Dit is de shop waar ik zelf in werk: Magento 2.4.7 met ruim 3.400 producten, ongeveer 13.600 productpagina's over vier taalversies en 328 actieve modules. De klant blijft anoniem, de cijfers zijn echt.
Op zo'n shop hangt veel aan elkaar: een marktplaats, een vervoerder, een prijssysteem en een tweede webshop. Eén fout in een koppeling kan op honderden pagina's zichtbaar worden.
De shop haalt een mobiele laadtijd (LCP) van 2,14 seconden bij echte bezoekers, tegenover 14 tot 16 seconden eerder. Koppelingen mogen een shop niet traag of onbetrouwbaar maken. Met controles en een testomgeving wordt hij geen van beide.
Wat ik niet doe
Een koppeling draait dag en nacht zonder dat iemand kijkt. Daarom houd ik me aan een paar grenzen.
- Gegevens doorsturen zonder controle op wat er binnenkomt.
- Een koppeling eerst op productie uitproberen.
- Een volledige cache-flush op productie draaien.
- Een koppeling bouwen als er een goede bestaat die past. Dan raad ik die aan.
- Fouten wegstoppen in een logbestand dat niemand leest.
Ik zeg ook eerlijk als een koppeling meer onderhoud meebrengt dan hij oplevert.
Scope en prijs
Wat een koppeling kost, hangt af van het andere systeem (heeft het een goede API?), hoeveel gegevens heen en weer gaan en hoeveel controles erbij moeten.
Ik werk niet met vaste pakketten voor Magento-werk. Na een eerste gesprek weet ik wat de koppeling moet doen en spreken we de omvang af. Meer over hoe ik prijs, staat op de prijzenpagina.