Hva er containerisering?
Containerisering betyr å pakke en applikasjon sammen med alt den trenger for å kjøre (kode, biblioteker og innstillinger) i en selvstendig enhet som oppfører seg likt overalt: på utviklerens maskin, i testmiljøet og i skyen. Det løser problemet med kode som fungerer ett sted, men ikke et annet, og gjør leveranser raskere og migrering enklere.
Containerisering høres ut som noe for spesialister, men grunnideen kan forstås på et minutt, og den forklarer hvorfor moderne programvare leveres så mye raskere i dag. Nedenfor ser vi på hva containerisering er, hvilken sammenligning som gjør det lett å forstå, og hva det gir virksomheten din.
Fraktcontaineren som gjorde verdenshandelen enkel
Før den standardiserte fraktcontaineren ble gods lastet stykkevis: Hver last var unik, ble håndtert på sin egen måte og måtte lastes om for hånd mellom lastebil, tog og skip. Det var tregt og upålitelig. Containeren løste det med en standardisert kasse. Innholdet kunne være hva som helst, men utsiden var alltid den samme, så de samme kranene og skipene kunne flytte hva som helst uten å bry seg om innholdet.
Containerisering av programvare gjør nøyaktig det samme for applikasjoner. Du pakker appen din sammen med alt den trenger for å kjøre (programkoden, alle bibliotekene, riktige versjoner og innstillinger) i en standardisert enhet. Utsiden ser lik ut uansett hva som ligger inni, så hvilken som helst plattform kan kjøre den uten å kjenne detaljene.
Problemet det løser: «Det fungerte på min maskin»
Alle utviklere kjenner igjen den setningen. Koden fungerer feilfritt på egen maskin, men krasjer på testserveren eller i produksjon. Nesten alltid skyldes det at miljøene er forskjellige: en annen versjon av et bibliotek, en innstilling som mangler, en avhengighet som finnes her, men ikke der.
Containeren gjør stort sett slutt på det problemet. Fordi appen pakkes sammen med hele miljøet sitt, tar den med seg omgivelsene uansett hvor den havner. Det som kjører på utviklerens maskin, er bit for bit det samme som kjører i skyen. Forskjellene mellom miljøene, som tidligere kostet timer med krevende feilsøking, forsvinner.
Docker som de facto-verktøy
Prinsippet om å pakke apper i containere er eldre enn de fleste tror, men det var verktøyet Docker som gjorde det tilgjengelig og populært. I dag er Docker i praksis standarden, og det har gått så langt at mange sier «Docker» når de mener containere generelt.
Et konkret scenario
La oss si at et team bygger en nettjeneste. Uten containere må hver utvikler installere riktige versjoner av database, kjøremiljø og biblioteker for hånd på maskinen sin, og testserveren må settes opp på samme måte. Det er pirkete arbeid, og oppsettene begynner lett å avvike fra hverandre. Med containere beskrives miljøet én gang, i en fil. Hver enkelt starter den samme containeren og får et identisk miljø på sekunder. Når tjenesten skal ut i produksjon, er det den samme containeren som rulles ut. Det som før tok en dag å sette opp, tar nå minutter, og en hel kategori av «hos meg fungerer det»-feil er borte.
Forretningsnytten
Bak teknologien ligger konkrete fordeler for virksomheten:
- Raskere leveranser. Nye miljøer og nye versjoner kan settes opp og rulles ut på minutter i stedet for dager, med mindre risiko for at noe går i stykker underveis.
- Enklere å flytte mellom skyer. Fordi containeren kjører likt overalt, blir dere mindre bundet til én enkelt skyleverandør. Vil dere bytte eller spre driften på flere, er terskelen lavere, og dere står sterkere når dere forhandler.
- Færre overraskelser i driften. Når det som er testet, er nøyaktig det som kjører i produksjon, blir produksjonssettingene mindre dramatiske.
En beslektet gevinst er sporbarhet. Fordi en container bygges fra en beskrivelse i en fil, kan man se nøyaktig hva en bestemt versjon inneholder og gjenskape den identisk hvis noe må feilsøkes eller gjennomgås i etterkant. Det gjør det også enklere å bygge en automatisert kjede som tester og ruller ut nye versjoner fordi hvert steg tar utgangspunkt i den samme veldefinerte enheten. For en virksomhet med krav til sikkerhet og IT-revisjon er den forutsigbarheten verdt mye i seg selv.
Slik forholder du deg til det
Du trenger ikke å forstå teknologien i detalj, men det er verdt å vite at containerisering i dag er standard for hvordan seriøs programvare bygges og driftes. Spør dere en leverandør hvordan tjenesten skal leveres og driftes, er containere et godt tegn på et moderne og flyttbart opplegg.
Vil dere bygge en løsning som er rask å levere og ikke låser dere inne hos én enkelt leverandør, tar vi i Weapp gjerne høyde for det i systemutviklingen fra start.
Ofte stilte spørsmål
Hva er en container i denne sammenhengen?
En container er en selvstendig, kjørbar enhet som inneholder en applikasjon sammen med alt den trenger for å fungere: biblioteker, avhengigheter og innstillinger. Den kjører isolert fra omgivelsene og oppfører seg likt uansett hvor den startes. Tenk på en fraktcontainer: standardisert på utsiden, og innholdet spiller ingen rolle for den som flytter den.
Hva løser containerisering egentlig?
Først og fremst klassikeren «det fungerte på min maskin». Når en app pakkes med hele miljøet sitt, forsvinner forskjellene mellom utviklerens maskin, testserveren og produksjon. Koden tar med seg omgivelsene sine, så den oppfører seg likt overalt. Det fjerner en hel kategori lumske feil som skyldes at miljøene er forskjellige.
Er containerisering det samme som Docker?
Ikke helt. Containerisering er prinsippet om å pakke apper i containere; Docker er verktøyet som gjorde teknologien populær, og som i praksis har blitt standarden. Man sier ofte Docker når man mener containere, omtrent som man sier «google» i stedet for «søke». Det finnes alternativer, men Docker er det de fleste møter først.
Hva er forskjellen på en container og en virtuell maskin?
En virtuell maskin etterligner en hel datamaskin med eget operativsystem, og det blir tungt. En container deler operativsystemkjernen med vertsmaskinen og pakker bare appen og avhengighetene dens, noe som gjør den mye lettere og raskere å starte. Grovt sagt: Virtuelle maskiner virtualiserer maskinvaren, containere pakker appen.
Hvilken forretningsnytte gir containerisering?
Raskere og tryggere leveranser, og mindre innlåsing. Når appen har med seg miljøet sitt, går det raskere å sette opp nye miljøer og å rulle ut nye versjoner med mindre risiko. I tillegg blir det enklere å flytte mellom skyleverandører fordi containeren kjører likt overalt, og det gjør at dere står sterkere når dere forhandler.