Bij de implementatie van bedrijfskritische systemen wil het helaas nog wel eens mis gaan. Soms goed mis, waardoor uiteindelijk faillissement het enige is wat resteert. Maar vaker en gebruikelijker is vlak na een implementatie nachten doorwerken door de IT specialisten om de ergste gebreken zo snel mogelijk op te lossen. De uitdrukking ‘fingers crossed’ wordt daarom ook in 2013 nog altijd veel gebruikt bij implementatie van bedrijfskritische systemen.
Om problemen met systemen op te kunnen lossen is een eerste vereiste een goede analyse. En om goed te kunnen analyseren is logging vaak noodzakelijk. Dit om te achterhalen wat er mis gaat. Nu is het helaas zo dat om performance redenen vaak een duivels dilemma ontstaat: Continue alles loggen wat in een systeem gebeurt maakt een systeem vaak enorm traag. Maar alleen logregels schrijven bij fouten is vaak onvoldoende om de echte oorzaak van falen te achterhalen.
De traditionele loglevels die bij systeemontwikkeling gebruikt worden zijn:
- Fatal: Alleen de meest ernstige fouten worden gelogd. De term ‘fatal’ geeft natuurlijk aan wat dat er iets fataals is gebeurd. Er is bij een logmelding ‘fatal’ iets écht stuk.
- Error: Een onverwachte fout of conditie treed op. Vaak een eerste aanleiding tot een speurtocht naar de echte oorzaak, zeker in gedistribueerde omgevingen. Maar een technische fout hoeft geen fout met gevolg voor de gebruiker van het systeem te zijn.
- Warn: Een waarschuwing dat er wellicht niet netjes is geprogrammeerd. Het risico bij warnings is dat deze als ‘normaal’ beschouwd worden als het er heel veel zijn. Het is namelijk in IT land niet ongebruikelijk om systemen met veel ‘warnings’ gewoon in productie te nemen.
- Info: Vaak gebruikt indien voor technische beheerders informatie moet worden weggeschreven. Het volgen van info meldingen geeft inzicht in het gedrag van een systeem. Maar ook bijvoorbeeld audit informatie zoals inloggen in een systeem of het uitvoeren van een transactie zijn info meldingen.
- Debug: Gedetailleerde informatie om het gedrag van een systeem te kunnen analyseren. Voor het schrijven van debug informatie moet vooraf wel een ontwerp gemaakt zijn, anders kan de debug informatie weleens erg leeg zijn.
- Trace: Mogelijkheden die vanuit programmeren vaak beschikbaar zijn om zeer gedetailleerde informatie te achterhalen over het gedrag van een systeem. Zeer handig bij foutmeldingen, maar vaak onbruikbaar in een productieomgeving, aangezien hiervoor speciale IT tools voor nodig zijn. Het is een goedgebruik om te zorgen dat in een productie omgeving geen trace-informatie beschikbaar is. Dit heeft namelijk een performance degradatie tot gevolg. Maar ook een beveiligingsrisico inhouden.
Het klassieke probleem met op een bovenstaande wijze van vooraf anticiperen op mogelijke fouten is dat vaak net niet genoeg informatie beschikbaar is als nodig is bij een écht probleem. Om een probleem te analyseren is namelijk behoefte aan error, warn en debug informatie, maar performance eisen vereisen zo min mogelijk logging als het niet nodig is. Het goede nieuws is dat voor dit probleem meerdere bruikbare oplossingen beschikbaar zijn. Een hiervan is gebruik van een ‘finger crossed’ logging mechanisme.
De kern van het finger crossed logging mechanisme is dat alle informatie wordt gelogd voorafgaand bij een ernstige fout met veel impact. Kern van het finger crossed mechanisme is dat rond risicovolle transacties in geheugen zoveel mogelijk informatie wordt vastgehouden. Alleen bij falen van de transactie wordt deze informatie daadwerkelijk weggeschreven voor analyse. Het ‘finger crossed’ logging mechanisme is beschikbaar is in verschillende programmeertalen. Binnen architectuur wordt het ontwerpen van foutpaden voor bedrijfskritische informatie systemen ook weer veel leuker indien effectief van dit mechanisme gebruik wordt gemaakt.
Het juist gebruik van het ‘finger crossed’ logging mechnisme vereist vooraf een gedegen architectuuropzet om er veel plezier van te hebben. Maar vooraf problemen voorkomen in een systeem is nog altijd beter en goedkoper dan via beperkte logging en trace files nachten doorwerken om problemen achteraf op te lossen.