
Skirbi · 11 mei 2020
Desèño di aplikashon eskalabel sin magia
Usa e poder di kálkulo di e kliente pa tin rendimentu haltu ku hopi usuario
Manera parti di e app pa pidi kuminda online ku mi ta traha, mi tabatin mester pa desèñá un infrastruktura backend eskalabel ku por manehá hopi usuario na mesun tempu. Eskalabilidat ta ser konsiderá un problema difísil pa resolvé. Hopi biaha e ta presentá manera algo mágiko, hasi dor di kompania di miyones di dòler ku ta usa herment sekreto. Pero no tin tal kos manera magia, òf tin?
Kiko ta eskalabilidat?
Si bo ta traha un app, ta probabel ku bo ta kuminsá masha chikí. Djis algun usuario (òf djis bo, e desaroyadó) ku ta traha ku e app. Tur kos ta bon: e app ta traha bon, lihé i no tin problema. (apresiá e sentimentu aki!)

Den e sènario tempran i chikí aki e úniko server ku ta kore e app por manehá e usuario ku ta interaktuá ku dje. Kada biaha ku e usuario ta tuk òf klik un boton, e úniko server ta hasi algun trabou. Si bo programá bon, e karga di trabou aki por ser optimisá den pida di trabou efisiente. Hasi esaki asina ta un ehèmpel típiko di arkitektura monolítiko di software.
Asta si bo proyekto òf app ta bastante chikí, na algun momentu por bin un influjo di usuario. Si bo sistema no por soportá karga haltu, e ta tin hopi chèns di fayá.

Por via di e desèño monolítiko di e app, tur usuario ta interaktuá ku e mesun server. Tur nan interakshon (toke, klik, input) ta ser manehá pa e server aki. Ku un karga mas haltu e mester traha hopi mas duru. Na un sierto punto, bo ta nota ku tur kos ta bira mas lento pasobra e server no por kuné ku e kantidat di trabou ku e mester hasi. Esaki ta nifiká ku bo app no ta eskalá bon, ofsea: bo ta den problema.
Fayá na e 'momentu supremo'
No eskalá bon ta un gran problema ku niun hende no mester subestimá. Mayoria di app (i nan modelo di negoshi) ta dependé di volumen haltu ku poko ganashi pa kada usuario individual. Si bo ke ku bo app ta un éksito (finansiero), bo mester sigurá ku e ta funshoná bon ora tin un subida di repente di tráfiko. Si bo app ta krashá ora e di repente ta haña atenshon di masa, bo ta pèrdi un oportunidat ‘di un biaha den bida’ pa kresementu (orgániko).
Den un sentido, desèñá pa eskalabilidat ta manera tene bo sinturon di siguridat sera ora bo ta sinta den bo nave espasial traha pa bo mes, ku motor eksperimental. Bo nunka sa eksakto ora presis e ta prende, pero ora e hasi esei, mihó bo sigurá ku bo ta sinta fuerte (i goza di e biahe!).
Manera komun pa logra eskalabilidat
Hopi a ser skirbí tokante kon pa traha app eskalabel. Manera komun pa mihorá eskalabilidat ta:
- Aumentá kapasidat di e server: agregá mas memoria, poder di CPU, almasenahe. Esaki ta funshoná, ma e ta yega djis te ‘un sierto punto’.
- Agregá mas server: en lugá di un úniko server ku ta aktua manera bottleneck, bo por agregá mas server ku lo kompartí e trabou. Esaki ta mas fásil di bisa ku di hasi, pasobra e ta pidi load balancing i kompartimentu di dato, ku por ta difísil (p.e. si bo tin un kontadó di pedido, i dos server ta kontá, kua ta determiná e próksimo número?)
- Optimisá kódigo di programashon: usa e herment korekto! Skohe un lenguahe di programashon enfokadó riba rendimentu i software di server ditto. Wak programashon funshonal pa laga bo kódigo kore riba hopi core asínkrono. Hasi e stateless. Hasi benchmark. Optimisá e. Kada milisegundo ganá riba un úniko petishon ta suma lihé ora bo ta manehá volumen haltu.
- Usa e database i separá e for di e server di aplikashon: Si bo ta usa un database, usa su poder! Aprobechá di cache di query, indekso i kapasidat di buska. Mayoria di solushon di database ta ofresé opshon di clustering ku a pasa pa pruba di bataya; no purba inventá e wiel ku otro a perfekshoná kaba.
E mihó kos ku bo por hasi ta pa konsiderá tur e opshonnan aki. Asta si bo no ta agregá mas server awor mes, bo mester skirbi bo kódigo pa soportá esaki mas tarde. Benchmark i optimisá bo kódigo mester ta un parti integral di bo trabou, no djis algu ku bo ta pensa riba dje despues.
Usa e poder di kálkulo di e kliente
Ora bo a konsiderá tur e manera komun pa logra eskalabilidat, tin “un kos mas”.

