Hur man bygger skalbara webbapplikationer
Ett skalbart webbprogram kallas så eftersom det kan ta emot fler förfrågningar linjärt på ett mer elegant sätt. När mer hårdvara läggs till kommer webbplatsen att kunna hantera många förfrågningar samtidigt. Att säga att en webbplats är skalbar innebär helt enkelt att när antalet användare ökar och förfrågningar strömmar in, kan webbplatsen hantera alla förfrågningar lika bra.
Exempel på en populär webbplats som har skalats upp framgångsrikt.
Om man tittar på Facebooks tillväxt skulle det vara fantastiskt att se hur det har vuxit genom åren. Även om du inte är en vanlig Facebook-användare är det svårt att bortse från den inverkan som den sociala mediekanalen har på företag och verksamheter. Enligt en statistik finns det mer än
1,94 miljarder aktiva Facebook-användare i mars 2017
, vilket innebär en ökning på över 18 % varje år. När det gäller dagliga aktiva mobilanvändare är siffrorna häpnadsväckande: 1,15 miljarder användare.
Facebook är skrivet i PHP, och deras enorma framgång ligger i deras förmåga att skala upp till en miljon användare tack vare en enorm applikationsarkitektur. Arkitekturen undviker flaskhalsar, vilket gör den skalbar i alla språk. Kurvans form (som relaterar kostnaden till användningen) är det som avgör applikationsarkitekturen. När en applikation är skalbar är kurvan mer diagonal, men när den konfronteras med flaskhalsar blir den nästan vertikal.
Språket, databasen eller kompilatorn som används spelar också en viktig roll för hur den icke-linjära kurvan ser ut. Om det finns ett underliggande konstruktionsfel (mer än detaljerna i genomförandet) kommer kurvan att stiga snabbt. Facebooks arkitektur, som ständigt utvecklas, sköts av några av de bästa ingenjörerna i branschen. Facebook har sin egen version av optimerad PHP och har utvecklat helt ny programvara som Apache Cassandra.
Nu kommer miljonfrågan: Hur bygger man skalbara webbapplikationer?
Här är några enkla alternativ för att skala dina webbapplikationer:
1. Uppskalning
När belastningen på backend-däcken blir för tung att hantera är det omöjligt för webbplatsen att fungera. Ett genomförbart, men förmodligen mycket dyrt alternativ skulle vara att skala upp resurserna per enhet. Skala även andra dimensioner som nätverkshastighet, IOPs, lagringskapacitet och minne. Anledningen till att detta blir dyrt är att det inte har någon inbyggd elasticitet, så det kan bli dyrt när belastningen är låg.
Det är dock viktigt att notera att en utskalningsarkitektur behöver en lastbalansering (förfrågningar från slutanvändare, gräns mellan externa och internationella nätverk) så att den kan strömma anslutningar av en viss typ och en skanningsgrupp (för att spåra systembelastningen, skapa nya CPU-instanser och spåra inventarier av aktiva instanser).
2. Cachelagring
Behovet av skalning har lett till efterfrågan och användning av storskalig skalning. Caching kan förbättra prestandan och minska resursförbrukningen. Resursanvändningen omfattar CPU, S3-avgifter, avgifter för datalager, användning av externa API:er och databas. För att säkerställa att caching kan tillämpas kan du utföra en dataanalys för att förstå fördelningen av förfrågningar och datastorlekar, inklusive läs- och skrivförhållandet.
3. Vilken typ av partitioner som ska göras.
Syftet med skalning är naturligtvis att öka kapaciteten. Detta kan göras på två sätt – vertikalt eller horisontellt. Vid vertikal skalning lägger du till fler resurser, t.ex. större eller hårdare hårddiskar till en enskild server. Beräkningsverksamheten är större, med bättre minne och snabbare CPU. Vid vertikal skalning tar man en enskild resurs och ökar hanteringskapaciteten. Vid horisontell skalning kan du lägga till fler noder. Det vanligaste sättet att göra horisontell skalning är att dela upp tjänster i partitioner eller shards. Dessa delar skulle tilldelas för att tillgodose specifika funktioner (t.ex. tillgodose olika användares intressen). Fördelen med shards är att de kan ge lager med ökad kapacitet. Haken är dock att din ursprungliga design måste ha möjlighet till horisontell skalning, eftersom det kan vara mycket svårt att lägga till detta senare.
Saker att komma ihåg när du skalar program, notera dessa punkter när du arbetar med uppgiften
1. Inga kompromisser när det gäller webbplatsens tillgänglighet
Webbplatsen ska vara tillgänglig för användarna vid alla tidpunkter. Föreställ dig att du driver en e-kommendationsbutik och att servern går ner varje gång det blir en ökning av antalet förfrågningar. Det är därför mycket viktigt att webbplatsen är tillgänglig och att du skalar din webbapplikation så att den är tillgänglig hela tiden, oberoende av systemfel och avbrott.
2. Alternativ för hämtning
Användarna kan komma tillbaka för att se samma data, så de bör ha tillgång till de sane. Såvida du inte har uppdaterat uppgifterna. Du kan vinna användarnas förtroende om de vet att de kan få tillgång till webbplatsens data närhelst de vill.
3. Prestanda
Huvudsyftet med att skala programmet är att säkerställa utmärkt prestanda. Snabbt svar med omedelbar återvinning följt av låg latenstid är oerhört viktigt.
4. Hanterbarhet
När webbplatsen har skalats är det mycket viktigt att kontrollera att den är lätt att hantera så att den blir lätt att driva, underhålla och uppdatera.
Slutsats
Det finns en missuppfattning om att PHP inte är skalbart. Hur skulle då andra storskaliga webbplatser PHP drivas? Skalbarhet handlar mer om programarkitektur än om språk. Den tid som krävs för att utveckla skalbara webbapplikationer beror på applikationens komplexitet och det ramverk som används. Det finns två olika programmeringslager i en skalbar app: Front end och Back end. Som namnet antyder är front-end något som användaren interagerar med och gränssnittet kan vara allt från Android till iOS. Baksidan består av cirka 80 % av det totala arbetet, men användaren är inte medveten om denna del av sin webbapplikation. Funktionalitet spelar en viktig roll för skalbarhet. En användare kanske vill ladda bilder, så lagringens skalbarhet måste beaktas eftersom han eller hon kan behöva hämta bilderna när som helst. För bättre nedladdningar och begäranden av bilder är det mycket viktigt med låg latenstid.
Här finns några intressanta artiklar om detta ämne:
7 stadier av skalning av webbapplikationer, Strategier för arkitekter.
Hur bygger man skalbara webbapplikationer?
Bygga skalbara applikationer på Googles molnplattform.
Flickr.com/ klarititemplateshop.com/ Blogtrepreneur
Om författaren: Deepak är chef för PHPBabu och arbetar också på moderbolaget YUHIRO Technologies Private Limited som kontorschef.