Iz prakse

Jedna jezgra, mnogo aplikacija: kako radi whitelabel bankarska platforma

Whitelabel bankarska platforma jest jedna bankarska jezgra sa zamjenjivim front endom. Jezgra je dio koji mora biti ispravan: knjiga s dvojnim knjiženjem, računi klijenata, KYC i onboarding, izdavanje i procesiranje kartica, crypto i stablecoin kanali te operatorska konzola koja stoji iza svega. Aplikacija je dio koji klijent vidi — njezin naziv, boje, oblik ekrana, podskup funkcija koje uključuje. Whitelabel znači da jedna jezgra može nositi mnogo lica bez ponovne izgradnje ispod svakog od njih. Jedna jezgra, mnogo aplikacija.

Jednostavno rečeno, to je tvrdnja o tome gdje se nalaze šavovi. Sve što dotiče novac dijeli se, revidira i usklađuje jednom; sve što dotiče klijenta konfigurira se po tenantu. Važan inženjerski posao je držati tu liniju poštenom — pustiti front end da se slobodno razlikuje, a jezgra na kojoj stoji nikad se ne forka. Ovo je razlaganje kako se ta linija povlači i zašto je povlačenje dizajnerskim tokenima bolje od povlačenja forkom.

Što se nikad ne mijenja: jezgra

Krenimo od polovice koja ne smije biti kreativna. Transfer se knjiži jednako bez obzira na to naziva li ga aplikacija slanjem, plaćanjem ili isplatom: dva unosa u knjizi s dvojnim knjiženjem, a ništa se nikad ne briše — knjiga samo dodaje, pa je povrat protuknjiženje koje upućuje na izvorno, a ne brisanje. Ovdje žive računi, stanja i autorizacijske blokade. Tu su i KYC i onboarding, izdavanje i namira kartica te crypto i stablecoin kanali. Iza njih je jedna operatorska konzola u kojoj svaka privilegirana radnja zahtijeva razlog i završava u audit logu.

Svega toga postoji točno po jedan, i u tome je poanta. Namiru, uskladu i compliance teško je napraviti dobro, a skupo napraviti loše, pa ih gradite jednom i puštate da svaka aplikacija naslijedi rezultat. Kad tenant onboarda klijenta, KYC razina koju odredi jezgra prati tog klijenta u konzolu bez obzira na to čiji su ekrani prikupili dokumente. Jezgra ne zna niti je briga kako se zove aplikacija na vrhu — vidi račune i unose, a ne brendove.

Što se mijenja: dizajnerski jezik, informacijska arhitektura, skup funkcija

Sve iznad jezgre slobodno je za promjenu, po tri osi. Prva je dizajnerski jezik: boja, tipografija, zaobljenje kutova, razmaci, animacije — vizualna gramatika brenda. Druga je informacijska arhitektura: što je na početnom ekranu, kako se tokovi zovu i redaju, koja je radnja udaljena jedan dodir, a koja tri. Treća je skup funkcija: koji su moduli uopće uključeni. Vitka aplikacija za transfere i gusta super-aplikacija mogu se vrtjeti na istoj jezgri, a ne dijeliti nijedan ekran.

Stranica proizvoda na /products/pay prolazi pet razrađenih smjerova, i najbolje ih je čitati kao primjere beskonačno mnogih, a ne kao jelovnik od pet. Halcyon je čista burza — suzdržana, s malo ekrana i trgovanjem u prvom planu. Lumen je super-aplikacija u kojoj novac putuje unutar razgovora, a chat plaćanja, pretplate i earn dijele početni ekran. Fern kreće od transfera — prvo skupne isplate i FX konverzija po pravilima. Volt je stablecoin build u tamnoj temi sa sortiranjem plaće i timskim karticama. Meridian je viševalutan: EUR račun uz USDC, GBP putni saldo i BTC račun na koji sjedaju nagrade za kartice. Pet brendova, pet informacijskih arhitektura, pet skupova funkcija — ispod svih njih jedna knjiga, jedan KYC, jedan procesor kartica.

Ništa od toga ne znači da je proizvod pet aplikacija. Tih pet su smjerovi kojima isti pipeline može poći; broj koji je važan nije pet, nego koliko god tenanata onboardate. Svaki je dokaz da se front end može razlikovati sve do oblika početnog ekrana, dok jezgra ispod toga ništa ne primjećuje.

