Hvordan man opbygger skalerbare webapplikationer

Hvordan man opbygger skalerbare webapplikationer


En skalerbar webapplikation kaldes sådan, fordi den kan modtage flere anmodninger lineært på en mere elegant måde. Efterhånden som der tilføjes mere hardware, vil webstedet kunne håndtere mange forespørgsler på én gang. At sige, at et websted er skalerbart, betyder ganske enkelt, at når antallet af brugere stiger, og anmodningerne strømmer til, vil webstedet være i stand til at håndtere dem alle lige godt.

Eksempel på et populært websted, der er blevet skaleret med succes.

Når man ser på Facebooks vækst, er det utroligt at se, hvordan den er vokset gennem årene. Selv hvis du ikke er en almindelig Facebook-bruger, er det svært at ignorere den indflydelse, som den sociale mediekanal har på virksomheder og virksomheder. Ifølge en statistik er der mere end
1,94 milliarder aktive Facebook-brugere i marts 2017
, der registrerer en stigning på over 18 % hvert år. Hvad angår daglige aktive brugere af mobiltelefoner, er tallene svimlende på 1,15 milliarder brugere.

Facebook er skrevet i PHP, og deres enorme succes ligger i deres evne til at skalere til en million brugere takket være en enorm applikationsarkitektur. Arkitekturen undgår flaskehalse, hvilket gør den skalerbar i alle sprog. Kurvens form (forholdet mellem omkostninger og forbrug) er afgørende for applikationsarkitekturen. Når en applikation er skalerbar, vil kurven være mere diagonal, men når den konfronteres med flaskehalse, vil den blive næsten lodret.

Det anvendte sprog, den anvendte database eller compiler spiller også en vigtig rolle for formen på den ikke-lineære kurve. Hvis der er en underliggende designfejl (mere end implementeringsdetaljerne), vil kurven skyde hurtigt opad. Facebooks arkitektur, der er under konstant udvikling, bliver passet af nogle af de bedste ingeniører i branchen. Facebook har sin egen version af optimeret PHP og har udviklet helt ny software som Apache Cassandra.

Nu kommer det store spørgsmål – hvordan bygger man skalerbare webapplikationer?

Her er nogle enkle muligheder for at skalere dine webapplikationer:

1. Opskalering

Når belastningen på backend-dækkene bliver for stor til at kunne håndteres, er det ikke muligt for webstedet at fungere. En mulig, men sandsynligvis meget dyr løsning ville være at opskalere ressourcerne pr. enhed. Skaler dette også på andre dimensioner som netværkshastighed, IOP’er, lagerkapacitet og hukommelse. Grunden til, at dette bliver dyrt, er, at det ikke har indbygget elasticitet, så det kan blive dyrt, når belastningen er lav.

Det er dog vigtigt at bemærke, at en arkitektur, der skalerer ud, har brug for en load balancer (anmodninger fra slutbrugere, grænse mellem eksterne og internationale netværk), så den kan streame forbindelser af en bestemt type og scanningsgruppe (til sporing af systembelastning, spawn af nye CPU-instanser og sporing af aktive instansers opgørelse).

2. Caching

Behovet for skalering har ført til efterspørgsel og implementering af storskalering. Caching kan forbedre ydeevnen og reducere ressourceforbruget. Ressourceforbrug omfatter CPU, S3-gebyrer, datalagringsgebyrer, ekstern API-forbrug og database. For at sikre, hvor caching kan anvendes, skal du udføre en dataanalyse for at forstå anmodningsfordelinger og datastørrelser, herunder læse- og skriveforholdet.

3. Den type partitioner, der skal foretages

Formålet med skalering er naturligvis at øge kapaciteten. Dette kan gøres på to måder – lodret eller vandret. Ved vertikal skalering tilføjer du flere ressourcer, f.eks. større eller hårdere drev til en enkelt server. Computerdriften er større, med bedre hukommelse og hurtigere CPU. Ved vertikal skalering tager du en enkelt ressource og øger håndteringskapaciteten. Ved horisontal skalering kan du tilføje flere knuder. Den mest almindelige måde at foretage horisontal skalering på er ved at opdele tjenesterne i partitioner eller shards. Disse shards vil blive tildelt specifikke funktioner (f.eks. for at imødekomme forskellige brugeres interesser). Fordelen ved shards er, at det kan give ekstra kapacitet i lagrene. Men hagen er, at dit oprindelige design skal have mulighed for horisontal skalering, da det kan være en meget vanskelig opgave at tilføje dette senere.

Ting, du skal huske, mens du skalerer applikationer, Bemærk disse punkter, mens du er i gang med opgaven

1. Ingen kompromiser med hensyn til hjemmesidens oppetid

Webstedet skal være tilgængeligt for brugerne på et hvilket som helst tidspunkt. Forestil dig at køre en e-commence-butik, og så skal serveren gå ned, hver gang der er en stigning i antallet af forespørgsler. Derfor er det meget vigtigt, at webstedet er oppetid, og du skalerer din webapplikation, så den er tilgængelig hele tiden, uanset systemfejl og afbrydelser.

2. Mulighed for afhentning

Brugerne kan komme tilbage for at se de samme data, så de skal have let adgang til de samme data. Medmindre du selvfølgelig har opdateret dataene. Du kan vinde brugernes tillid, hvis de ved, at de kan få adgang til webstedsdata, når som helst de ønsker det.

3. Ydelse

Hovedformålet med at skalere applikationen er at sikre fremragende ydeevne. Hurtig respons med øjeblikkelig genfinding efterfulgt af lav latenstid er ekstremt vigtigt.

4. Håndterbarhed

Efter skalering af webstedet er det meget vigtigt at kontrollere, om webstedet er let at administrere, så det bliver nemt at betjene, vedligeholde og opdatere.

Konklusion

Der er en misforståelse om, at PHP ikke er skalerbart. Hvordan ville andre store websteder PHP så blive drevet? Skalerbarhed handler mere om applikationsarkitektur end blot om sprog. Den tid, der er nødvendig for at udvikle skalerbare webapplikationer, afhænger af applikationens kompleksitet og den anvendte ramme. Der er to forskellige programmeringslag i en skalerbar app: Front end og back end. Som navnet antyder, er front-end noget, som brugeren interagerer med, og grænsefladen kan være alt fra Android til iOS. Backend-delen består af ca. 80 % af det samlede arbejde, men brugeren er ikke klar over denne del af webapplikationen. Funktionalitet spiller en stor rolle for skalerbarhed. En bruger vil måske indlæse billeder, så der skal tages hensyn til lagerets skalerbarhed, fordi han måske skal hente det til enhver tid. For at opnå bedre download og anmodninger om billeder er lav latenstid meget vigtig.

Her er nogle interessante læsninger om dette emne:
7 faser af skalering af webapplikationer, Strategier for arkitekter.
Hvordan opbygger man skalerbare webapplikationer?
Opbygning af skalerbare applikationer på Google Cloud-platformen.

Flickr.com/ klarititemplateshop.com/ Blogtrepreneur


Om forfatteren: Deepak er leder af PHPBabu og arbejder også i moderselskabet YUHIRO Technologies Private Limited som kontorchef.

Skriv en kommentar