Poko desaroyadó ta konsiderá esaki: e problema di eskalabilidat ta kontené e solushon! Ora bo tin 1000 usuario, bo tin 1000 kompiuter ku CPU potente i hopi memoria. Kompiuter i smartphone moderno a bira mas i mas kapas.
Bo djis mester haña un manera pa tuma pa bo e poder di kálkulo di e kliente. Maske e ta sona manera algo malu (usa e poder di kálkulo di e usuario), e ta duna nan un eksperensia hopi mihó i mas lihé. Loke ta mihó ta ku nan poder di kálkulo ta ser usá pa nan eksperensia fantástiko, i asina bo problema di eskalabilidat ta ser resolvé manera efekto sekundario felis.

Dor di usa e poder di kálkulo di e usuario, bo ta redusí e kantidat di trabou ku e server mester hasi. En lugá ku e server ta hasi un tiki trabou kada biaha ku e usuario ta tuk òf klik un boton, e trabou aki ta ser hasi mayoria pa e aparato di e usuario. Esaki ta mas efisiente ku komuniká via Wifi/4G ku un server (e ta spar bateria i tempu).
E ta pidi un tiki di pensa di nobo, ma e prinsipio aki por ser usá tambe na aplikashon web. En lugá di manehá tur kos riba e server, bo por hasi hopi trabou riba e kliente. Kosnan manera buska, browse, filtrá, nabegá i asta agregá kosnan na un karchi di kompra por ser hasi ku JavaScript riba e kliente. Bo - stimá desaroyadó - mester buska manera pa hasi esaki funshoná, ma si bo logra bo lo tin eskalabilidat kasi infinito na bo alkanse.
Den práktika: app pa pidi kuminda
Pa e app pa pidi kuminda mi a buska manera pa aprobechá e poder di kálkulo di e kliente pa logra rendimentu haltu. E reto prinsipal ku pedido di entrega i pa bai ku ne ta ku nan ta tin nan pik rònt di ora di diner. Hopi hende ta usa e app rònt di mesun ora, i esaki ta un resèpta pa problema di eskalabilidat.

Si bo pensa riba pidi kuminda online, bo por separá e proseso entero den pida mas chikí:
- 1) Habri e página: karga e app/página
- 2) Browse e diferente opshon: wak e lista di produkto, nan deskripshon, preis, potrèt, etc.
- 3) Buska algu spesífiko: buska pa kategoria, nòmber di produkto, etc.
- 4) Skohe un produkto: agregá e na bo pedido
- 5) Personalisá un produkto: skohe un salsa, plato adishonal, topping, etc.
- 6) Yena bo informashon: bo nòmber, número di telefòn, detaye di entrega, etc.
- 7) Paga pa bo pedido: skohe un manera di pago, konektá ku bo banko òf karchi di krédito
- 8) Sera e app
Mayoria di e pasonan aki por ser programá di tal manera ku e server no ta nesesario. Djis pasu 1 (karga) i pasu 7 (paga) ta pidi kontakto ku e infrastruktura backend. Ta importante pa realisá ku pasunan 2 te 5 ta ser repití hopi biaha, pasobra ta komun pa usuario agregá hopi produkto na nan pedido.

Dor di separá e trabou ku ta keda segun trabou, e software por ser optimisá mas ainda. E “server di produkto” ta optimisá pa serví asset estátiko (teksto, preis, potrèt) ku ta laga e kliente krea e eksperensia di browse produkto. Bo por optimisá un server asina masha, dor di aprobechá cache, HTTP/2, kompreshon, etc.
Djis esnan ku kompletá e proseso di pidi lo ser mandá pa e “server di pedido”, ku ta manehá e pago. E lo konektá ku e proveedó di pago. Ora un pago ta kompletá, e proveedó di pago lo kontaktá e server di pedido pa informá dje tokante e estado di e pago. Esaki ta algo riba kua bo ke tin kontrol kompletu (banda di server), manera mi a hasi ora mi a desèñá un sistema di pago promé. E karga di trabou ku ta keda riba e “server di pedido” ta hopi mas chikí, pasobra no tur hende lo hasi un pedido, i hopi di e trabou di prosesá pedido por ser hasi den fondo.

Pa maksimisá eskalabilidat bo por agregá fásil hopi server (òf usa un content delivery network) pa serví e asset estátiko. Pa e app pa pidi kuminda mi ta usa un “server di produkto” apart pa kada restaurant. Esaki ta hasi posibel rendimentu haltu i ta redusí tempu di karga. Hende ta nota ku e ta lihé, algun no por kere ku e ta teknologia web, e ta kasi mágiko.
Konklushon
Desèñá un aplikashon eskalabel por ser hasi sin magia òf budget di miyones di dòler. Bo djis mester pensa e bon i buska oportunidatnan ku ta presentá huntu ku e retonan.
E problema ta kontené e solushon. Manehá hopi usuario na mesun tempu no ta djis un problema: nan ta trese nan mes poder di kálkulo, e ta e solushon! Bo djis mester usa e.