Jezgru ne smijete iznova izmišljati; aplikaciju ne smijete ograničavati. Whitelabel platforma je disciplina držanja obiju tih rečenica istinitima istodobno.
— Protocore · Platform engineering

Zašto tema na razini tokena pobjeđuje forkanje koda

Postoje dva načina da jedan proizvod izgleda kao mnogo njih. Očiti je fork: kopirati kod po klijentu, preurediti mu izgled, isporučiti. Radi točno jedno izdanje. Nakon toga svaki bugfix i svaka regulatorna promjena mora se primijeniti N puta na N kopija koje se razilaze, kopije izlaze iz sinkronizacije, a sigurnosna površina o kojoj morate razmišljati množi se brojem klijenata. Forkanje pretvara jedan sustav koji razumijete u mnogo onih koje ne razumijete.

Tematiziranje na razini tokena to preokreće. Postoji jedna kodna baza. Brend je skup vrijednosti — tokeni za boju, tipografiju, zaobljenje i razmake; konfiguracija komponenti; skup feature flagova — razriješen pri buildu u brendiranu aplikaciju. Promijenite token i svaki ekran koji ga čita pomiče se zajedno, jer ništa ne hardkodira vrijednost koju bi trebalo uzeti iz tokena. Popravak tijeka transfera stiže svakom tenantu odjednom, jer postoji samo jedan tijek transfera za popraviti. Brendovi se razlikuju u konfiguraciji, a ne u izvornom kodu.

Gdje je design system

Tokeni nisu rastresena ideja; oni su isporučen artefakt. Protocore Design System — /products/pds — čini 144 dizajnerska tokena i 889 utility klasa: vokabular u kojem je tematizirana svaka aplikacija. Dark-first je, vođen tokenima i s radijusom nula po zadanom, a isti se skup tokena emitira za web, .NET i native, pa boja definirana jednom znači istu boju u React ekranu, desktop konzoli i native mobilnom buildu. Brend tenanta izražava se kao nadjačavanja tog vokabulara, zbog čega je re-skin aplikacije promjena konfiguracije, a ne prepisivanje.

Upravo to čini front end doista slobodnim, a ne slobodnim unutar predloška. Budući da dizajnerski jezik živi u tokenima i utility klasama, a ne u jednokratnim stylesheetovima, dizajner može tenanta odvesti daleko od referentnog builda — vlastita paleta, tipografija, gustoća i ritam — bez diranja jezgre ili forkanja aplikacije. Boja ide duboko, ali je i dalje samo boja; instalacije ispod nje su zajedničke.

Aplikacija je konfiguracija, a ne build

Skup funkcija slijedi isto pravilo. Svaki modul — chat plaćanja, earn, crypto, kartice, pretplate, timske kartice, preporuke — prekidač je koji se uključuje po tenantu, a flag se može puštati na dio korisnika prije nego krene svima. Operatori ih prebacuju iz konfiguracijskog panela, a ne deployem. Razlika između goleme aplikacije za transfere i pune super-aplikacije stoga nisu dva projekta; to su dvije konfiguracije jednog projekta. Referentna aplikacija od koje svaki tenant kreće neutralan je build s Protocore brendom i cijelim jelovnikom — svaki whitelabel je taj build s nadjačanim tokenima i uključenim ili isključenim modulima.

Iskrena granica

Jedna jezgra, mnogo aplikacija vrijedi mehanizma samo kad doista imate mnogo aplikacija — ili jednu koju namjeravate s vremenom re-skinati, preurediti i prekrojiti bez ponovne izgradnje banke svaki put. Ako isporučujete jednu fiksnu aplikaciju koja nikad neće nositi drugi brend, ne treba vam whitelabel platforma; treba vam aplikacija. Svoje mjesto opravdava u slučaju za koji je napravljena: platforma koja redom podiže brendirane bankarske proizvode za tenanta za tenantom, svaki vidljivo svoj, nijedan fork. Cijelo razlaganje — pet smjerova, referentna aplikacija i operatorska konzola iza njih — nalazi se na /products/pay, a design system ispod njih na /products/pds.

Imate sustav za izgradnju?

Opišite nam problem. Vratit ćemo se s arhitekturom i planom.