Zpět na domů

Integrace B2B portálu s ERP přes ESB

Článek popisuje vzor asynchronní obousměrné integrace B2B portálu s ERP jádrem přes ESB pro vyhnutí se race condition a ztrátám dat. Zahrnuje data flow, buferizaci ve frontách a protokol AOK pro dokumentaci. Vhodné pro middle/senior vývojáře

ESB pro B2B a ERP: asynchronní synchronizace bez ztrát
Advertisement 728x90

Odolná integrace B2B portálu s ERP jádrem prostřednictvím ESB

V podnikových projektech se B2B portály pro obchodní partnery integrují s monolitními systémy jako ERP nebo Tririga. Přímé připojení vede k race condition, kdy souběžné změny od uživatele portálu a administrátora jádra přepisují data. Řešením je ESB jako mezivrstva s událostmi řízeným modelem pro obousměrný asynchronní přenos.

ESB izoluje portál od vnitřní struktury jádra: přijímá JSON, transformuje do SOAP/XML nebo specifického REST, ukládá do fronty (RabbitMQ, Kafka) při nedostupnosti. Jádro zůstává single source of truth – změny v něm spouští webhook v sběrnici pro aktualizaci portálu.

Problémy synchronní point-to-point integrace

Synchronní volání způsobují:

Google AdInline article slot
  • Race condition: Poslední požadavek přepíše předchozí.
  • Šíření výpadků: Záloha nebo aktualizace jádra rozbije portál.
  • Bezpečnostní rizika: Otevření API navenek bez patřičné ochrany.

Ve scénáři dodavatel změní kvótu na portálu (z 10 na 50 objektů), administrátor – v jádře (na 5 kvótu pokutě). Bez ukládání do fronty se data ztratí.

Architektura přes ESB: tok dat

Tok dat:

  • Portál odešle JSON do ESB.
  • ESB validuje, transformuje payload, zařadí do fronty.
  • Při dostupnosti jádra – doručení a potvrzení.
  • Změny v jádru → spouštěč → webhook v ESB → aktualizace portálu.

Toto zajišťuje:

Google AdInline article slot
  • Izolaci rozhraní.
  • Asynchronnost s politikou opakování.
  • Odolnost při špičkovém zatížení.

Dokumentace v kódu: protokol AOK

Pro udržení architektury používají AOK – pas v JSDoc komentářích klíčových modulů. Zachycuje účel, architekturu, integrační body, soulad s SOLID.

Příklad pro modul synchronizace kvót:

/**
 * ====================================================================
 * | AOK PASSPORT: MODUL SYNCHRONIZACE KAPACITY |
 * ====================================================================
 *
 * @ÚČEL
 * Zajištění obousměrné synchronizace parametrů „Kvót"
 * mezi Osobním účtem obchodního partnera a kartou v Core systému.
 *
 * @ARCHITEKTURA
 * Přijímá JSON payload od Portálu obchodního partnera.
 * Validuje hodnoty (min/max) podle nastavovací tabulky.
 * Iniciuje aktualizaci záznamu v tabulce (obchodní objekt).
 * Při změně dat ze strany obchodního administrátora spouští
 * `Pozadový proces pro přenos dat zpět přes Webhook.`
 *
 * @INTEGRACE
 * Endpoint: /api/v1/sync_capacity
 * Mechanismus ochrany: validace JWT tokenu, šifrování SSL/TLS.
 * Zpracování chyb: Při nedostupnosti sběrnice se aktivuje
 * `Politika opakování (3 pokusy s intervalem 5 min), poté logování do Kibany.`
 *
 * @SOULAD_S_SOLID
 * Single Responsibility: Modul zodpovídá pouze za synchronizaci dat,
 * logika výpočtu hodnocení je izolována v samostatném mikroslužbě.
 * ==================================================================== */

AOK minimalizuje onboarding: nový vývojář ihned vidí kontext integrace, validaci, zpracování chyb.

Google AdInline article slot

Klíčové komponenty implementace

  • Fronty: RabbitMQ/Kafka pro ukládání do fronty.
  • Transformace: ESB mapuje JSON → legacy formáty (SOAP, XML).
  • Spouštěče: OnSave v jádru pro zpětnou synchronizaci.
  • Bezpečnost: JWT, TLS, omezení rychlosti.
  • Monitorování: Logy v Kibaně, metriky fronty.

Co je důležité

  • Jádro – single source of truth, portál odráží stav přes ESB.
  • Asynchronnost zabraňuje výpadkům a race conditions.
  • AOK v kódu zajišťuje dlouhodobou udržitelnost.
  • Politiky opakování (3 pokusy, 5min interval) pro spolehlivost.
  • Izolace snižuje bezpečnostní rizika od externích API.

— Editorial Team

Advertisement 728x90

Číst dál