Geen (zichzelf respecterende) DevOps-engineer kan zonder..

Joost

Geschreven door Joost Saanen op 23-2-2017
4 minuten leestijd

Wat heb je nodig voor het beheer van een webapplicatie of maatwerksoftware: Een goed doordachte logstrategie. Het analyseren van logging is misschien wel de belangrijkste taak van iedere (serieuze) DevOps-engineer. Maar wat je in de praktijk vaak ziet, is dat er voornamelijk in logbestanden wordt gekeken wanneer een probleem zich al heeft gemanifesteerd. Toch is er meer voordeel te halen wanneer je als DevOps de logging beter beheerst, begrijpt en optimaal interpreteert. Maar, wat is dat dan?

Analyseren van logging

Alle features zijn volledig afgetest (automatisch én handmatig). En alles leek naar behoren te werken. Maar nu alle microservices aan elkaar zijn geknoopt en de applicatie draait in Docker, gaat er iets mis. Alleen.. wat nu precies? En waar moet je kijken?

Misschien ten overvloede maar toch: belangrijk is dat je de logging en monitoring vanaf het begin op orde hebt. Bij het opzetten van een server of infrastructuur (bij bijvoorbeeld Amazon AWS) is het correct inrichten van logging tot het laatst bewaren, een veelgemaakte fout. Dat is jammer want vroeg of laat ga je deze toch echt een keer nodig hebben.

Analyseren van logging

Een praktisch voorbeeld

Neem bijvoorbeeld een database die wordt gebruikt door een web-applicatie. Wanneer de populariteit van je applicatie groeit, zal er vanzelfsprekend ook meer gevraagd worden van de database. Je applicatie wordt verder ontwikkeld en zal wellicht complexere queries gaan bevatten. Daarnaast nemen het aantal records en tabellen ook toe.

Wanneer je applicatie goed is opgebouwd en efficiënt met resources om kan gaan in de meeste situaties, verwacht je misschien dat het probleem je bespaard blijft. In de praktijk wordt een applicatie zo gebouwd, dat deze goed om kan gaan en meegroeien met de gegeven omstandigheden van dat moment. Het is moeilijk om in de toekomst te kijken. Een database-query zal geen problemen geven als deze wordt uitgevoerd op een database met weinig data. Wanneer de omstandigheden veranderen, komen vaak de verborgen inefficiënte delen van de applicatie bovendrijven.

En juist tijdens het ontstaan van deze onvolkomenheden, heb je keihard die logging nodig. Want de kans is groot dat je de trends hier al waar kan nemen. Je ziet bijvoorbeeld dat een query geleidelijk aan steeds langzamer wordt. De kans dat dit een écht probleem gaat worden is groot. Om erger te voorkomen, is het belangrijk dat je snel reageert.

Ook kun je door middel van het analyseren van logging andere vormen van knelpunten detecteren. Sommige vertragingen zijn moeilijk waarneembaar omdat ze bijvoorbeeld niet direct opvallen bij de gebruiker maar wel een sneeuwbal-effect veroorzaken. Denk bijvoorbeeld aan meerdere processen die afhankelijkheden hebben met elkaar. Dit kan leiden tot een trage applicatie, of in het meest ongunstigste geval: een systeem wat helemaal niets meer doet. Een goede logstrategie en analyse helpen je deze situaties te herkennen en detecteren.

Inzicht bij schalen van systemen

Het analyseren van logging geeft je een goede indruk hoe een systeem gaat reageren als je gaat bijschalen. Wanneer je bijvoorbeeld weet wat de load van een server is (hoe druk deze het heeft) bij 100.000 specifieke requests per dag, kun je grofweg berekenen hoeveel capaciteit je nodig gaat hebben bij een aantal wat is gegroeid naar 10.000.000. Ook geeft dit weer inzicht in de kwaliteit van bepaalde stukken code of queries die gebruikt worden in een applicatie. Het zou zo maar kunnen dat er bij dergelijke groei delen van de applicatie moeten worden hergeschreven. In software development termen wordt dit ook wel refactoring genoemd. Geen probleem, want je bent er op tijd bij!

#hoedan

In een volgend blog zal ik verder in gaan op hoé je tot een goede logstrategie komt.

Conclusie

Een goed doordachte logstrategie zorgt ervoor dat je snel op knelpunten en onregelmatigheden kan reageren. Hierdoor creëer je een omgeving die — indien nodig — mee kan groeien en helpt om je software (en dus ook je bedrijf) te verbeteren.

Kabisa heeft een afdeling Managed Services die is gespecialiseerd in het beheer en hosten van web-applicaties. Dit kunnen web-applicaties zijn geschreven in Ruby on Rails, Java of Elixir. Maar het kan ook gaan over bedrijfskritische mobiele apps of mobiele platforms. Het monitoren en analyseren van logging is een dagelijkse activiteit wat het werk van onze DevOps-engineers mogelijk maakt. Omdat we dit goed onder controle hebben, kunnen we bij onze klanten vaak problemen voorkomen — en mochten ze desondanks toch voorkomen, ze snel oplossen. Ook zijn we in staat om dit op een pro-actieve manier te doen. Met pro-actief bedoelen we: de klant bellen bij die bovengenoemde 100.000 requests met de mededeling dat er iets moet gaan gebeuren bij 500.000 requests.

Ben je op zoek naar een beheerpartij voor een web-applicatie of mobiele app? Neem dan eens contact met ons op. Misschien kunnen wij je verder helpen!

Joost

Joost Saanen

Gepassioneerde all-rounder met brede interesses; van serverbeheer en cloudhosting tot (UI)design en (web)development. Hardloopt en schrijft het liefst tegelijk.