Poznámky z praxe

Jedno jadro, mnoho aplikácií: ako funguje whitelabel bankingová platforma

Whitelabel bankingová platforma je jedno bankingové jadro s vymeniteľným front-endom. Jadro je časť, ktorá musí byť správna: knižka s podvojným zápisom, zákaznícke účty, KYC a onboarding, vydávanie a spracovanie kariet, krypto a stablecoin kanály a operátorská konzola, ktorá za tým všetkým beží. Aplikácia je časť, ktorú vidí zákazník — jej názov, farby, tvar obrazoviek, podmnožina zapnutých funkcií. Whitelabel znamená, že jedno jadro môže mať mnoho tvárí bez toho, aby sa pod každou z nich budovalo odznova. Jedno jadro, mnoho aplikácií.

Jednoducho povedané, je to tvrdenie o tom, kde sú švy. Všetko, čo sa dotýka peňazí, je zdieľané, auditované a zosúladené raz; všetko, čo sa dotýka zákazníka, sa konfiguruje podľa tenanta. Dôležité je inžinierske úsilie udržať túto hranicu čestnú — nechať front-end voľne sa líšiť, kým jadro pod ním sa nikdy nevetví. Toto je rozbor toho, ako sa hranica vedie, a prečo je vedenie cez dizajnové tokeny lepšie než vedenie cez fork.

Čo sa nikdy nemení: jadro

Začnime polovicou, ktorá nesmie byť kreatívna. Prevod sa zaúčtuje rovnako, či ho aplikácia nazve odoslaním, platbou alebo výplatou: dva zápisy v knižke s podvojným zápisom a nič sa nikdy nemaže — knižka len pridáva, takže refundácia je protizápis odkazujúci na pôvodný, nie vymazanie. Účty, zostatky a autorizačné blokácie žijú tu. Rovnako KYC a onboarding, vydávanie a vyrovnanie kariet a krypto a stablecoin kanály. Za nimi stojí jedna operátorská konzola, kde každá privilegovaná akcia vyžaduje zdôvodnenie a zapíše sa do auditného logu.

Každej z týchto vecí je presne jedna a v tom je zmysel. Vyrovnanie, zosúladenie a compliance sa ťažko robia správne a draho sa robia zle, takže ich postavíte raz a každá aplikácia výsledok zdedí. Keď tenant onboarduje zákazníka, úroveň KYC, ktorú jadro určí, ho nasleduje do konzoly bez ohľadu na to, ktorej aplikácie obrazovky zachytili doklady. Jadro nevie ani ho nezaujíma, ako sa aplikácia nad ním volá — vidí účty a zápisy, nie značky.

Čo sa mení: dizajnový jazyk, informačná architektúra, mix funkcií

Všetko nad jadrom sa môže voľne meniť, a to v troch osiach. Prvou je dizajnový jazyk: farba, typografia, zaoblenie rohov, rozostupy, pohyb — vizuálna gramatika značky. Druhou je informačná architektúra: čo je na domovskej obrazovke, ako sa toky pomenúvajú a radia, ktorá akcia je na jedno ťuknutie a ktorá na tri. Treťou je mix funkcií: ktoré moduly sú vôbec zapnuté. Štíhla aplikácia na prevody a hustá super-aplikácia môžu bežať na totožnom jadre a nezdieľať ani jednu obrazovku.

Stránka produktu na /products/pay prechádza päť konkrétnych smerov a najlepšie sa čítajú ako príklady z nekonečne mnohých, nie ako menu z piatich. Halcyon je čistá burza — zdržanlivá, s málo plochami a obchodom v strede. Lumen je super-aplikácia, kde sa peniaze pohybujú priamo v konverzácii a platby v chate, predplatné a zhodnocovanie zdieľajú domovskú obrazovku. Fern vedie prevodmi — najprv hromadné výplaty a konverzia FX podľa pravidiel. Volt je stablecoin build v tmavom štýle s triedičom výplaty a tímovými kartami. Meridian je viacmenový: účet v EUR popri USDC, cestovný zostatok v GBP a účet v BTC, kam padajú odmeny z kariet. Päť značiek, päť informačných architektúr, päť mixov funkcií — pod všetkými jedna knižka, jedno KYC, jeden procesor kariet.

Neznamená to, že produkt je päť aplikácií. Týchto päť je smerov, ktorými sa tá istá pipeline môže vydať; dôležité číslo nie je päť, ale koľko tenantov onboardujete. Každý z nich je dôkaz, že front-end sa môže líšiť až po tvar domovskej obrazovky, kým jadro pod ním si nič nevšimne.

