CONTAINERE GJØR DET ENKLERE Å KJØRE KODE I MANGE FORSKJELLIGE MILJØER
Hva kjennetegner containere? Begrepet er ikke noe nytt. Vi bruker det i dagligtale om skipscontainere, men containere kan også være kurver, esker, bokser og andre beholdere.
I IT-sammenheng inneholder containere programvareelementer. Elementene har forskjellige funksjoner og egenskaper. Hver container inneholder det som trengs av programkode, verktøy, bibliotek og konfigurasjonsfiler for å utføre en oppgave.
Et viktig prinsipp ved containere er at de med medbragte elementer kan kjøre direkte på operativsystemer som støtter containerteknologi, nærmere bestemt containervirtualisering.
Containerne deler operativsystemkjerne med hverandre og vertsmaskinen. Dette gjør dem både lettere og raskere enn tradisjonelle virtuelle maskiner (VM). Ressurser som tidligere ble dedikert til VM-er, kan derfor frigjøres slik at maskinvaren utnyttes bedre til faktiske oppgaver.
KAN KJØRES I MANGE MILJØER
– Noe av det sentrale i skysammenheng er imidlertid at containerne ikke er sårbare for OS og konfigurasjonen av ulike VM- og maskinvaremiljøer. Dette gjør det åpenbart enklere å kjøre kode i mange forskjellige miljøer, som jo er det nettskyen består av, sier Andreas Skoglund, systemarkitekt i Basefarm.
Teknologien er spesielt godt egnet for DevOps-miljøer.
Her er den klassiske situasjonen at selv små forskjeller i serveroppsett i ulike stadier av verdikjeden for applikasjonsutvikling kan skape problemer. For eksempel kan det hende at ny kode ikke fungerer likt i de ulike etappene på vei fra et utviklingsmiljø til et testmiljø og videre til produksjon. Selv om koden i seg selv er utmerket, vil den i slike tilfeller som regel bli returnert til forrige fase i utviklingsløpet enda årsaken til problemene ligger helt andre steder.
FUNGERER I CONTAINERVENNLIGE MILJØER
– Applikasjoner pakket i containere er ikke så sårbare for ulike oppsett. De vil fungere bedre gjennom hele utviklingsløpet, sier Skoglund.
Containere kan derimot ikke flyte rundt helt på egen hånd, det kreves en form for verktøy for både bygging og fasilitering.
Selskapet som kanskje mer enn noen andre er knyttet til containere, er Docker Inc. Selskapets programvare bærer samme navn – Docker – og forenkler byggingen av containere.
Docker er primært utviklet for Linux. Containere som er bygd med Docker-verktøy, kalles Docker-containere.
CONTAINERPLATTFORM
Videre trengs det et system som kan fasilitere containerne. I Docker-containersammenheng sørger Kubernetes for å automatisere kjøring av kode og skalering og håndtering av feilscenarioer – funksjoner som omtales som containerorkestrering. Google utviklet Kubernetes, som nå blir vedlikeholdt av Cloud Native Computing Foundation. Kubernetes omtales også som en containerplattform.
– Containerteknologi som reduserer avhengigheten av konfigurasjon i ulike miljøer, er helt klart supre redskaper for innovasjon. Kreftene kan brukes på innovasjonen, ikke på å motta feilmeldinger og stange hodet i veggen på grunn av konfigurasjonsfeil, sier han.
Docker er kompatibelt med de fleste store skymiljøer. Mange av dem fasiliterer flere containerplattformer. OpenShift, AWS EKS, AWS ECS, Azure AKS, Container Instances, Google Cloud Container Engine og Fargate utgjør brorparten av plattformene.
Basefarm tilrettelegger for flere av dem.
IKKE DEMP INNOVASJONSKRAFTEN
Skoglund advarer mot å kjøre for tungt ut før det er nødvendig.
– Det er ikke nødvendig å sette opp absolutt alt med en eneste gang. Når du skal drive innovasjon, ligger behovet for uanstrengt utprøving av nye muligheter nærmest i sakens definisjon. Dersom utviklere må operere i et altfor komplekst miljø fra første stund, kan det dempe innovasjonskraften, mener han. Det kan lønne seg å få litt hjelp i starten til å kartlegge behovene, slik at dere finner den plattformen som gir minst mulig friksjon for det aktuelle teamet og bruksområdet.