Lako se skalira
Izgrađeno za rast od prvog dana sa skalabilnom arhitekturom i globalnim dometom
Modularna i odvojena arhitektura
Znamo da su čvrsto povezani sistemi krhki sistemi. Mikro-moduli ili struktura zasnovana na servisima se koriste čak i ako je monolit. Grupisanje se vrši po funkcijama/domenima, a ne po tehnološkim slojevima (lagani dizajn zasnovan na domeni). Frontend/backend su odvojeni putem API ugovora (OpenAPI, GraphQL). Prednosti: Lako je izolovati, skalirati ili zameniti module bez prekidanja celog sistema.
Skalabilna tehnološka platforma (Pravi alati za pravi posao)
Biramo skalabilne univerzalne runtime-ove (pretežno Node.js) za backend. PostgreSQL, cloud PostgreSQL kompatibilne baze podataka, Supabase, Firebase se koriste ako je potrebno. Redis je integrisan za veliki saobraćaj čitanja ili keširanje. Koristi se cloud-native infrastruktura i docker: AWS / GCP / — sa podrškom za automatsko skaliranje. Nejasni alati koji ne mogu horizontalno da se skaliraju ili nemaju podršku zajednice se izbegavaju.
Asinhroni + radni tokovi zasnovani na redovima za ne-kritične zadatke
Znamo da sve ne mora da se dešava u realnom vremenu. Dugotrajni ili pozadinski zadaci (emailovi, obrada slika, fakturisanje) se prebacuju na redove, itd. Primer: Nakon što se korisnik registruje, fakturisanje/email se obrađuje u pozadini, a ne u liniji. Ovo pomaže za bolju performansu i skalabilnost.
Model podataka i dizajn API-ja izgrađeni da se razvijaju
Znamo da loša šema = budući rad. Verzijski API-ji (/api/v1/...) se koriste da se spreči prekidanje klijenata. UUID-ovi su favorizovani u odnosu na inkrementalne ID-ove (npr. za spajanje podataka između regiona). Planira se višekorisnički pristup (posebno u SaaS-u): Odvajanje na nivou reda naspram odvajanja na nivou šeme, dodati tenant_id rano.
Praćenje, posmatranje i upozorenja od prvog dana
Znamo da ne možete skalirati ono što ne možete videti. Alati kao što je Sentry se koriste za praćenje grešaka na frontend-u; Prometheus za posmatranje backend-a/infrastrukture; PostHog, Google analytics za analitiku proizvoda; Kontinuirani provere za praćenje vremena neaktivnosti. Upozorenja (Slack/email) su postavljena za padove, kašnjenja u redovima, skokove u bazi podataka, itd.
Horizontalna skalabilnost i stateless usluge
Znamo da monoliti mogu skalirati, ali stateless usluge skaliraju bolje. Čuvanje korisničkih sesija u lokalnoj memoriji se izbegava — koriste se Redis/session store-ovi. Serveri su napravljeni da budu stateless kako bi se lako duplicirali. Koristi se kontejnerizacija: Docker + orkestratori (provajderi u oblaku). Ovo omogućava automatsko skaliranje bez sticky sesija ili uskih grla u deljenoj memoriji.
Bezbednost i kontrola pristupa na velikoj skali
Znamo da više korisnika = veća površina za napad. RBAC/ABAC obrasci (kontrola pristupa zasnovana na rolama) su postavljeni. Ograničenje brzine, validacija unosa i sigurnosni zaglavlja su primenjeni. Tajne se čuvaju u trezorima i rotiraju.
Najbolje prakse skalabilnosti po sloju
API sloj: Ograničenje brzine, paginacija, GraphQL federacija (ako je potrebno) su implementirani. Frontend: Lazy loading, CDN hosting, deljenje koda se koristi. Automatsko skaliranje se koristi. Baza podataka: Indeksi se reindeksiraju, sharding je planiran ako je potrebno, i tako dalje.