Slik drifter de fra Mo i Rana

- Vi har nylig begynt å se litt på Nomad/Consul som et alternativ til Kubernetes, forteller systemarkitekt Helge Johansen som bygger foretakssystem hos Cerum i Mo i Rana.

Ikke verst utsikt fra kontoret i Mo i Rana. 📸: Privat
Ikke verst utsikt fra kontoret i Mo i Rana. 📸: Privat Vis mer

Du kjenner kanskje ikke til Cerum, men gjengen i den Mo i Rana-baserte bedriften har utvikla SaaS-applikasjoner siden edge var den dominerende datastandarden på mobil.

I dag bygger de et såkalt foretakssystem, et system som skal være et verktøy for alt et foretak trenger. Vi snakker kjente gjengangere som kalender, fakturering, e-post, CRM.

I slik drifter vi-serien på kode24 hører vi ofte fra foretak som bygger store nettsider med enorm trafikk, derfor synes vi det var interessante å høre fra et mindre firma som livnærer seg med en klassisk applikasjon på nett, om hvordan deres behov skiller seg fra for eksempel en nettavis.

Systemarkitekt og utvikler hos Cerum, Helge Johansen, forklarer hvorfor de fortsatt bruker UDP fra port 53.

Helge Johansen er systemarkitekt og utvikler i Cerum. 📸: Privat
Helge Johansen er systemarkitekt og utvikler i Cerum. 📸: Privat Vis mer

#1. Helge, hvor driftes det dere bygger i dag fra? 🕵️

Utviklingsmiljøet vårt er i Mo i Rana, mens produksjonsmiljøet står hos en colocation leverandør.

Vi kjøper og eier egen hardware som vi virtualiserer på, da det ut ifra våre krav og behov var mer økonomisk lønnsomt enn å gå over til rene skyløsninger da vi sist fornyet parken vår.

Vi kommer til gjøre samme evaluering ved neste fornyelse av maskinpark.

Målet med vår driftsmodell er at vi skal teknisk operere som vår egen skyleverandør. Dermed blir det i fremtiden enklere for oss å velge å migrere hele eller deler av tjenester til eksterne leverandører.

Vi har flyttet noen frontends til Netlify, og ser kontinuerlig på alternative løsninger og leverandører.

På grunn av kundekrav er det ikke mulig for oss å drifte alt på utenlandske tjenester. Vi hadde gjerne sett at det norske markedet for drifting av standardiserte kontainerbaserte tjenester var mer modent. Vi har levert nettbaserte tjenester i 20 år, og vi jobber derfor også aktivt med å modernisere de eldste systemene våre til å blir mer driftsmessig fleksible.

#2. Hvordan håndterer dere deploy til serverene? 📦

Vi benytter oss primært av Gitlab som verktøy, herunder CI/CD pipelines.

Det aller meste av CI-jobber kjøres som docker-images i kubernetes, mens noen få ting kjører på spesifikke noder når det trengs. Disse bygger, tester og deployer for alle våre prosjekter, både backend, frontend og apper.

#3. Hva bruker dere til å holde oversikt over drift? 🪟

  • Konfigurasjon med puppet
  • Metrics og automatisk overvåkning med Prometheus/Alertmanager
  • Manuell analyse og dashboards stort sett i Grafana
  • Logging med filebeat og Elasticsearch

Så mye som overhodet mulig lever i Git, med tilhørende CD.

Filosofien rundt dette er vel egentlig GitOps, eller Desired State Configuration, eller Infrastructure as Code, alt etter hva man syns og mener.

Det er små forskjeller på disse, men de berører mye av det samme. Men for vår del så skriver vi Infrastruktur som kode (Puppet), som ligger i et Git-repo, og dette er førende, så da er vel mest GitOps (“Git is the one and only true source”).

Når vi skal sette opp noe nytt skjer dette også i en feature-branch, også pekes nodene til det puppet-environmentet som inneholder disse endringene, og så merges det inn når vi er ferdig. Så uansett om vi skal sette opp 1 eller 10 noder, er det mer eller mindre like mye arbeid/kode, og vi er også sikre på at alle nodene er helt like.

Sjefsarkitekt Bjørn-Tore Hagen og systemarkitekt og utvikler Morten Johansen er også aktive i devops-miljøet hos Cerum.
Sjefsarkitekt Bjørn-Tore Hagen og systemarkitekt og utvikler Morten Johansen er også aktive i devops-miljøet hos Cerum. Vis mer

#4. Hvordan håndteres caching? 💾

I backend-applikasjonene benyttes Memcache og Redis.

Vi cacher i økende grad også data i frontender, både native-apper og Single Page App-er.

Vi leverer relativt lite statisk innhold, men noe er cachet med en hjemmesnekret løsning...

#5. Hva bruker dere til domener/DNS? 🏡

Det enkle svaret er UDP port 53. Det litt lengre svaret er at vi har egne DNS-servere med dynamisk backend som lar oss automatisere en del ting, som f.eks. ACME DNS-01 challenges når sertifikater skal fornyes.

I tillegg brukes et snev av Cloudflare DNS for å sjekke forholdene der.

«»

#6. Hva bruker du mest tid på i hverdagen i forhold til drift? 🌞

Det siste året har det gått mye tid til å automatisere repetitive driftsoppgaver. Dette bærer nå frukter ved at tidsbruket reduseres og vi kan bruke litt mer tid på utvikling.

I tillegg gjør konseptet med infrastruktur og konfigurasjon som kode oss tryggere på resultatet av endringer vi gjør, og vi kan være trygg på at alle instanser som skal være konfigurasjonsmessig like faktisk er like.

Vi bruker ikke mye tid på drift, vi er alle primært systemutviklere.

#7. Hva er du mest fornøyd med å ha gjennomført i forbindelse med drift det siste året? 🤟

Vi har over hele linja tatt mer i bruk CI/CD metodikk for å forbedre arbeidsflyt og heve kvalitet. Dette har resultert i at vi har flere hundre pipelines som går om dagen, som linter, tester og deployer feature-brancher eller alpha/beta/production-branches.

Dette gjør at vi relativt fort kan rulle ut ting, og være ganske sikker på at det vi pusher ut ikke ødelegger noe.

#8. Er det noe som skiller deres driftebehov fra andres? 🥕

Nei ikke egentlig, vi som de fleste ønsker jo så klart så lite nedetid som mulig, helst ingen.

Vi jobber stadig med å forbedre redundansen på våre systemer, både i form av noder, og hvordan de skal oppføre seg om de ikke har kontakt med alt de burde ha kontakt med, herunder spesielt systemer som f.eks. adgangssystemer til lokalene til kunder.

#9. Hva har du lyst til å teste/bytte ut fremover, og hvorfor? 🚄

Vi har nylig begynt å se litt på Nomad/Consul som et alternativ til Kubernetes, Google Cloud Run til enkle uavhengige operasjoner som for eksempel dokumentkonvertering og andre teknologier og tjenester som kan hjelpe oss å strømlinjeforme applikasjons-hosting i framtiden.

#10. Hva skulle du ønske utviklere og kolleger ble flinkere på? 💡

Dette er en perfekt mulighet for meg å fronte viktigheten med dokumentasjon.

Noen her har vært med fra starten av i 2000, og for nye som kommer inn kan det til tider være litt mye å gape over til tider.

Vi har de siste 2 årene utvidet staben betraktelig for å gjøre en satsning, og da har dokumentasjon vært et godt hjelpemiddel.

Så hvis alle er flinke å dokumentere ting, får de mindre spørsmål om ting de har klødd på senere, og får mer tid til å være produktive.