Prestandaeffektivitet

Slutförd

Tänk dig att en nyhetsartikel just publicerades om en av din organisations senaste produktlanseringar. Den extra publiciteten från nyhetsartikeln kommer utan tvekan att medföra mycket trafik till din webbplats. Kommer din webbplats kunna hantera den här trafikökningen, eller kommer den ytterligare belastningen att leda till att din webbplats blir långsam eller slutar svara?

I den här enheten tittar vi på några grundläggande principer som säkerställer att programmens prestanda hålls på topp med hjälp av principer för skalning och optimering. Detta utgör grundpelaren för prestandaeffektivitet.

Vad är prestandaeffektivitet?

Prestandaeffektivitet handlar om att matcha de resurser som är tillgängliga för ett program med efterfrågan som programmet tar emot. I prestandaeffektivitet ingår skalningsresurser, identifiering och optimering av eventuella flaskhalsar samt optimering av programkoden för topprestanda.

Låt oss ta en titt på några mönster och metodtips som kan utnyttjas för att förbättra skalbarheten och prestanda i ditt program.

Skala upp och skala ut

Beräkningsresurserna kan skalas i två riktningar:

  • När man skalar upp lägger man till fler resurser till en enda instans. Detta kallas även vertikal skalning.

    En bild som visar hur du skalar upp genom att lägga till resurser till en virtuell dator.

  • När man skalar ut lägger man till fler instanser. Detta kallas även horisontell skalning.

    En bild som visar hur du skalar ut genom att lägga till instanser för att öka prestanda.

Man skalar upp när man vill lägga till fler resurser, till exempel CPU eller minne, till en enda instans. Instansen kan vara en virtuell dator eller en PaaS-tjänst.

När mer kapacitet läggs till instansen ökas de resurser som finns tillgängliga för programmet, men det finns en begränsning. Virtuella datorer är begränsade till kapaciteten hos den värd de körs på, och de här värdarna har fysiska begränsningar. När du skalar upp en instans kan du stöta på dessa begränsningar. De begränsar din möjlighet att lägga till fler resurser i instansen.

Man skalar ut när man vill lägga till fler instanser till en tjänst. De kan vara virtuella datorer eller PaaS-tjänster. I stället för att lägga till mer kapacitet genom att göra en instans kraftfullare lägger vi till kapacitet genom att öka det totala antalet instanser.

Fördelen med att skala ut är att det är möjligt för dig att skala ut i all oändlighet så länge som du har fler maskiner att lägga till i arkitekturen. När man skalar ut krävs det någon form av belastningsutjämning. Detta kan vara i form av en belastningsutjämnare som distribuerar förfrågningar över tillgängliga servrar. Eller så kan det vara en mekanism för tjänstidentifiering som identifierar vilka aktiva servrar som begäranden ska skickas till.

I båda typerna av skalning kan resurser minskas, vilket gör att kostnadsoptimering kommer in i bilden.

Automatisk skalning är processen för att dynamiskt tilldela resurser för att matcha prestandakrav. När mängden arbete växer kan ett program behöva ytterligare resurser för att underhålla de önskade prestandanivåerna och uppfylla servicenivåavtal (SLA). När behovet sjunker och de ytterligare resurserna inte längre behövs kan de frigöras för att minimera kostnader.

Automatisk skalning använder elasticiteten hos molndrivna miljöer och kräver lägre arbetsinsats för hantering. Det minskar behovet av att en operatör regelbundet övervakar systemets prestanda och tar beslut om att lägga till eller ta bort resurser.

Optimera nätverksprestanda

När du optimerar för prestanda granskar du nätverks- och lagringsprestanda för att se till att deras nivåer ligger inom acceptabla gränser. Dessa prestandanivåer kan påverka ditt programs svarstid. Genom att välja den rätta nätverks- och lagringstekniken för arkitekturen säkerställer du att dina kunder får en så bra användarupplevelse som möjligt.

Att lägga till ett meddelandelager mellan tjänsterna kan ha en gynnsam inverkan på prestanda och skalbarhet. Ett meddelandelager skapar en buffert så att begäranden kan fortsätta flöda in utan fel även om det mottagande programmet inte hänger med. När programmet arbetar sig igenom begärandena svarar programmet på dem i den ordning de togs emot.

Optimera lagringsprestanda

I många storskaliga lösningar delas data in i partitioner som kan hanteras och kommas åt separat. Det är viktigt att välja partitioneringsstrategi noga för att maximera fördelarna och minimera de negativa effekterna. Partitionering kan förbättra skalbarheten, minska konkurrensen och ge bästa möjliga prestanda.

Du kan förbättra prestanda genom att använda cachelagring i arkitekturen. Cachelagring är en metod som används för att lagra data eller tillgångar (webbsidor, bilder) som används ofta för snabbare åtkomst. Cachelagring kan användas i olika lager i ditt program. Du kan använda cachelagring mellan programservrarna och en databas för att minska tiderna för datahämtning.

Du kan också använda cachelagring mellan användarna och webbservrarna. Det statiska innehållet placeras då närmare användarna och minskar tiden det tar att returnera webbsidor till användarna. Det här leder dessutom till att begäranden avlastas från databasen eller webbservrarna, vilket ökar prestanda för andra begäranden.

Identifiera flaskhalsar i appars prestanda

Distribuerade program och tjänster som körs i molnet är komplexa delar av programvara som utgör många rörliga delar. I en produktionsmiljö är det viktigt att kunna spåra hur användarna använder systemet, spåra resursutnyttjande och i allmänhet övervaka systemets hälsotillstånd och prestanda. Du kan använda den här informationen som ett diagnostiskt stöd för att identifiera och åtgärda problem. Du kan också använda den här informationen för att få hjälp att upptäcka potentiella problem och förhindra att de inträffar.

I prestandaoptimering ingår att du får en förståelse för vilka prestanda själva programmen har. Fel, dåligt fungerande kod och flaskhalsar i beroende system kan upptäckas med ett verktyg för hantering av programprestanda. Ofta kan de här problemen vara dolda eller svårupptäckta för användare, utvecklare och administratörer. Men de kan ha en negativ inverkan på programmets övergripande prestanda.

Se över alla lager i programmet och identifiera och åtgärda flaskhalsar för prestanda. De här flaskhalsarna kan till exempel vara dålig minneshantering i programmet eller till och med processen för att lägga till index i databasen. Det kan vara en iterativ process då du åtgärdar en flaskhals och sedan upptäcker en annan som du inte vetat om.

Med en omfattande metod för prestandaövervakning kommer du att kunna avgöra vilka typer av mönster och metodtips som din arkitektur kan dra nytta av.

Testa dina kunskaper

1.

Vilket av följande är ett exempel på uppskalning?

2.

Vilket av följande är ett exempel på utskalning?