Jadro je časť, ktorú nesmiete vymýšľať odznova; aplikácia je časť, ktorú nesmiete obmedzovať. Whitelabel platforma je disciplína udržať obe tieto vety pravdivé zároveň.
— Protocore · Platform engineering

Prečo tematizácia na úrovni tokenov poráža forkovanie kódu

Existujú dva spôsoby, ako docieliť, aby jeden produkt vyzeral ako mnoho. Ten zrejmý je fork: skopírovať kód pre každého zákazníka, prestylovať ho a nasadiť. Funguje presne jedno vydanie. Potom treba každú opravu chyby a každú regulačnú zmenu aplikovať N-krát na N rozchádzajúcich sa kópií, kópie sa rozsynchronizujú a bezpečnostná plocha, o ktorej musíte uvažovať, sa znásobí počtom zákazníkov. Fork zmení jeden systém, ktorému rozumiete, na mnoho takých, ktorým nerozumiete.

Tematizácia na úrovni tokenov to obracia. Kódová báza je jedna. Značka je sada hodnôt — tokeny pre farbu, písmo, zaoblenie a rozostupy; konfigurácia komponentov; sada feature flagov — ktoré sa pri buildu premenia na aplikáciu s vlastnou značkou. Zmeníte token a pohnú sa spolu všetky obrazovky, ktoré ho čítajú, pretože nič nemá natvrdo zapísanú hodnotu, ktorá sa má brať z tokenu. Oprava toku prevodu sa dostane ku každému tenantovi naraz, pretože existuje len jeden tok prevodu na opravu. Značky sa líšia v konfigurácii, nie v zdrojovom kóde.

Kde sedí dizajnový systém

Tokeny nie sú voľná myšlienka; sú to dodaný artefakt. Protocore Design System — /products/pds — tvorí 144 dizajnových tokenov a 889 utility tried: slovník, v ktorom sa tematizuje každá aplikácia. Je dark-first, riadený tokenmi a štandardne s nulovým zaoblením a rovnaká sada tokenov sa generuje pre web, .NET aj natívne prostredie, takže raz definovaná farba znamená tú istú farbu v obrazovke v Reacte, v desktopovej konzole aj v natívnom mobilnom builde. Značka tenanta sa vyjadruje ako prepísanie tohto slovníka, a preto je zmena vzhľadu aplikácie zmenou konfigurácie, nie prepisom.

Vďaka tomu je front-end skutočne voľný, nie len voľný v rámci šablóny. Keďže dizajnový jazyk žije v tokenoch a utility triedach, a nie v jednorazových štýloch, dizajnér môže tenanta posunúť ďaleko od referenčného buildu — vlastná paleta, písmo, hustota a rytmus — bez toho, aby sa dotkol jadra alebo forkol aplikáciu. Náter ide hlboko, ale stále je to len náter; inštalácia pod ním je zdieľaná.

Aplikácia je konfigurácia, nie build

Mix funkcií sa riadi rovnakým pravidlom. Každý modul — platby v chate, zhodnocovanie, krypto, karty, predplatné, tímové karty, odporúčania — je vypínač prepnutý pre každého tenanta a flag možno najprv spustiť pre časť používateľov, než sa nasadí široko. Operátori ich prepínajú z konfiguračného panela, nie nasadením. Rozdiel medzi holou aplikáciou na prevody a plnou super-aplikáciou teda nie sú dva projekty, ale dve konfigurácie jedného projektu. Referenčná aplikácia, z ktorej každý tenant štartuje, je neutrálny build so značkou Protocore s celým menu — každý whitelabel je tento build s prepísanými tokenmi a zapnutými či vypnutými modulmi.

Úprimná hranica

Jedno jadro, mnoho aplikácií sa tej mašinérii oplatí, len keď naozaj máte mnoho aplikácií — alebo jednu, ktorú chcete časom prestylovať, preusporiadať a zmeniť jej rozsah bez toho, aby ste pri každom kole stavali banku odznova. Ak dodávate jedinú pevnú aplikáciu, ktorá nikdy nebude mať druhú značku, whitelabel platformu nepotrebujete; potrebujete aplikáciu. Svoju cenu si platforma obháji v prípade, na ktorý vznikla: stavia produkty bankingu s vlastnou značkou tenant po tenantovi, každý viditeľne svoj a žiadny nie je fork. Celý rozbor — päť smerov, referenčná aplikácia a operátorská konzola za nimi — je na /products/pay a dizajnový systém pod tým na /products/pds.

Máte systém na vybudovanie?

Povedzte nám, aký máte problém. Vrátime sa s architektúrou a plánom.