Architektúra a fungovanie
Architektúra Web Checkout SDK je navrhnutá tak, aby bolo SDK rýchle, flexibilné a ľahko rozšíriteľné. Základný princíp spočíva v oddelení jadra (modulu Core) a jednotlivých funkčných modulov (Apple Pay, Google Pay, ...). Vďaka tomu je možné načítavať len tie časti, ktoré e-shop skutočne potrebuje, a tým minimalizovať záťaž aj riziko chýb.
Základná koncepcia
Checkout SDK je vystavané ako viacvrstvový modulárny systém, ktorého cieľom je oddelenie jednotlivých častí a minimalizácia závislostí. Základná koncepcia vychádza z troch vrstiev: Loader, Core a funkčné moduly. Loader predstavuje vstupný bod celej knižnice, Core zaisťuje zdieľanú infraštruktúru a funkčné moduly implementujú konkrétne funkcionality.
Štruktúra
-
Loader (
@comgate/checkout-js) je jediným vstupným bodom celej knižnice. Jeho úlohou je podľa dodanej konfigurácie overiť parametre, stiahnuť potrebné moduly z Comgate CDN a zaistiť ich zavedenie do DOMu v správnom poradí. Vykonáva tiež napríklad správu verzií. Funguje teda ako riadiaca vrstva a je dostupný buď ako balíček na NPM, alebo prostredníctvom Comgate CDN. -
Core tvorí základnú vrstvu SDK. Poskytuje infraštruktúru zdieľanú všetkými modulmi – spravuje udalosti, logovanie a komunikáciu s Comgate API. Tento modul nie je samostatne publikovaný a jeho minifikovaný kód je distribuovaný výhradne prostredníctvom Comgate CDN.
-
Funkčné moduly sa nachádzajú pod Core a každý z nich implementuje konkrétnu funkcionalitu. Moduly sú nezávislé, načítavajú sa oddelene a spravidla nevyžadujú ďalšie závislosti na iných moduloch. Rovnako ako Core nie sú verejne publikované a ich minifikované kódy sú poskytované prostredníctvom Comgate CDN.
Diagram štruktúry modulov
Architektonické princípy
Návrh Checkout SDK vychádza z niekoľkých kľúčových zásad, ktoré určujú spôsob jeho používania a údržby:
-
Modularita – každá časť SDK je samostatná a možno ju použiť nezávisle na ostatných. Vďaka tomu sa načítavajú iba skutočne potrebné komponenty, čo znižuje objem prenášaného kódu a zrýchľuje načítanie.
-
Izolácia – jednotlivé moduly sú oddelené, takže chyba v jednom neovplyvní fungovanie ostatných. Tým je zaistená vyššia stabilita, jednoduchšie ladenie aj údržba.
-
Distribúcia cez CDN – vývojár nemusí moduly zostavovať ani ručne aktualizovať. Vždy má k dispozícii aktuálnu a optimalizovanú verziu, čo výrazne zjednodušuje nasadenie aj prevádzku. Comgate tiež môže priebežne dodávať opravy a nové funkcie bez nutnosti zásahu zo strany e-shopu.
-
Verziovateľnosť – SDK je publikované v rôznych verziách prostredníctvom CDN, pričom je možné presne definovať požadovanú majoritnú verziu (napr.
@2). Integrátor si tak môže zvoliť stabilnú verziu pre produkčné prostredie a súčasne testovať najnovšie buildy inde. To uľahčuje migrácie a minimalizuje riziko neočakávaných zmien.
Celkovo táto architektúra prináša rýchlosť, stabilitu a flexibilitu, ktoré sú kľúčové pre moderné e-shopy. Vyššie nároky na implementáciu predstavujú určitú cenu za tieto výhody, avšak prínosy výrazne prevažujú a zaisťujú, že integrácia Checkout SDK je dlhodobo udržateľná a pripravená na rozširovanie o ďalšie platobné metódy a funkcie.
Fungovanie
Po načítaní Loaderu sa vykoná validácia konfigurácie a stiahne sa Core. V priebehu tohto procesu sú zároveň sťahované aj jednotlivé funkčné moduly, ktoré však zatiaľ nie sú zavádzané do DOMu. Akonáhle je Core úspešne stiahnutý a zavedený do DOMu, pristupuje sa k postupnému zavedeniu jednotlivých funkčných modulov. Každý modul je vložený do DOMu samostatne a po dokončení svojej inicializácie oznamuje pripravenosť. Po načítaní a zavedení všetkých modulov odovzdáva Loader riadenie späť e-shopu a signalizuje, že SDK je pripravené na použitie.
V tomto okamihu preberá riadenie e-shop. Najprv dochádza k vytvoreniu inštancie Core a následne aj jednotlivých funkčných modulov, ktoré sú mountované do frontendu. Tým je do rozhrania internetového obchodu vložená všetka potrebná funkcionalita Web Checkout SDK.
E-shop je od internej funkcionality SDK odtienený a ovplyvňuje ju iba prostredníctvom dodanej konfigurácie. Checkout SDK následne vyvoláva rôzne handlery (callbacky), ktorými e-shop informuje o priebehu a v prípade potreby vyčkáva na ďalšie inštrukcie. Túto problematiku si podrobnejšie vysvetlíme v implementačnej časti.