Lengva plėtra
Sukurtas augimui nuo pirmos dienos su skalaujama architektūra ir pasauline aprėptimi
Modulinė ir atskirta architektūra
Žinome, kad glaudžiai susietos sistemos yra trapios sistemos. Naudojami mikro-moduliai arba paslaugų pagrindu sukurta struktūra, net jei tai monolitas. Grupavimas vykdomas pagal funkcijas/domenus, o ne technologijų sluoksnius (Domain-Driven Design lite). Frontend/backend yra atskirti per API sutartis (OpenAPI, GraphQL). Privalumai: Lengva izoliuoti, skalauti ar pakeisti modulius nesugriaunant visos sistemos.
Skalaujama technologijų krūva (Teisingi įrankiai teisingam darbui)
Pasirenkame skalaujamas visur naudojamas vykdymo aplinkas (pagrinde Node.js) backend'ui. PostgreSQL, debesų PostgreSQL suderinamos DB, Supabase, Firebase naudojamos, jei reikia. Redis integruojamas sunkiam skaitymo srautui arba talpinimui. Naudojama debesų infrastruktūra ir docker: AWS / GCP / — su automatinio skalavimo palaikymu. Vengiamas neaiškus įrankis, kuris negali būti skalaujamas horizontaliai arba trūksta bendruomenės palaikymo.
Asinchroniniai + eilės pagrindu veikiantys darbo srautai ne kritiniams užduotims
Žinome, kad viskas neturi vykti realiu laiku. Ilgai trunkančios arba fono užduotys (el. laiškai, vaizdų apdorojimas, sąskaitų išrašymas) perduodamos į eiles ir pan. Pavyzdys: Po to, kai vartotojas užsiregistruoja, sąskaitų išrašymas/el. laiškas apdorojamas fone, o ne tiesiogiai. Tai padeda geresniam našumui ir skalavimui.
Duomenų modelis ir API dizainas, sukurtas evoliucionuoti
Žinome, kad bloga schema = ateities perdirbimas. Naudojamos versijuotos API (/api/v1/...) siekiant išvengti klientų sugadinimo. UUID teikiama pirmenybė prieš inkrementinius ID (pvz., duomenų sujungimui tarp regionų). Planuojama daugiafunkcinė nuoma (ypač SaaS): eilučių lygio vs schemos lygio atskyrimas, anksti pridėti tenant_id.
Stebėjimas, matomumas ir įspėjimai nuo pirmos dienos
Žinome, kad negalite plėsti to, ko nematote. Įrankiai kaip Sentry naudojami frontend klaidų stebėjimui; Prometheus backend/infrastruktūros matomumui; PostHog, Google analytics produktų analizei; Nuolatiniai patikrinimai dėl prastovų stebėjimo. Įspėjimai (Slack/e-paštas) nustatyti avarijoms, eilėms, DB šuoliams ir kt.
Horizontali skalė ir bevalstybės paslaugos
Žinome, kad monolitai gali plėstis, tačiau bevalstybės paslaugos plečiasi geriau. Vengiamas vartotojų sesijų saugojimas vietinėje atmintyje — naudojami Redis/sesijų saugyklos. Serveriai yra bevalstybiai, todėl juos lengva dubliuoti. Naudojama konteinerizacija: Docker + orkestratoriai (debesų teikėjai). Tai leidžia automatiškai keisti dydį be lipnių sesijų ar bendros atminties siaurėjimo.
Saugumas ir prieigos kontrolė dideliu mastu
Žinome, kad daugiau vartotojų = didesnė atakų paviršiaus zona. Nustatyti RBAC/ABAC modeliai (priklausomybės nuo vaidmenų prieigos kontrolė). Taikomas greičio ribojimas, įvesties validacija ir saugumo antraštės. Paslaptys laikomos seifuose ir keičiamos.
Geriausios praktikos skalavimui pagal sluoksnius
API sluoksnis: įgyvendintas greičio ribojimas, puslapiavimas, GraphQL federacija (jei reikia). Frontend: naudojamas tingus įkėlimas, CDN talpinimas, kodo skaidymas. Naudojamas automatinis keitimas dydžio. Duomenų bazė: indeksai yra perindeksuojami, planuojamas šardavimas, jei reikia, ir taip toliau.