Dansk tjeneste skalerer maksimalt og sikrer data på Azure

elmah.io hjælper udviklere med at finde fejl på deres sites og services – og skal selv håndtere meget store udsving i den indgående datamængde. Derfor ligger tjenesten på Azure, kan skalere til det aktuelle behov og sikre kundernes data med ekstra lagerplads i skyen.

”Ideen med elmah.io er at stille et værktøj til rådighed for udviklere, der opsamler data om fejl på deres sites eller services,” forklarer Thomas Ardal, der er selvstændig konsulent og medstifter af elmah.io.

Værktøjet har været online i ca. halvandet år og har nogle tusinde brugere – overvejende mellemstore virksomheder og privatpersoner – og ligger på Microsoft Azure.

”Vi kunne i princippet også have lejet nogle virtuelle servere eller lagt det hos Amazon, som jeg også har arbejdet med. Men med Azure får vi så mange ekstra ting med, som ville have været frygteligt tidskrævende og reelt uoverkommeligt at bygge selv. Og vi ville slet, slet ikke have været der, hvor vi er i dag, hvis det havde været nødvendigt,” uddyber Thomas Ardal.

Parkerer først og sortér senere

For eksempel bruger elmah.io den indbyggede Azure Service Bus til at persistere – eller ’parkere’ – data, når de uploades fra kunderne og efterfølgende behandle dem asynkront. I bund og grund kan kunderne således læsse en masse data af på én gang uden at skulle vente på, at de bliver behandlet og gjort søgbare.

”Og nogle gange får vi rigtig mange data på én gang. Derfor anvender vi også autoskalering i Azure Websites, der automatisk skruer op for kapaciteten, når det er nødvendigt. På den måde kan en eller flere kunder sende meget store datamængder, uden at andre mærker en nedgang i performance,” forklarer han.

Maksimal fleksibilitet sikrer tilgængelighed under spidsbelastning

For tiden modtager tjenesten typisk ca. 10.000 fejl i timen, men der er stor variation i datamængden. I peakperioder kan tallet f.eks. nemt nå op på 50.000 fejl pr. time, ”men uden mærkbar forskel i performance på vores API,” tilføjer Thomas Ardal.

I tjenestens back-end spiller 3. partssoftwaren Elasticsearch en central rolle ved at gøre de store datamængder søgbare. Elasticsearch ligger også på Azure, og det er ikke unormalt, at databasen rummer over 100 GB. Sideløbende anvender elmah.io også Azure Blob storage til rå opbevaring af indkomne data.

”I normal drift spiller Blob storage ikke den store rolle. Men skulle vi opleve systemnedbrud eller fejl på Elasticsearch, så fungerer Blob storage som reservelager for alle ubehandlede data, som vi kan arbejde videre med. På den led har vi reelt data to steder i skyen, hvilket giver en sikkerhed for, at der ikke går noget tabt,” siger Thomas Ardal.

”Vi kunne godt flytte – men her er for mange muligheder til at det giver mening”

Thomas Ardal oplever stabiliteten af Azure som udmærket og oppetiden som rigtig god. Med tiden har han også lært at anvende nogle af de muligheder, der er for at holde tjenesten i luften, selv når Azure fra tid til anden ikke fungerer optimalt.

”Der har været nogle Azure-nedbrud det seneste års tid, og det er jo altid irriterende. Men det oplever du jo også, hvis du får hosted dine servere eller driver dem selv. Så alt i alt er vi rigtig godt tilfredse og har absolut ingen planer om at skifte. For Azure indeholder så mange nyttige tjenester og muligheder, der spiller godt sammen med .NET og som ville være utroligt tidskrævende at udvikle selv. Blob storage og Azure Service Bus, for eksempel, men også en omfattende beskyttelse mod DDOS-angreb, som jo er rigtig god at have i baghånden,” siger Thomas Ardal.

Han tilføjer dog, at man ikke af den grund føler sig bundet på hænder og fødder af cloudtjenesten.

”Vi er der, hvor vi godt kunnerykke til en anden tjeneste, hvis vi virkelig ville. Det er besværligt, ja, men absolut muligt – og det er en god frihed at have. Men det ville kræve en eller anden nærmest utænkelig ændring i aftaleforholdene, for eksempel at Microsoft umotiveret satte prisen ekstremt i vejret eller noget i den stil. Og det ligger nok ikke lige i kortene,” siger han.

På elmah.io bloggen kan du læse mere på arkitekturen.