For en tid tilbake jobbet vi med et oppdrag for Fagforbundet og Norsk Folkehjelp med å bygge en kampanjeside. Målet med selve kampanjen var å rette fokus på oljefondets investeringer i de okkuperte områdene i Palestina. Når slike oppdragsgivere banker på døra og spør om man vil være med på å sette lys på informasjon som burde nå det norske folk, er ikke vi i Bredvid tunge å be.
Er du interessert i å besøke kampanjen, er den fortsatt tilgjengelig på https://fagforbundet.no/oljefondet.
Men et par timer før Fagforbundet og Norsk Folkehjelp skal lansere kampanjesiden og spre den i sine kontaktnettverk, skjer det som ikke skal skje. Skytjenesten man bruker for noen av nøkkelfunksjonene på kampanjesiden, Azure Functions på datasenteret i Vest-Europa, går ned. Hva gjør man da?
Når man benytter skytjenester som Azure Functions eller tilsvarende AWS Lambda, er det for å kunne fokusere på selve funksjonaliteten i applikasjonen og unngå unødvendig konfigurasjon av infrastruktur. Den tar skyleverandørene seg av.
Videre er det et kjent prinsipp at man bør distribuere funksjoner og applikasjoner i minst to regioner for å sikre seg mot uforutsette hendelser som kan påvirke infrastrukturen. Denne vurderingen må veies opp mot økt kompleksitet for å sørge for at disse funksjonene forholder seg til samme lagringstjeneste og routing med ansvar for at den riktige av tjenestene svarer til enhver tid. Valget falt på at en enklere konstruksjon var mest hensiktsmessig i dette tilfellet, mye fordi Azure garanterer en tilgjengelighet på 99,95% for tjenesten som ble benyttet [1]. Det var altså en 0,05% sjanse for at tjenesten ikke skulle være tilgjengelig, og sannsynligheten for at det skulle inntreffe rett før lansering kan man jo tenke seg til.
Å satse på at man ikke har uflaks er jo nesten dødssynd i større systemer.
- Henning Grande, utvikler i Bredvid
Henning er en av utviklerne som jobbet tettest med oppdraget, og som fikk litt forhøyet puls når det ble oppdaget at kampanjesiden oppførte seg merkelig.
— Vi hadde på forhånd sjekket at det ikke var noe planlagt vedlikehold av tjenestene, men vi gjenkjente hvilke funksjoner på siden som var nede og begynte å undersøke disse isolert med en gang. Det var da vi fant ut hva som var galt. Etter hvert kom det også en melding fra Azure, men da med en viss usikkerhet rundt når dette kom til å være oppe igjen – det kunne ikke vi lene oss tilbake på.
Hvordan løste dere det og fikk siden opp igjen til lansering?
— Heldigvis hadde ikke lagringstjenesten vi benyttet oss av gått ned, så engasjementene og data som allerede var registrert i forbindelse med kampanjen måtte ikke hentes ut av backup. Så det vi gjorde var å kjappe oss og distribuere funksjonene til Azure Functions i en annen region. Siden vi kjenner til skytjenesten ganske godt gikk dette veldig effektivt for seg, og alle nye tilpasninger var på plass før lanseringen.
Hva ville dere gjort annerledes dersom dere skulle satt opp systemet på nytt i dag?
— Å satse på at man ikke har uflaks er jo nesten dødssynd i større systemer. Så kanskje vi hadde gjort en enda mer ekstensiv vurdering på forhånd. Samtidig sparte vi oss for en god del ekstra logistikk med den tilnærmingen vi valgte, og man ser jo hvor effektivt det er å få det opp igjen, selv når man opplever å ha maks uflaks. Så det er mulig den samme tilnærmingen hadde blitt valgt uansett, gitt systemets skala og omstendigheter. Men neste gang vi gjør det, lager vi en protokoll på forhånd, slik at vi kan være enda mer effektive når vi setter opp den erstattende tjenesten.
Så hva gjør du når det er to timer til en kampanjeside skal lanseres, tjenesten du bruker på Microsofts datasenter i Vest-Europa går ned og du ikke har distribuert nettsiden ved hjelp av flere tjenester i ulike regioner?
— Du følger den protokollen du har planlagt, eller tenker “hvorfor meg?” og kaster deg rundt.
Med rot i godt etablerte prinsipper, krever et hvert system en egen vurdering av hva som er den mest hensiktsmessige arkitektoniske tilnærmingen og hvordan man best mulig kan utnytte de skytjenestene som er tilgjengelige. Vi synes det er hyggelig at Fagforbundet og Norsk Folkehjelp valgte oss som oppdragsgiver for denne kampanjen og håper å kunne jobbe sammen også med kommende prosjekter.
“Så lenge enden er god..” er det noe som heter. I skrivende stund har over 12 000 personer, til tross for et mål på 5 000, benyttet kampanjen til å vise at de bryr seg – fortsett gjerne til kampanjesiden og del ditt engasjement du også!
[1]: https://azure.microsoft.com/nb-no/support/legal/sla/functions/v1_1/
Har du et prosjekt hvor du vurderer å bruke nettsky?
Ta kontakt med oss på kontakt@bredvid.no for en uforpliktende prat.