What else will we have to do? We will need standards. Every time I say standards, the programmers rebel.
Grace Murray Hopper

In een artikel uit 1976 schrijft Grace Murray Hopper deze verzuchting. Ze was er duidelijk ‘klaar’ mee. En toch doet ze er alles aan om haar publiek te overtuigen van de noodzaak van standaardisatie:
- Het maakt uitwisseling van informatie mogelijk.
- Het maakt het makkelijker, dankzij de eenvormigheid om de informatie te interpreteren en te vertalen naar andere omgevingen.
- Het maakt het makkelijker om componenten te hergebruiken in verschillende toepassingen.
- Het maakt testen makkelijker.
- Het maakt modulair werken mogelijk.
- Het maakt je klaar voor de voorziene en onvoorziene toekomst, en dat laatste komt sneller dan je denkt.
De waarde van standaardisatie

Het is, denk ik goed om ideeën die ontwikkeld werden in het begin van het informatietijdperk te bestuderen. Vooral als deze geuit zijn door mensen zoals deze Amerikaanse informatica, natuurkundige en marineofficier die zoveel betekend heeft voor de IT-sector.
Haar pleidooi voor standaardisatie, is net zoals de reactie op die standaarden, niet beperkt tot programmeurs die een compiler moeten ontwikkelen en gebruiken. Het is net zo goed belangrijk voor bijvoorbeeld netwerk- en systeembeheerders. Dus ook toepasbaar op verschillende omgevingen. Het is daarbij goed om te zien hoe zij al in haar artikel erop wijst dat bij het vaststellen van die standaarden diverse disciplines nodig zijn.
Het eerste wat er in mij opkomt bij het lezen van het artikel: Er is in de loop van de tijd niets veranderd in hoe mensen omgaan met standaarden en met het omgaan met nieuwe ontwikkelingen, eveneens is er een gebrek aan denken op lange termijn. Maar ook: hoe toepasbaar is wat zij zegt op een populaire ontwikkeling in onze tijd: containers.
De waarde van containers
Een container is de isolatie van een applicatie met al zijn benodigdheden. De container heeft daarbij zijn eigen bestandssysteem, network stack, gebruikersdatabase, etc. Docker is een veelgebruikte containerisatietoolkit die ontwikkelaars een gebruiksvriendelijk platform biedt om applicaties op een veilige en efficiënte manier te kunnen ontwikkelen, implementeren en beheren. En dit zonder zich zorgen te hoeven maken over de onderliggende infrastructuur.
Het hosten van de dienstverlening gebeurt meestal met behulp van een orchestrator zoals Kubernetes, die ervoor zorgt dat gebruikers toegang krijgen tot de omgeving, en taken uitvoert als het uitrollen, updaten en schalen van de dienst.
De standaardisatie van containers

Dit kan alleen maar goed aflopen wanneer er sprake is van standaardisatie van alle componenten. Wat betreft de containers zelf hoeven we ons niet zoveel zorgen te maken: de Open Container Initiative draagt daar zorg voor. Maar hoe zit het met de overige componenten? Dit artikel probeert een aanzet te geven tot het nadenken hierover. Door vooral vragen te stellen, niet door de antwoorden te geven. Die zijn immers verschillend voor elke omgeving.
Allereerst is daar een set van utilities en bibliotheken die verzorgd worden door een minimale Linux-distributie, maar dan zonder de Linux-kernel, in de vorm van een image. De vragen die gesteld moet worden zijn:
- Hoe gestandaardiseerd is deze image?
- Gaan we zelf een image maken, en zo ja, hoe standaardiseren we die, inclusief het bouwproces?
- Hoe zeker kan ik er van zijn dat de volgende uitgave van de image op dezelfde manier gebouwd is?
- En gebruiken we altijd dezelfde image, waarom wel/niet?
- Hoe configureren we de onderdelen in de image, en is dit consistent voor alle images?
- Is er überhaupt genoeg Linux-kennis in huis om dit allemaal te doen?
Bedenk bij bovenstaande lijst ook: Er is een stevige relatie tussen kennis, standaardisatie en security.
Standaardisatie bevordert de toekomst
Dan de dienst die je wilt leveren. Allereerst, het uitgangspunt moet zijn: 1 taak per container. Dus niet: Apache, MariaDB en PHP in 1 container, maar 3 containers. Zorg ervoor dat “Program Data” zoals de configuratie, en de “User Data” zoals bijvoorbeeld de gepresenteerde data, niet in de container staat. Opnieuw vragen:
- Hoe standaardiseren we de configuratie. Kan een template-systeem of orchestration tool daarbij helpen?
- Is de communicatie tussen componenten en services gestandaardiseerd? Text-based streams?
Als je de vragen die gesteld worden goed beantwoord, dan zou je tot dezelfde conclusie moeten komen als Grace Murray Hopper als het gaat om alle voordelen wat betreft standaardisatie. Tot slot: Aan het eind van het artikel zegt ze:
It will be more exciting; it will be more fun. Not one of you will be able to stop learning, you will have to continue to learn, every minute, because the changes will come faster and because we must look to that future, today before we make today’s decisions. We can’t make them based on the past. … It’s going to take hard work, it’s going to take a lot of learning, it’s going take standards … So, we better get it now.
Grace Murray Hopper
