Många tänker nog att syftet med prestandatester är som mycket annat inom test, validera krav och säkerställa att applikationen presterar som det kommer förväntas av den. Och visst är det så, prestandatester ger en trygghet att veta och inhämta kunskap om hur en applikation kommer att bete sig under belastning av många besökare eller användare, samt att infrastrukturens kapacitet räcker till.
Men lika mycket nytta gör prestandatest när den används för optimering och kapacitetsplanering. Relativt nyligen gjorde en av våra största kunder en större resa där infrastrukturen byttes ut avseende processorarkitektur, man gick från SPARC baserad teknologi till Intel x86 på samtliga servrar. I samband med detta gjordes såklart noggranna prestandatester för att validera att den nya infrastrukturen inte presterade sämre än den förra, och förhoppningen var dessutom att mäta upp en förbättring avseende prestanda.
Resultaten av de initiala testerna visade på en potential att ytterligare förbättra prestandan genom optimering av konfigurationen för applikationsservern, avseende antal processer, trådar och minneskonfiguration per virtuell maskin. Lights In Line rekommenderade därför fler tester efter att det var bekräftat att den nya infrastrukturen höll måttet, med syfte att hitta den optimala konfigurationen. Efter ytterligare 1 veckas intensiva tester av alternativa konfigurationer, hittade vi en som gav maximal prestanda och utnyttjade kapaciteten optimalt, med resultatet att antalet fysiska maskiner i klustret kunde halveras med bibehållen kapacitet och prestanda av applikationen.
Förutom den skära kostnadsbesparingen av antalet fysiska servrar i datahallen, kunde vi påvisa en enorm besparing avseende licenser, förvaltning och underhållskostnader, på närmare 2 miljoner kronor för denna kund, per år. Inte nog med det, men på grund av det mindre antal servrar blev bonus effekten att tiden det tar att göra en ny deploy av koden även minskades vid varje release.
Performance Engineering är inte ett nytt ord för prestandatester. Det är konsten att optimera och förvalta applikationer och tjänsters tillgänglighet, prestanda och kapacitetsutnyttjande, men även att effektivisera processerna runtomkring, i hela lifscykeln.
Kommentarer
Ett svar till ”Prestandatest kan spara enorma summor pengar”
Som SR tekniker är jag glad om jag kan verifiera att utvecklarna skapat en release som är stabil och som kan skala ut på flera servrar och klarar av många samtidiga användare. Målet för mig är att se var gränsen går för stabilitet, samtidighet och skalbarhet kontra hur verkligheten ser ut hos befintliga kunder kontra nya eventuellt större installationer.
Jag får väl erkänna att det känns bra om man samtidigt kan hitta potentiella förbättringar att ge som feedback tillbaka till utvecklingsprocessen, ingen utvecklare är bättre än vad en kravställare kan kräva och vad en testare kan verifiera, men om man inte ställer krav och och inte testar:
– funktionella krav (oftast det enda som står i kravställningen)
– Icke funktionella krav:
– stabilitet
– samtidighet
– skalbar
– system rekommendationer (baserade på verifierbara värden testade utifrån nära intill verkliga förhållanden).
– icke funktionell felhantering, d.v.s. Vad händer vid t ex överbelastning eller långa långa svarstider…
I slutändan vill jag som tekniker egentligen bara känna mig stolt över leveransen utifrån det jag installerar och känna att jag gjort allt för att under utvecklings-/ systemtests-/ verifierings-/ installationsfasen gjort min hemläxa med tester.
LiL har visat på en genomförbar väg att spara tid (läs pengar i förlängningen) genom kvalitativa tester innan release, kontra förändring i efterhand genom icke så positiv feedback från kund.