16. december 2021

Fem populære redskaber, der øger robustheden af din IT-infrastruktur

Er din hjemmeside længe om at loade, er din backend ofte nede, eller er din database langsom til at svare? Problemer som disse kan heldigvis afhjælpes ved at implementere tekniske redskaber, der gør din IT-infrastruktur mere robust.

FORFATTER

Rùna Jacobsen

Manager

MEDFORFATTER

Sebastian Schwarze

Senior Consultant


I en IT-infrastruktur kan meget gå galt. En databasetabel kan mangle, en applikation kan løbe tør for hukommelse, eller en åben forbindelse kan kappes. Disse udfordringer har vi vænnet os til at håndtere manuelt fra dag til dag.

I store virksomheder kan IT-infrastrukturen hurtigt blive meget omfattende, og her risikerer man, at mængden af fejl og performanceproblemer vokser én over hovedet. Man er derfor nødt til at medtænke robusthed i sin infrastruktur som helhed og i hvert system for at undgå, at de bliver skrøbelige og upålidelige.

I denne artikel præsenterer vi dig for fem populære tekniske redskaber, der gør din IT-infrastruktur mere robust.


1. Caching

Problem: Dit website er længe om at loade, da der er mange langsomme kald.

Løsning: Indbyg en cache.

Caching er en udbredt teknik til at afhjælpe performanceproblemer specifikke steder i en IT-infrastruktur. Grundlæggende består den i, at man gemmer et svar på en forespørgsel midlertidigt, så svaret kan genbruges senere. Hvis en forespørgsel er særligt tung, bruger den som regel både ressourcer på at hente data fra forskellige kilder og på beregningslogik, og disse ressourcer kan spares ved at gemme svaret i cache.

Teknikken bruges ofte i forbindelse med tunge forespørgsler på information, der sjældent opdateres – eksempelvis et produktkatalog. Cachen har dog behov for hukommelse, og samtidig er der risiko for, at man ikke altid har det nyeste data. Til gengæld øger man hastigheden og sparer de ressourcer, der ellers skulle bruges på hentning og beregning af svaret. Dermed kan caching af svar blandt andet forbedre din hjemmesides TTI (time-to-interactive).


2. Circuit breakers

Problem: Din database løber af og til tør for hardware-ressourcer og bliver langsom til at svare. De forbundne systemer bliver ved med at sende forespørgsler til databasen, indtil den går helt ned.

Løsning: Indbyg circuit breakers mod databasen i de forbundne systemer. Dermed isoleres databasen ved overbelastning.


En circuit breaker – eller en ”sikring” – er en mekanisme, der medvirker, at et afsendersystem midlertidigt kapper forbindelsen til et hårdt presset modtagersystem. Mekanismen gør, at modtagersystemet kan få et pusterum.

Et typisk eksempel på nyttigheden af circuit breakers er, når et modtagersystem bliver for langsomt til at svare eller svarer med mange fejl indenfor et kort tidsrum. Så vil man lade ”sikringen” i afsendersystemet ”springe”, så modtagersystemet får et par minutters pause. Modtagersystemet får dermed tid til at færdiggøre sit arbejde, så normal kommunikation kan genoptages.

3. Rate limiters

Problem: Et eksternt system sender for mange forespørgsler på information til dit interne register. Det gør hele systemet langsomt.

Løsning: Indbyg en rate limiter i registeret, der fortæller det eksterne system, når det sender for mange forespørgsler.


En udbredt type af cyberangreb er forsøg på at overbelaste IT-systemer med mange forespørgsler (såkaldte Denial of Service-angreb). I tilfælde som disse kan man gardere sit modtagersystem mod overarbejde ved at benytte rate limiters. Denne simple foranstaltning begrænser raten af forespørgsler, som et system vil modtage. Hvis den når grænsen, vil den afvise flere kald fra samme afsender i en periode.


4. Redundancy og load-balancing

Problem: Dit website kan nogle gange ikke komme i kontakt med backenden, da denne ofte er nede.

Løsning: Kør flere instanser af backenden, og gem disse bag en load-balancer.


Et udbredt arkitektonisk designprincip er at stille flere kopier af samme komponent til rådighed. Det gør systemet mere robust, fordi systemet fortsætter med at fungere, når enkelte komponenter falder fra. Komponenter kan for eksempel være hardware-ressourcer – såsom RAM eller internetbåndbredde – men også databasekopier eller kritiske services. Man kan med andre ord overskalere sine systemer, så udsving i udbud og efterspørgsel kan håndteres.

Det relaterede begreb load-balancing beskæftiger sig med, hvordan man fordeler arbejde over de komponenter, man har til rådighed. Et klassisk eksempel på, hvordan redundancy og load-balancing går hånd i hånd, findes i microservice-arkitekturer, hvor man ofte har flere kopier af samme microservice kørende. Man vil da typisk opstille en load-balancer, som sender forespørgsler til de forskellige kopier af samme microservice. Det fordeler arbejdspunkler jævnt og aflaster haltende ressource. Hvis en service går ned, vil load-balanceren lede trafikken over på en service, der endnu er oppe. Således kan nedbruddet af en enkelt service ikke mærkes på ydersiden af load-balanceren.

5. Chaos engineering

Problem: Du er i tvivl om, hvorvidt din infrastruktur er robust nok til at modstå uventede nedbrud eller forstyrrelser.

Løsning: Test robusthed ved bevidst at indføre fejl i infrastrukturen.

I 2011 introducerede Netflix et Chaos Monkey-script i deres produktionsmiljø. Scriptet er som sådan ret simpelt: I vilkårlige tidsintervaller slukker det for en tilfældig service i produktion. Idéen er, at infrastrukturen skal være robust nok til at håndtere dette udfald.

Nexflix’ idé er senere blevet grundlaget for begrebet chaos engineering, der dækker over bevidst at introducere nedbrud og forstyrrelser i sine IT-systemer for at teste robustheden. Typisk køres der scripts, som for eksempel lukker services eller forbindelser. Man bør dog holde sig fra at lave disse stunts i sit produktionsmiljø og i stedet anvende et testmiljø – medmindre man er lige så sikker i sin sag, som Netflix er.


Der eksisterer et væld af andre redskaber, der kan øge robustheden af din infrastruktur. Ligegyldigt hvilken udfordring man står overfor, findes der formentlig et softwaredesign-kneb, der kan løse problemet.

Et af de store spørgsmål er dog ofte, hvordan disse nyttige redskaber skal implementeres, da eksisterende systemer og infrastrukturer ikke altid har kapaciteten til at bære dem. Det kan være en god idé at indføre redskaberne via en integrationsplatform, såsom en Enterprise Service Bus, der står for intersystemkommunikation. Under alle omstændinger er det vigtigt at øge robustheden og derved fremtidssikre ens IT-infrastruktur, og for mange virksomheder er en eller flere af de nævnte redskaber vejen frem.