Zabilješke s terena

Jedan core, mnogo aplikacija: kako radi whitelabel bankarska platforma

Whitelabel bankarska platforma je jedan bankarski core sa zamjenjivim front endom. Core je dio koji mora biti tačan: knjiga s dvojnim knjiženjem, korisnički računi, KYC i onboarding, izdavanje i procesiranje kartica, crypto i stablecoin kanali te operatorska konzola koja radi iza svega toga. Aplikacija je dio koji korisnik vidi — njen naziv, boje, oblik ekrana, podskup funkcija koje uključuje. Whitelabel znači da jedan core može nositi mnogo lica bez ponovne izgradnje ispod svakog. Jedan core, mnogo aplikacija.

Jednostavno rečeno, to je tvrdnja o tome gdje se nalaze šavovi. Sve što dodiruje novac je zajedničko, revidirano i usklađeno jednom; sve što dodiruje korisnika konfiguriše se po tenantu. Važan inženjerski posao je držati tu liniju poštenom — pustiti front end da se slobodno razlikuje dok se core na kojem stoji nikad ne forka. Ovo je raščlamba toga kako se linija povlači i zašto je povlačenje pomoću design tokena bolje od povlačenja forkom.

Šta se nikad ne mijenja: core

Počnimo s polovinom kojoj nije dopušteno biti kreativnom. Transfer se knjiži na isti način bez obzira na to da li ga aplikacija naziva slanjem, plaćanjem ili isplatom: dva unosa u knjizi s dvojnim knjiženjem, i ništa se nikad ne briše — knjiga samo dodaje, pa je povrat protuknjiženje koje upućuje na original, a ne brisanje. Ovdje žive računi, stanja i autorizacijske blokade. Tu su i KYC i onboarding, izdavanje kartica i poravnanje te crypto i stablecoin kanali. Iza njih je jedna operatorska konzola u kojoj svaka privilegovana radnja zahtijeva razlog i završava u audit logu.

Svega toga postoji tačno jedno, i u tome je poenta. Poravnanje, usklađivanje i compliance teško je uraditi kako treba, a skupo pogriješiti, pa se grade jednom i svaka aplikacija nasljeđuje rezultat. Kad tenant onboarduje korisnika, KYC nivo koji core odredi prati tog korisnika u konzolu bez obzira na to čiji su ekrani prikupili dokumente. Core ne zna niti ga je briga kako se zove aplikacija iznad — vidi račune i unose, ne brendove.

Šta se mijenja: dizajnerski jezik, informaciona arhitektura, kombinacija funkcija

Sve iznad core-a slobodno se mijenja, duž tri ose. Prva je dizajnerski jezik: boja, tipografija, zaobljenost uglova, razmaci, animacije — vizuelna gramatika brenda. Druga je informaciona arhitektura: šta je na početnom ekranu, kako se tokovi zovu i redaju, koja je radnja udaljena jedan dodir, a koja tri. Treća je kombinacija funkcija: koji su moduli uopće uključeni. Vitka aplikacija za transfere i gusta super-aplikacija mogu raditi na istom core-u a da ne dijele nijedan ekran.

Stranica proizvoda na /products/pay prikazuje pet razrađenih pravaca, i najbolje ih je čitati kao primjere beskonačno mnogo mogućnosti, a ne kao meni od pet. Halcyon je čista berza — suzdržana, malo površina, trgovanje 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 predvodi transferima — grupne isplate i FX konverzija po pravilima na prvom mjestu. Volt je stablecoin build u tamnoj temi s razvrstavanjem plate i timskim karticama. Meridian je viševalutni: EUR račun pored USDC-a, GBP putni saldo i BTC račun na koji stižu nagrade za kartice. Pet brendova, pet informacionih arhitektura, pet kombinacija funkcija — jedna knjiga, jedan KYC, jedan procesor kartica ispod svih njih.

