Joost van Hassel
apps voor op het web, smartphones & tablets

Uptime optimalisatie

4 juli 2012

In een wereld waar steeds meer bedrijfsprocessen afhankelijk zijn van technologische middelen, is beschikbaarheid van applicaties die online draaien, steeds belangrijker. Hoewel niemand een applicatie aan kan bieden met 100% uptime garantie, zijn er natuurlijk zat mogelijkheden om te optimaliseren voor een zo hoog mogelijke beschikbaarheid.

Door een applicatie beschikbaar te maken op meerdere servers, blijft deze beschikbaar als een server onbereikbaar wordt (om welke reden dan ook). Hierbij bestaat de mogelijkheid om de verschillende servers niet op dezelfde lokatie te hosten, maar geografisch gescheiden. Dit heeft voordelen indien een heel datacenter 'down' gaat. Om te voorkomen dat een uitgevallen server voor capaciteitsproblemen zorgt, is het wenselijk om ofwel meer servers te hebben draaien dan nodig, ofwel te zorgen dat het uitvallen van een server gedetecteerd wordt en hierop direct en automatisch een nieuwe server geïnstantieerd wordt. Dit laatste kan ook ingezet worden om bij een (plotseling) stijgende vraag naar capaciteit het serverpark op te schalen zodat geen beperkingen in beschikbaarheid en/of prestaties optreden.

Hoe meet je uptime? Sinds kort gebruik ik voor de monitoring van mijn website de tool Pingdom, een van de vele beschikbare webbased applicaties die dergelijke diensten aanbieden. Pingdom kijkt iedere minuut of mijn website beschikbaar is en notificeert me indien dit niet het geval is. Het overzicht van de beschikbaarheid van mijn website heb ik publiekelijk beschikbaar gemaakt.

Ben je er dan? Nee. Mooi dat de webapplicatie beschikbaar is, maar werkt hij ook? Om dat geautomatiseerd te testen is het altijd mogelijk om geautomatiseerde tests te schrijven die periodiek controleren of specifieke zaken naar behoren werken. Voor mijn website heb ik een dergelijke tool niet geschreven, voor een uitgebreide webapplicatie is dit wél aan te raden. Door geautomatiseerd te detecteren of de applicatie werkt, kan bij storingen direct ingegrepen worden, om zo de uptime zo hoog mogelijk te houden.

In veel Service Level Agreements (SLA's) worden uptime percentages vastgelegd, meestal als percentage van een maand. Zo garandeerd Microsoft bijvoorbeeld voor hun hosting dienst een beschikbaarheid van 99,95%. Daarmee kan de dienst er dus maandelijks ongeveer 21 minuten uitliggen voordat er enige aanspraak gemaakt kan worden op een (beperkte) vergoeding. Omdat 21 minuten per maand best veel is, is het duidelijk wenselijk om te zorgen dat een applicatie eventuele storingen zo veel mogelijk kan opvangen.

Mijn advies: bouw applicaties schaalbaar en zoveel mogelijk storings-proof.

(Een tweede advies; let op dat je bij het online zetten van een publieke statuspagina de werking van de controle niet verhindert zoals ik vandaag... zie de status pagina)