Codekraker 24: Bas Magré

Codekraker 24: Bas Magré

Je werk met één aanpassing makkelijker, goedkoper én duurzamer maken? Dat kan met multiplatform Docker images. Cloud Engineer Bas vertelt in zijn codekraker hoe ook jij dit kan doen!

Zo bouw je multiplatform Docker images voor verschillende architecturen

Als Cloud Engineer automatiseer je processen. Maar mijn voornaamste verantwoordelijkheid is ervoor zorgen dat applicaties kunnen draaien in Docker containers dat draait binnen Kubernetes in de Cloud. Het is niet alleen mijn werk, dit is ook echt mijn passie. Ook in mijn vrije tijd ga ik volledig op in projecten rondom nieuwe technologieën. Zo was ik tien jaar geleden al bezig met Docker. En na 2021 deed ik een waardevolle ontdekking, namelijk hoe makkelijk je multiplatform Docker images kunt bouwen. Dit maakt niet alleen ons werk een stuk makkelijker, het is ook goedkoper en duurzamer.

De eerste opzet met multiplatform Docker images had ik gedaan met een Raspberry pi en mijn Pinebook Pro, later is het me gelukt om dit te draaien op een oude mobiele telefoon waar ik Linux op had gezet. Deze mobiele telefoon heb ik zelfs een single-node Kubernetes-cluster laten draaien. Eerst was de uitvoering (bouwen van multiplatform images) nog niet eenvoudig, inmiddels kost het maken van multiplatform images helemaal geen moeite meer. Door 1 of 1,5 regel toe te voegen is het multiplatform builden al gepiept.

Met multiplatform Docker images kun je voor een applicatie twee images tegelijk aanmaken in de Cloud voor verschillende architecturen. Bijvoorbeeld één voor Intel en één voor ARM. Wat deze ontwikkeling zo bijzonder maakt, is dat het steeds minder uitmaakt voor welke architecture je software schrijft. Je kan je Docker als het ware aanspreken met: ‘ik wil deze applicatie bouwen voor deze architectu(u)r(en)’. En dan maakt Docker het voor je. Voorheen kon het aanmaken van deze architecturen alleen door een simulator op te starten om daar je applicatie van af te halen en te compileren. Het proces is inmiddels makkelijker gemaakt dankzij een virtuele machine welke draait binnen Docker zelf waardoor je deze direct kan aanspreken.

Wil je nu zelf werken met multiplatform Docker images? Hieronder mijn twee tips:

  • Als je een applicatie naar Docker gaat overzetten, kijk in dat geval goed welke Docker image je als basis pakt. Stel je hebt een .NET applicatie, dan pak je de .NET image van Microsoft of Bitnami. Vervolgens moet je kijken of de deze al multiplatform is, anders kun je die ook niet uitbreiden. Zo kun je een NGINX pakken waarin al gecustomized is door iemand die er bepaalde plug-ins of extensies in heeft gezet die je nodig hebt. Dan moet je wel kijken of die én ARM én Intel en misschien nog wel andere architecturen heeft, als jij die wil ondersteunen. Anders kan je die niet uitbreiden: de bouwstenen van die architecture ontbreken en dan houdt het feest op.

  • Bouw de applicatie gelijk voor zowel Intel als ARM. Bijvoorbeeld wanneer je de commando met drie commando’s aanpast in je pipeline, doe het gelijk. Als er dan ooit een nieuwe medewerker begint met een Macbook dan kan die gelijk Docker images draaien. 

Ook opvallend is dat Amazon, Azure en Google Cloud allemaal al inzetten op ARM machines, want die kunnen zij veel goedkoper aanbieden/draaien dan Intel. ARM verbruikt namelijk veel minder stroom voor dezelfde rekenkracht. Dit laat voor mij zien dat je niet achter kunt blijven op deze ontwikkeling. Het maakt niet uit van welke aanbieder het is: het kan allemaal goedkoper draaien op een ARM architecture. Dat geldt zelfs als je bijvoorbeeld alleen al je front-end erop laat draaien. Bijna iedereen weet dat Intel architecture langzaam verdwijnt. Niet binnen nu en 5 jaar, maar ik verwacht dat het binnen 10 jaar veel verdwenen is. Een grote switch, want we zitten al op Intel sinds de jaren ’70. Wat mij betreft draait alles daarom ook zo snel mogelijk multiplatform!

Benieuwd naar andere Codekrakers? Je checkt ze hier.

Meer weten?

Neem dan contact op met Bas