Ništa od toga ne znači da je proizvod pet aplikacija. Tih pet su pravci kojima isti pipeline može ići; broj koji je bitan nije pet, nego koliko god tenanata onboardujete. Svaki je dokaz da se front end može razlikovati sve do oblika početnog ekrana, a da core ispod njega to nikad ne primijeti.

Core je dio koji ne smijete iznova izmišljati; aplikacija je dio koji ne smijete ograničavati. Whitelabel platforma je disciplina držanja obje te rečenice istinitima istovremeno.
— Protocore · Platformski inženjering

Zašto theming na nivou tokena pobjeđuje forkanje koda

Postoje dva načina da jedan proizvod izgleda kao mnogo njih. Očigledan je forkanje: kopirati kod za svakog klijenta, preurediti izgled, isporučiti. Funkcioniše tačno jedno izdanje. Nakon toga se svaka ispravka greške i svaka regulatorna promjena mora primijeniti N puta na N kopija koje se razilaze, kopije se razilaze jedna od druge, a sigurnosna površina o kojoj morate voditi računa množi se brojem klijenata. Forkanje pretvara jedan sistem koji razumijete u mnogo onih koje ne razumijete.

Theming na nivou tokena to obrće. Postoji jedna kodna baza. Brend je skup vrijednosti — tokeni za boju, tipografiju, zaobljenost i razmake; konfiguracija komponenti; skup feature flagova — koji se u vrijeme builda razrješava u brendiranu aplikaciju. Promijenite token i svaki ekran koji ga čita pomjera se zajedno, jer ništa ne hardkodira vrijednost koja treba dolaziti iz tokena. Ispravka toka transfera isporučuje se svim tenantima odjednom, jer postoji samo jedan tok transfera za popravak. Brendovi se razlikuju u konfiguraciji, ne u izvornom kodu.

Gdje se nalazi design system

Tokeni nisu neodređena ideja; oni su isporučen artefakt. Protocore Design System — /products/pds — čini 144 design tokena i 889 utility klasa: rječnik u kojem je tematizirana svaka aplikacija. Dark-first je, vođen tokenima i s nultim radijusom po defaultu, a isti skup tokena emituje se za web, .NET i native, pa jednom definirana boja znači istu boju u React ekranu, desktop konzoli i native mobilnom buildu. Brend tenanta izražava se kao override nad tim rječnikom, zbog čega je promjena izgleda aplikacije izmjena konfiguracije, a ne prepisivanje.

To je ujedno ono što front end čini zaista slobodnim, a ne slobodnim unutar šablona. 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, gustina i ritam — bez diranja core-a i bez forkanja aplikacije. Boja ide duboko, ali je i dalje samo boja; instalacija ispod nje je zajednička.

Aplikacija je konfiguracija, a ne build

Kombinacija 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 uvesti na dio korisnika prije nego što krene svima. Operatori ih prebacuju iz konfiguracijskog panela, a ne deployem. Dakle, razlika između gole aplikacije za transfere i pune super-aplikacije nisu dva projekta; to su dvije konfiguracije jednog projekta. Referentna aplikacija iz koje svaki tenant kreće neutralan je build s Protocore brendom i cijelim menijem; svaki whitelabel je taj build s preinačenim tokenima i uključenim ili isključenim modulima.

Iskrena granica

Jedan core, mnogo aplikacija vrijedi mašinerije samo kad zaista imate mnogo aplikacija — ili jednu koju namjeravate vremenom mijenjati po izgledu, rasporedu i opsegu 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. Isplati se u slučaju za koji je napravljena: platforma koja podiže brendirane bankarske proizvode tenant za tenantom, svaki vidljivo svoj, nijedan fork. Cijela raščlamba — pet pravaca, referentna aplikacija i operatorska konzola iza njih — nalazi se na /products/pay, a design system ispod na /products/pds.

Imate sistem za izgradnju?

Recite nam problem. Vratit ćemo se s arhitekturom i planom.