Maar eerst: redundantie en wat dat met fault tolerance en high availability te maken heeft
Redundantie is letterlijk meervoudig. Voor IT wil dit zeggen dat je componenten dubbel uitvoert. Valt een primair component uit, dan kun je altijd terugvallen op een reservecomponent. De focus ligt hierbij doorgaans op kritieke componenten van een IT-omgeving. Denk daarbij aan de energievoorziening, koeling, UPS-systemen en noodstroomvoorziening.
Dat de focus op deze componenten ligt is niet verwonderlijk. Valt een individuele server uit? Dan is de impact hiervan beperkt tot de data en/of applicaties die je op deze server host. Valt echter een kritiek component zoals de koeling uit? Dan kan dit van directe invloed zijn op de stabiliteit, werking en prestaties van je volledige IT-omgeving. Je wilt dan ook zeker zijn dat kritieke componenten altijd beschikbaar en operationeel blijven, iets waaraan redundantie in belangrijke mate bijdraagt.
Redundantie is niet alleen geschikt voor fysieke componenten van je IT-omgeving. Het draagt ook bij voor het bewaken en optimaliseren van de beschikbaarheid van (delen van) je applicatie. Daar dragen fault tolerance en high availability aan bij.
Fault tolerance versus high availability
Beide termen worden vaak samen genoemd, hoewel er belangrijke verschillen zijn.
High availability verwijst als term naar de totale uptime van een systeem. Zo streef je bij een high availability-omgeving naar een zeer hoge beschikbaarheid, dat we berekenen met een percentage dat de totale beschikbaarheid ten opzichte van de totale runtime weergeeft.
Fault tolerance is een term die verwijst naar het dusdanig opzetten van systemen dat zij in staat zijn tot het opvangen van hardware- en softwarematige problemen, zonder dat dit impact kent op de functionele werking. Bijvoorbeeld door het spreiden van workloads over meerdere server en/of IT-omgevingen. Maar ook het gebruik van een automatische failover, waarmee je bij technische problemen automatisch overstapt op een redundant component en zo de beschikbaarheid op peil houdt.
Het fault tolerant maken van je omgeving kan in belangrijke mate bijdragen aan het realiseren van een high availability-omgeving. Daarbij moeten we echter wel opmerken dat een systeem zowel high availability als fault tolerant kan zijn, maar dit niet allebei tegelijk hoeft te zijn. Is een applicatie fault tolerant? Dan kan je deze doorgaans ook als een high-availability applicatie zien. Realiseer je een high availability applicatie? Dan hoeft deze echter niet per definitie fault tolerant te zijn.
Wat betekent high availability?
Availability geeft de beschikbaarheid van een applicatie aan, en is bijvoorbeeld vastgelegd in de Service Level Agreement (SLA) die je afsluit met je provider. Doorgaans mik je hierbij op een beschikbaarheid van meer dan 99%, al zijn afhankelijk van je toepassing ook percentages tot 99,99% mogelijk.
Zet je in op high availability? Dan zet je alles op alles voor het realiseren van een zeer hoge beschikbaarheid van je webapplicatie of infrastructuur. Dit is onder meer relevant als een applicatie een kritieke functie binnen je organisatie of dienstverlening vervult. Of als uitval tot een fors omzetverlies of grote reputatieschade kan leiden.
Wat betekent fault tolerance?
Fault tolerance omschrijft het voorkomen en/of verwijderen van zogeheten single points of failure. Dit zijn software- of hardwarematige zwakke plekken in een systeem, die voor de beschikbaarheid van onmisbaar belang zijn. Uitval kan dan ook de beschikbaarheid en het functioneren van een applicatie in gevaar brengen. Door het vermijden van single points of failure stel je zeker dat je systeem geen enkel component omvat dat bij technische problemen kan leiden tot uitval of het onbruikbaar worden van een volledige applicatie of omgeving.
Voor het realiseren van een fault tolerant-systeem kun je onder meer inzetten op processen als load balancing en failover. Zo verdeel je bij load balancing workloads bewust over meerdere hardwarematige componenten, zoals fysieke servers, virtuele machines of cloud omgevingen. Valt een van de componenten uit? Dan kunnen de overige componenten de taak overnemen. Bij failover kies je voor het creëren van een back-up waarop het systeem bij technische problemen kan terugvallen. Zo kun je bijvoorbeeld een databaseserver dubbel uitvoeren en de servers met elkaar synchroniseren, zodat altijd een backupdatabase beschikbaar is. Prettig is dat het overschakelen naar een dergelijk backup-component volledig automatisch gaat en gebruikers in de praktijk weinig tot geen hinder ondervinden.
Fault tolerance versus high availability: wat zijn de overeenkomsten?
Over het verschil tussen fault tolerance en high availability bestaat soms verwarring. Niet verwonderlijk: de begrippen verschillen én liggen dicht bij elkaar. Zowel fault tolerance als high availability is een manier voor het naar een hoger niveau tillen van de beschikbaarheid van je applicatie. In beide gevallen streef je hierbij naar een zo hoog mogelijke uptime.
Voor het realiseren van deze beschikbaarheid zet je bij zowel fault tolerance als high availability in op het optimaliseren van de beschikbaarheid van je applicatie, het voorkomen van uitval en het opvangen van technische problemen. Een andere overeenkomst is dat beide methoden om een investering vragen. Zo investeer je bij fault tolerance in reservecomponenten die de werking van primaire componenten kunnen overnemen, terwijl je bij high availability investeert in het maximaliseren van de uptime van je applicatie en de onderliggende infrastructuur.
Fault tolerance versus high availability: wat zijn de verschillen?
Bij een high availability-systeem zorg je voor een hoge beschikbaarheid en probeer je uitval te allen tijde te voorkomen. Gaat het toch fout? Dan kan je ondanks alle inspanning toch te maken krijgen met uitval en impact op de business.
Kies je voor fault tolerance? Dan zet je in op het kunnen opvangen van technische problemen met behulp van backup-componenten. Dit betekent in de praktijk dat je via bijvoorbeeld failovers indien nodig automatisch overstapt op deze backup-componenten, en gebruikers daardoor probleemloos kunnen doorwerken. Uitval sluit je hierdoor nagenoeg volledig uit.
Wat de meest relevante optie is bij het afwegen van fault tolerance versus high availability is onder meer afhankelijk van je organisatie, de aard van de activiteiten die je uitvoert en je afhankelijkheid van IT-systemen.