Tech Insights

Viden og indsigter fra IT Minds' it-talenter

Containerization, når det “bare” skal virke!

Skrevet af Mindster og Software Developer hos IT Minds on 05-07-18 10:44
Mindster og Software Developer hos IT Minds

Hvordan pakkes forskellige objekter, så de passer til forskellige platforme? Et svar på dette, fandt man allerede tilbage i 1960’erne, hvor man, for at ekspandere mulighederne for fragt, indførte containere som en standard, de fleste objekter passede ind i. 50 år efter udvikles et lignende koncept i IT-branchen, og vi har i IT Minds haft det som fokus ved vores Summer University.

 

“Jamen det virker jo på min maskine?”

Med jobbet som konsulent hos IT Minds har man ansvaret for meget mere end blot at udvikle software. Det kan være alt fra at konkretisere opgaver, specificere krav eller hvordan det produkt, der udvikles, skal sættes i produktion. Netop vejen til produktion kan til tider være en stor udfordring, da der findes mange variationer at udgive software på. Et forsøg på at løse denne problemstilling er “containerization”, som tidligere blev indført med stor succes i fragtens verden. I en utopisk verden ville alt software fungere i produktionsmiljø som i udviklingsmiljø, også første gang. Det er desværre sjældent realiteten, og vi kender vist alle sammen udtrykkene: “Jamen det virker jo på min maskine?” eller “Det er en fejl på din computer!” og så kan “slagsmålet” ellers gå igang.
Den overordnede problemstilling; samme produkt i mange miljøer, er allerede løst. Fx når jeg bestiller en cykel, en terning eller en harmonika på nettet fra enten USA, Kina eller Vietnam, skal det pakkes i en container, så den både kan fragtes på et skib, i et fly eller på en lastbil. På samme måde kan man nu pakke den software, jeg udvikler for en kunde i en “container” og eksekvere på enten egen maskine, testmiljø eller udviklingsmiljø. Jeg som forbruger er principielt ligeglad med, hvordan det pakkes, det skal helst “bare virke”, fuldstændig som den software vi udvikler. Det skal også “bare virke”.
 

Hvordan vi “bare” får det til at virke

Netop dette blev vi klogere på til IT Minds’ Summer University sammen med underviser Henrik Bærbak Christensen, Lektor ved Institut for Datalogi (AU) og guru i Cloud arkitektur. Kursets indhold var bla. Docker, DevOps, Cloud Computing og Microservices. Netop Docker er en ny teknologi, der gør det muligt at pakke software i containere, så det gøres mere transportabelt. Med dette udgangspunkt opsatte vi et miljø, der kunne udnytte, at man med Docker kan skrive “infrastructure-as-code”. Og hvis der er noget, der tiltaler “udviklerhjertet”, så er det at kunne skrive alt som kode! Dermed blev det muligt vha. få steps at få software til at eksekvere kode i skyen eller på ens egen computer, alt sammen i et identisk miljø.
 

Mere modstandsdygtig med microservices

Også microservices var på agendaen, og hvordan man ved at dele sine applikationer ud i mindre dele kan udnytte Docker. Ser man på en konventionel monolit applikation (figur 1) vil hver blå “server” bestå af én, i dette tænkte eksempel, webshop. Webshoppen er simpel, der er en tøjservice, elektronikservice og en service indeholdende en kurv, som man kan lægge varer i. På et tidspunkt opdager vi, at der er stort load på vores elektronikservice af webshoppen. For at skalere dette op, bliver vi nødt til at lave en ny replika af hele serveren, selvom der ikke er meget aktivitet på vores tøjservice. Hvorimod at det med microservices er muligt at opskalere services uafhængigt af hinanden, så webshoppens elektronikservice kan blive prioriteret og opskaleret, uden at det samme gøres med vores indkøbskurv- og tøjservice.
 
 
mcontainerzation
 
 
 
 
Figur 1: Konventionel vs. Microservice arkitektur (tegnet med inspiration fra Martin Fowler)
 
Foruden fleksibilitet gør det systemet mere modstandsdygtigt. Såfremt der er fejl i indkøbskurven, vil det være katastrofalt, hvis det får hele systemet til at bryde sammen og ikke gøre det muligt at vise produkter i webshoppen. På denne måde kan man i sit design af systemets arkitektur “designe for fejl” og hele tiden udvikle på services uafhængigt af hinanden.
 

Og derfor er det en god idé!

Store virksomheder som Uber, Netflix, Amazon og Paypal benytter sig alle af containerteknologi og microservice arkitektur, så de løbende hver dag kan lave opdateringer til deres forskellige services. Og heldigvis for det! For hvis Netflix ville bryde sammen, hvis blot en lille del af systemet ikke virkede, ville det være kritisk, at jeg i min “søndagssyge” ikke kan ligge på sofaen og se de nyeste serier, blot fordi eks. deres anmeldelsessystem ikke fungerer!
Teknologierne og teknikkerne fra dette års Summer University er derfor helt aktuelle og har givet os konsulenter et godt indblik i, hvad der rør sig i softwareverden netop nu. Hos IT Minds er dette blot én type arrangement af mange, der hjælper til, at vi som konsulenter hele tiden får stillet nysgerrigheden og får mulighed for at videreudvikle os selv, så kunderne kan få udviklet god software. 
 
 

Insights fra de bedste softwaretalenter

En del af IT Minds’ DNA er, at vi spotter og tiltrækker de bedste softwaretalenter, som er stærke i de nyeste teknologier og frameworks. Derfor vil vi gerne dele ud af vores viden og erfaringer vores konsulenter opsamler, når de afprøver og arbejder med nye teknologier og frameworks.

Seneste indlæg