Blog Tune into the Cloud: Gregor Petri over Sittin’ On The Dock of the Bay

Gregor Petri

Voor deze jaarwisselingseditie ben ik – denkend aan Otis Redding - eens rustig in het ochtendzonnetje op een kade gaan zitten om te kijken wat we aan in- en uitgaande zaken in cloud land mogen verwachten. Maar eigenlijk zag ik maar een ding: containers!

Geen trend momenteel zo hot als containers en dan met name het populaire container management systeem Docker. Hoewel nauwelijks droog achter de oren, worden hier al haast mythische capaciteiten aan toegedicht. Docker zou virtualisatie overbodig maken, PaaS vervangen en dankzij ongeëvenaarde portabiliteit een einde aan platform en vendor lock-in maken. Er is dan ook geen start-up of cloud aanbieder meer te vinden die Docker niet prominent in zijn strategie heeft verwerkt.

Maar is Docker werkelijk de kuur die alle ziektes heelt? Laten we daarvoor eens kijken welke problemen het zelf zegt aan te pakken. Docker praat over ‘Build, Ship and Run, Any App, Anywhere’ en gebruikt daarbij graag de vergelijking met fysieke scheepscontainers, die dankzij gestandaardiseerde maatvoering zonder problemen of aanpassingen op vrachtwagens en schepen in ieder continent passen. Het logo van Docker is dan ook een walvis die als ware het een oceaanstomer grote aantallen containers vervoert.

Met die standaardisatie adresseert Docker een van de meest voorkomende discussies tussen ontwikkelaars en IT operations. Namelijk: ‘Maar op mijn ontwikkelmachine draait het prima!’. Voor dergelijke discussies was nog wel tijd, toen organisaties eens per kwartaal nieuwe software in productie namen. Maar bij methoden als agile, scrum en continuous deployment moet de logistiek echt een stuk efficiënter.

Het onderliggende probleem van die incompatibiliteit is in Linux (en Wikipedia) termen ‘Dependency Hell’. Windows ontwikkelaars kennen het nog als ‘DLL Hell’. Als ontwikkelaar wil je zo min mogelijk code schrijven en dus zo veel mogelijk gebruik maken van standaard libraries (DLL: Dynamic Link Library). Maar zo standaard zijn die libraries helemaal niet. Bovendien bestaan er vaak diverse versies, waardoor er problemen ontstaan als je code van meerdere ontwikkelaars of bedrijven samenbrengt, of verplaatst van een eigen ontwikkel- en testomgeving naar een gedeelde productieomgeving.

In de Windows omgeving is dit indertijd ‘opgelost’ door iedere applicatie op een eigen server te zetten (1 app per server). Hierdoor daalde de utilisatie (en dus de efficiency) maar dankzij virtualisatie konden we daar weer een mouw aan passen. Maar daarmee draaien we dan wel voor iedere app een complete kopie van het operating systeem en vele kopieën van al die bibliotheken.

Toen bedrijven nog een klein aantal grote statische applicaties hadden, was dit nog wel te overzien. Maar als we duizenden microservices hebben die dagelijks moeten schalen van een paar honderd naar honderdduizenden of zelfs miljoenen gebruikers, dan wordt deze methode echt te inefficiënt (het is niet toevallig dat Google een van de eerste en een van de grootste container gebruikers is).

Docker (in combinatie met de door Docker gemanagede container technologie van Linux) is hiervoor een veel elegantere en efficiëntere oplossing. Dankzij een ingenieus file-systeem, bestaat alles wat gedeeld wordt nog maar één keer (en gebruikt ook maar één keer memory, één keer CPU, en hoeft dan ook maar één keer gepatched te worden, etc.).

Een voordeel is ook dat dankzij deze aanpak, de ontwikkelaars zich kunnen concentreren op de applicatie in hun container, terwijl het operationsteam zorgt dat er op ieder moment voldoende drijfvermogen (schepen) beschikbaar zijn. Docker wordt hierbij gebruikt om de diverse applicatiecontainers handig en efficiënt over de beschikbare schepen te verdelen. Die schepen zijn dan overigens vaak nog virtual machines, voornamelijk vanwege de beveiliging. Losse containers gewoon op de openbare zee (de publieke cloud) te laten drijven is namelijk nog iets te piraterijgevoelig.

Het super relaxte ‘Dock of the Bay’ is een van de laatste nummer van soullegende Otis Redding, opgenomen vlak voordat hij samen met zijn backing band bij een tragisch vliegtuigongeluk omkwam. Redding was een zanger die - analoog aan Docker - oorspronkelijk met name populair was in de eigen (soul/linux) scene. Maar naarmate hij meer bekend werd, groeide ook zijn populariteit in de meer conservatieve en traditionele (pop/IT) markt.

 
Dossiers