Vi trenger datasystemer som blir bedre av røff behandling

Ekstremværet Dagmar i desember 2011 viste at Norges strømforsyning- og telekommunikasjonssystemer var sårbare for ekstreme naturhendelser.

Én million personer ble strømløse, ca. 31.500 abonnenter var uten fasttelefon under uværet og mer enn 700 basestasjoner for mobiltelefoni falt ut.

I ettertid ble det innført tiltak for å gjøre systemene mer robuste mot ekstremvær. Spørsmålet er imidlertid om vi kan unngå uventet nedetid i komplekse IKT-systemer ved bare å gjøre systemene mer robuste mot kjente ekstreme hendelser?

Blir tøffere av å bli behandlet røft

I boken Antifragility: Things that Gain from Disorder påpeker Nassim N. Taleb at det motsatte av et sårbart system faktisk er et system som blir mer motstandsdyktig ved røff behandling.

I motsetning til robuste systemer, lærer anti-sårbare systemer hvordan de skal bli sterkere i en verden som er i stadig forandring. Menneskets immunforsvar er et eksempel på et anti-sårbart system som reparerer seg selv og utvikler motstandsdyktighet mot nye sykdommer.

I bøkene Drift into Failure og Safety Differently redegjør Sidney Dekker inngående for vår begrensede evne til å forutsi ekstreme hendelser i komplekse systemer.

Ifølge Dekker og Taleb er det umulig å forutsi alle mulige ekstreme hendelser i dagens IKT-systemer. Vi må derfor utvikle og drifte anti-sårbare IKT-systemer som begrenser skaden av hendelser vi ikke kan forutsi, og som lar oss lære av disse hendelsene hvordan systemene kan forbedres over tid.

Det er fire viktige prinsipper for designet av anti-sårbare IKT-systemer, og ett operasjonelt prinsipp for driften av slike systemer.

Gjør delene av systemet mer uavhengige

Et IKT-system består av en rekke enheter eller moduler som kommuniserer seg i mellom. Det første steget på veien mot et anti-sårbart system er en modularisering av systemet slik at avhengighetene mellom modulene begrenses.

En modul A er sterkt avhengig av en modul B dersom funksjonaliteten til A reduseres kraftig når B helt eller delvis slutter å fungere korrekt.

Dersom tilstanden til modul B har liten innvirkning på funksjonaliteten til modul A så er A er svakt avhengig av B.

Når modul A er svakt avhengig av modul B er det mulig å endre B uten at A må endres så lenge modulene kommuniserer over veldefinerte grensesnitt og  grensesnittene ikke endres.

Isolering av problematiske deler

Det neste steget på veien mot et anti-sårbart system er isolering av moduler som utvikler problemer eller som oppfører seg på uventede måter.

Vi isolerer en problematisk modul ved å ta ned alle dens forbindelser til andre moduler i en periode slik at problemet kan undersøkes og forhåpentligvis korrigeres.

Forbindelser som tas ned og opp kan sammenlignes med automatsikringer. En automatsikring benytter seg av mekaniske og elektromagnetiske reaksjoner til å koble ut en strømkrets ved overbelastning eller elektrisk kortslutning. Sikringen har en av/på bryter som gjør at strømkretsen kan kobles opp igjen når årsaken til utkoblingen er utbedret.

Isolering krever at et system er i stand til å oppdage uregelmessigheter og feil i moduler. Det er mye enklere å isolere moduler uten at det oppstår store negative konsekvenser når det er svake avhengigheter mellom modulene. Sammen hindrer modularisering og isolering at lokale problemer propagerer og tar ned hele systemet.

Flere deler som gjør samme jobb

Målet for et anti-sårbart system er ikke å oppnå høyest mulig effektivitet ved å bruke minst mulig ressurser, men å sikre motstandsdyktighet og riktig utvikling i et tøft miljø med store belastninger på systemet.

Alle anti-sårbare systemer har innebygget redundans for å håndtere uventede hendelser. IKT-systemer kan øke evnen til å motstå uforutsette hendelser ved å benytte flere moduler som utfører samme oppgave.

Dersom en modul utvikler et problem kan en annen modul ta over oppgaven.

Deler som gjør det samme, men er ulike

Et modulært system med diversitet består av moduler med samme funksjonalitet, men med forskjellig design og/eller implementasjon.

Diversitet blant moduler gjør det mindre sannsynlig at flere moduler vil feile av samme grunn til samme tid. Bare et system med diversitet er motstandsdyktig mot at lokale feil og problemer sprer seg. Selv om den enkelte modul i et system med diversitet fremdeles vil være sårbar, slutter ikke hele systemet å fungere.


Her ser du hvordan et system kan se ut når det går fra å være modularisert, til å også ha flere moduler som gjør samme jobb og til slutt har moduler som gjør samme jobb, men som er forskjellige fra hverandre. (Figur: Kjell Jørgen Hole)

De fire designprinsippene modularisering, isolering, redundans og diversitet gjør et system robust mot uønskede hendelser. Prinsippene medfører ikke at alle negative hendelser unngås, men sørger for at det er mulig å redusere konsekvensene av hendelsene.

Kunstige feil kan være et læreverktøy

For at et robust system skal bli anti-sårbart er det nødvendig at systemet selv (eller dets operatører) lærer av inntrufne hendelser hvordan systemet kan forbedres for å møte fremtidige negative hendelser.

Når et system tar i bruk designprinsippene, kan vi med viten og vilje introdusere kunstige feil i systemet uten at konsekvensene blir utålelige. Kunstige feil flytter fokuset fra å forutsi fremtidige hendelser til rask testing av endringer like etter at de er innført.

Leave a Reply

Your email address will not be published.