Jag fick för lite sedan frågan om jag kunde prestandatesta en ny e-handelsbutik och några bakomliggande webservices. Jag hade lätt kunnat tacka nej då mitt egentliga uppdrag är av helt annan art och inom ett helt annat område. Det viktigaste skället till varför jag kanske borde ha tackat nej är att jag inte kört mer än några enstaka prestandatester sedan 2005 och definitivt inte är någon expert på området. Min nyfikenhet tog dock i vanlig ordning över och jag började ställa en rad följdfrågor.
– Fanns det något prestandaverktyg i huset som jag kunde använda. Ja det fanns, ett av de svindyra fullfjädrade verktygen fanns i huset, men med endast 200 samtidiga användare. Då vi av olika skäl ville ha många samtidiga inloggade sessioner så räcke inte den siffran på långt när. Inget alternativ alltså, om jag inte skulle börja med att övertyga kunden att köpa/hyra verktyg i miljon klassen.
– Jag undersökte också om utvecklarna eller system testarna hade kört några prestanda tester över huvudtaget. Ja det hade de, till min stora lycka. De hade använt JMeter för att prestandatesta olika webservices och några basala flöden i e-handelsbutiken. Allt var naturligtvis kört mot stubbar och emulatorer, men ändå testat.
De fanns alltså JMeter kompetens och erfarenhet i huset, vilket gjorde att jag började överväga att använda mig av JMeter som verktyg. Detta bifalles och ja fick låna rätt kompetens för detta. Problemet var bara att de som besatt kompetensen var på väg bort ifrån projektet och hela organisationen, vi hade alltså i vanlig ordning ont om kalender tid.
Nästa sak som jag undersökte var tillgången till en prestandatestmiljö, samt servrar att generera lasten ifrån. Vi kunde turligt nog testa i den kommande produktionsmiljön, vilket förstås passade oss utmärkt.
Dessvärre så skulle det ta ungefär tre veckor att få tillgång till servrar att generera lasten ifrån. Den tiden hade vi inte om vi skulle utnyttja JMeter kompetensen som fanns i huset. Administrationen och övertalnings kampanj för att få tillräckligt många servrar kändes också oöverstiglig för ögonblicket.
Jag råkade då snubbla in på den utmärkta sajten http://www.jk-itberatung.de och började där läsa om hur Jörg Kalsbach körde JMeter på Amzons EC2 servrar. Det finns på sajten även en steg för steg anvisning om hur man går till väga för att sätta upp en sådan infrastruktur. http://www.jk-itberatung.de/jmeter/JMeterInTheCloud.pdf
Bilden nedan beskriver hur JMeter infrastrukturen ser ut:
Eftersom jag redan hade konto och till och från hyrt EC2 servrar så gick det väldigt smidigt att sätta upp en sådan miljö. Jörg Kalsbach är bussig nog att utan kostnad bjuda på sin färdig konfigurerade AMI (se artikeln utnyttja molnet för dina tester för mera info om AMI och Amazon EC2). Jörgs AMI (AMI ID ami-b936d5d0) innehåller JMeter och hjälp programmet StarterKit på en Ubuntu plattform. StarterKit hjälper dig att starta och konfigurera dina lastgeneratorer (Slaves) direkt från kontrollern (Master).
Jag loggade helt enkelt in på mitt Amazon ec2 konto och beställde en server med Jörgs AMI på.
Efter 2 minuter så gick det bra att ansluta via SSH.
För att dra nytta av StarerKit och JMeters fulla potential så tycker jag det är smidigare att logga in med en NX client så du kommer åt KDE fönstret direkt. När du loggar in så finns det redan en ikon på skrivbordet för StarterKit.
Klicka på ikonen och bestäm hur mången lastgenerator du behöver. Dessa startar sedan och JMeter startas sedan automatiskt. Det går naturligtvis bra att starta JMeter som vanligt genom att köra jmeter filen i bin biblioteket om man nu hellre vill det.
Sedan är det bara att använda JMeter som vanligt, fast med obegräsat med kraft till förfogande. Skälva testerna blev lyckade, dock inte resultatet. Men det dåliga resultatet kan vi inte klandra JMeter eller EC2 för.
När vi sedan funderade på hur detta skulle förvaltas så beslöt vi oss för att prova denna sajt, http://www.cloud-intelligence.com Cloud Intelligence har redan gjort all ovanstående konfigurering åt dig, det är i teorin bara att ladda upp dina JMeter tester och börja prestanda testa.
I Praktiken måste du ju förstås konfigurera några småsaker men allt finns utförligt beskrivet i sajtens steg för steg guides. Denna lösning fungerade väldigt väl för oss och medför att vi endast behöver förvalta JMeter skripten, ingenting annat. Det finns säkert gott om alternativ till Cloud Intelligens som man bör undersöka och det är inte den specifika sajten jag vill öppna ögonen för, utan möjligheten som sådan.
Kostnaden är när artikeln skrevs 0,085$ per EC2 server och timme. Alltså kan du köra en Master och 11 Slaves för 1$ i timmen. Med denna uppsättning kan du generera vansiningt mycket last. Det tilkommer sedan 0.10-0.17$ per GB data som skyfflas till och från servern. Cloud Intelligens kostade ungefär tre gånger så mycket, men det blir ändå inga stora summor under våra korta prestanda tester. På Cloud Intelligens så har du möjligheten att ha kontroll på dina kostnader genom att du köper crediter i förväg.
Jätteintressant artikel! Man blir intresserad att själv sätta upp ett test i molnet!
Det kommer troligtvis bli ett krav att (web-)testaren behärskar inte bara last-, prestanda- och stress-tester i molnet, utan även regressions samt funktionstester. Många organisationer har helt enkelt inte råd med att hyra in dyr hårdvara och systemadministratör(er) under någon längre tid för att skapa en produktionsliknande testmiljön.
Var nyligen på en föreläsning där Amazons moln användes för nattliga funktion/regressions-tester av ett web online system, där hela testpaketet var exekverat på 15 minuter.
Deras månatliga kostnad var en fraktion av vad de skulle kostat med traditionellt testmiljö. Förutom EC2 server 15 minuter per dag, hyrdes en fil-area i EC2, där testresultaten sparades samt analyserades.
Test i ett annat moln, Microsofts Azure, skulle vara intressant att höra om också? Har någon erfarenhet av det? Vad är största skillnaderna mellan test i Azure och Amazons EC2?
Jonas- intressant inlägg
Jag har själv aldrig utnyttjat molnet för mina tester men tycker att det låter väldigt spännande. Tror att detta kan skapa och öppna upp väldigt mycket nya möjligheter för oss att genomföra vissa tester.
Lärorikt att läsa hur man praktiskt kan gå tillväga för att sätta upp och utföra tester i molnet.
Tackar för att du delar med dig!