>>
25-augustus-2014, min leestijd

Agile Monitoring, de volgende stap

Gebruiker-simulatie voor het monitoren van de gebruikerservaring, wordt vrijwel uitsluitend verzorgd door monitoringscripts. Bij het uitrollen van een nieuwe versie van een (web)applicatie kunnen zowel zichtbare als onzichtbare wijzigingen impact hebben op deze scripts. Of het nu een extra invoerveld is op een formulier, een nieuwe url van een pagina, of een gewijzigd element in de HTML.

Vaak komt het erop neer dat de scripts aangepast moeten worden en komt men daar pas na deployment achter door (false positive) alerts. Zelfs bij organisaties waarbij het updaten van de monitoring onderdeel is van het deployment plan kunnen de scripters vaak pas aan de slag na deployment op productie.

Nu steeds meer organisaties gebruik maken van een Agile methodiek met korte release cycles en ook steeds meer Continuous Integration of zelfs Continuous Delivery ingericht hebben, zijn deze aanpassingen dermate vaak nodig dat het steeds moeilijker wordt de monitoring draaiend en betrouwbaar te houden. Hoe zorg je dat je monitoring net zo Agile blijft als de rest van je organisatie?

Hier hebben wij bij Performr, het APM-product (Application Performance Monitoring) van Computest, ook over nagedacht en onze visie van Agile Monitoring is om vroeg, robuust en geïntegreerd te monitoren.

Monitor Vroeg

Wij zijn van mening dat APM veel eerder opgenomen dient te worden in de ontwikkeling van nieuwe applicaties, of nieuwe versies daarvan.

Het monitoren van ontwikkel-, test- en acceptatieomgevingen biedt de volgende voordelen:

  • De performance-impact van wijzigingen kan proactief worden gevonden
  • Geïntroduceerde functionele fouten in de monitoring flows worden gedetecteerd
  • Het is duidelijk of de monitoringscripts aangepast moeten worden
  • Ontwikkelaars worden gewezen op de testability van de applicatie

Doordat deze zaken vroeg in het ontwikkelproces worden gesignaleerd kan er tijdig op ingespeeld worden en zijn de kosten en time-to-resolution van het ontwikkelen van een oplossing lager.

Het detecteren van functionele fouten en van wijzigingen in de performance door de monitoring is uiteraard geen volledige vervanging van (geautomatiseerde) functionele testen en performancetesten, maar wel een nuttige aanvulling.

Monitor Robuust

Een andere manier om te zorgen dat de monitoring bij blijft is door robuuste scripts te schrijven. Dit klinkt als een open deur, maar in de praktijk is het lastiger dan je zou denken. Er is veel ervaring nodig met techniek en de betreffende applicaties om scripts werkend te houden.

Robuuste scripts worden gekenmerkt door het feit dat ze keer-op-keer hetzelfde correcte gedrag simuleren en dus consistent zijn. Daarnaast moeten er uitgebreide verificaties plaatsvinden om te bepalen of de applicatie correct werkt. Tot slot moeten alle verificaties en acties die de scripts uitvoeren zo generiek gemaakt worden dat ze gedurende lange tijd en ook op toekomstige versies van de applicatie blijven werken.Concreet houdt dat in dat er bijvoorbeeld verificaties worden gedaan op paginateksten die zelden-tot-nooit veranderen, maar wel enkel weergegeven worden bij een correcte werking van de applicatie. Voor acties op applicatie-elementen, zoals het klikken op een knop of het invullen van een tekstveld, gaat eigenlijk hetzelfde op, maar moet de consistentie vaak “onder de motorkap” gezocht worden.

Monitor Geïntegreerd

Net als alle onderdelen van een Agile werkwijze moet de monitoring integreren in het proces. Dit begint bij het geautomatiseerd bijwerken van de monitoringscripts bij het uitrollen van een applicatie. Daarnaast moet een registratie plaatsvinden van de deployment, zodat eventuele trendbreuken door bepaalde versies zichtbaar gemaakt kunnen worden. Ook kan er overgegaan worden naar een tijdelijk intensievere monitoring vlak na de deployment om problemen nog sneller te kunnen signaleren. Tot slot moet er een automatische rapportage gemaakt kunnen worden over een bepaalde periode direct na een deployment ten opzichte van een evenzolange periode van de deployment daarvoor om verschillen in performance inzichtelijk te maken.

De integratie van monitoring beperkt zich echter niet tot tooling, ook teamleden met verschillende specialisaties moeten samenwerken om de monitoring up-to-date en werkend te houden. Denk hierbij aan DevOps-achtige constructies waarbij ontwikkelaars samenwerken met testers en beheerders om de monitoringscripts te bouwen of aan te passen. Hierdoor raakt iedereen doordrongen van het belang van performance monitoring en leert men de applicatie beter kennen.

Performr Agile

We zijn bij Performr uiteraard bezig om bovenstaande visie realiteit te maken en enkele van onze klanten maken hier inmiddels gebruik van.

Zo hebben wij het flexibele monitoringscriptbeheer van Performr beschikbaar gesteld door middel van een JSON API die gebruikt kan worden om scripts automatisch te updaten bij een nieuwe build door bijvoorbeeld Jenkins CI. Ook het uitlezen van meetresultaten is mogelijk en we voegen steeds meer API-calls toe om onze functionaliteiten beschikbaar te stellen aan derden.

Om robuuste scripts te kunnen bouwen hebben we Selenium-ondersteuning toegevoegd aan Performr. Hierdoor kan men gebruik maken van high-level browser-functionaliteiten om robuuste scripts te realiseren. Bovendien zijn ontwikkelaars en testers vaak bekend met Selenium en kunnen ze snel met Performr aan de slag. Tot slot kunnen wij als onderdeel van het Performance Assurance aanbod van Computest een basis neerzetten waarop het team verder kan bouwen.

Het nut van performance monitoring staat buiten kijf, het geeft immers objectief inzicht in de gebruikerservaring van een applicatie, inclusief extra’s als alerting en rapportages. Door de monitoring onderdeel te maken van je Agile werkwijze neem je de volgende stap. Met óf zonder Performr.

Over de auteur

Michel Stol is full-time nerd en wil altijd op de hoogte blijven van de nieuwste ontwikkelingen. Zijn officiële titel is Development Manager van Performr en hij is te bereiken op mstol at performr dot com.