Hvad er containerisering?

Af Weapp · Opdateret

Containerisering er at pakke en applikation sammen med alt den skal bruge for at køre (kode, biblioteker og indstillinger) i en selvstændig enhed der opfører sig ens overalt: på udviklerens computer, i testmiljøet og i skyen. Det løser problemet med kode der virker ét sted, men ikke et andet, og gør leverancer hurtigere og migreringer enklere.

Containerisering lyder som noget for specialister, men grundidéen kan forstås på et minut, og den forklarer hvorfor moderne software i dag leveres så meget hurtigere. Her er hvad containerisering er, sammenligningen der gør det forståeligt, og værdien for din forretning.

Skibscontaineren der gjorde verdenshandlen enkel

Før den standardiserede skibscontainer blev gods lastet stykvis: Hver last var unik, blev håndteret på sin egen måde og krævede manuel omlastning mellem lastbil, tog og skib. Det var langsomt og upålideligt. Containeren løste det med en standardiseret kasse. Indholdet kunne være hvad som helst, men ydersiden var altid den samme så de samme kraner og skibe kunne flytte hvad som helst uden at tage hensyn til indholdet.

Containerisering af software gør præcis det samme for applikationer. Du pakker din app sammen med alt den skal bruge for at køre (programkoden, alle biblioteker, de rigtige versioner og indstillinger) i en standardiseret enhed. Ydersiden ser ens ud uanset hvad der er indeni så en hvilken som helst platform kan køre den uden at kende detaljerne.

Problemet det løser: “det virkede på min maskine”

Alle udviklere kender sætningen. Koden virker fejlfrit på ens egen computer, men crasher på testserveren eller i produktion. Næsten altid skyldes det at miljøerne er forskellige: en anden version af et bibliotek, en indstilling der mangler, en afhængighed der findes her, men ikke der.

Containeren gør det problem stort set forældet. Fordi appen pakkes sammen med hele sit miljø, tager den sine omgivelser med sig overalt. Det der kører på udviklerens computer, er bit for bit det samme som det der kører i skyen. Forskellene mellem miljøer, som før kostede timevis af besværlig fejlsøgning, forsvinder.

Docker som de facto-værktøj

Princippet om at pakke apps i containere er ældre end de fleste tror, men det var værktøjet Docker der gjorde det tilgængeligt og populært, og i dag er Docker i praksis standarden, så meget at mange siger “Docker” når de mener containere i almindelighed.

Et konkret scenarie

Lad os sige at et team bygger en webtjeneste. Uden containere skal hver udvikler manuelt installere de rigtige versioner af database, kørselsmiljø og biblioteker på sin computer, og testserveren skal sættes op på samme måde: et pillearbejde hvor opsætningerne let glider fra hinanden. Med containere beskrives miljøet én gang, i én fil. Alle starter den samme container og får et identisk miljø på få sekunder. Når tjenesten skal i produktion, er det den samme container der rulles ud. Det der før tog en dag at sætte op, tager nu minutter, og en hel kategori af “hos mig virker det”-fejl er væk.

Forretningsværdien

Bag teknikken ligger der konkrete fordele for forretningen:

  • Hurtigere leverancer. Nye miljøer og nye versioner kan sættes op og udgives på minutter i stedet for dage, med mindre risiko for at noget går i stykker undervejs.
  • Enklere flytning mellem cloududbydere. Fordi containeren kører ens overalt, bliver I mindre bundet til én enkelt cloududbyder. Vil I skifte eller sprede driften, er tærsklen lavere, og det styrker jeres forhandlingsposition.
  • Færre overraskelser i driften. Når det der er testet, er præcis det der kører i produktion, bliver idriftsættelser mindre dramatiske.

En beslægtet gevinst er sporbarhed. Fordi en container bygges ud fra en beskrivelse i en fil, kan man se præcis hvad der indgår i en bestemt version og genskabe den identisk hvis noget skal fejlsøges eller gennemgås bagefter. Det gør det også enklere at bygge en automatiseret kæde der tester og udgiver nye versioner fordi hvert trin tager udgangspunkt i den samme veldefinerede enhed. For en virksomhed med krav til sikkerhed og revision er den forudsigelighed meget værd i sig selv.

Sådan forholder du dig til det

Du behøver ikke at forstå teknikken i detaljer, men det er værd at vide at containerisering i dag er standard for hvordan seriøs software bygges og drives. Spørger I en leverandør hvordan de leverer og drifter jeres tjeneste, er containere et godt tegn på et moderne setup der kan flyttes.

Vil I bygge en løsning der er hurtig at levere og ikke låser jer fast hos én enkelt leverandør, tager vi hos Weapp det gerne med i systemarbejdet fra starten.

Ofte stillede spørgsmål

Hvad er en container i denne sammenhæng?

En container er en selvstændig, kørbar enhed der indeholder en applikation plus alt den skal bruge for at fungere: biblioteker, afhængigheder og indstillinger. Den kører isoleret fra omgivelserne og opfører sig ens uanset hvor den startes. Tænk på en skibscontainer: standardiseret udvendigt, og indholdet er ligegyldigt for den der flytter den.

Hvad løser containerisering egentlig?

Først og fremmest klassikeren "det virkede på min maskine". Når en app pakkes med hele sit miljø, forsvinder forskellene mellem udviklerens computer, testserveren og produktion. Koden tager sine omgivelser med sig så den opfører sig ens overalt. Det fjerner en hel klasse af fejl der er svære at opspore, og som skyldes at miljøerne er forskellige.

Er containerisering det samme som Docker?

Ikke helt. Containerisering er princippet om at pakke apps i containere; Docker er det værktøj der gjorde teknikken populær og i praksis er blevet standarden. Man siger ofte Docker når man mener containere, lidt ligesom man googler i stedet for at søge. Der findes alternativer, men Docker er det de fleste møder først.

Hvad er forskellen på en container og en virtuel maskine?

En virtuel maskine efterligner en hel computer med sit eget operativsystem, hvilket bliver tungt. En container deler værtens operativsystemkerne og pakker kun appen og dens afhængigheder, hvilket gør den meget lettere og hurtigere at starte. Groft sagt: Virtuelle maskiner virtualiserer hardwaren, containere pakker appen.

Hvilken forretningsværdi giver containerisering?

Hurtigere og sikrere leverancer og mindre fastlåsning. Når appen har sit miljø med sig, går det hurtigere at sætte nye miljøer op og at udgive nye versioner med mindre risiko. Samtidig bliver det enklere at flytte mellem cloududbydere fordi containeren kører ens overalt, og det styrker jeres forhandlingsposition.