Max Oosterwijk

Container Orchestration niet aan touwtjes vast

BARENDRECHT Anno 2021 is het niet alleen mogelijk om websites of anders gezegd – applicaties te (laten) hosten op een gedeelde server of VPS. Als IT-Engineer moet ik ook volgens een wat meer up to date en efficiënte manier kunnen werken: met contatiners.  Niet die grote metalen dingen, maar een node met daarop een aantal packages, software en benodigde bestanden. Deze kan je naar eigen inzicht inrichten en voorzien van de juiste software, instellingen en maakt schaalbaarheid mogelijk. Je gebruikt ze om te hosten op bijvoorbeeld een Kubernetes of Docker Swarm cluster.

Hoe zit dat?

Je kan – zeker als je veel websites/webapplicaties host niet altijd voor een traditionele hosting kiezen. Denk aan een shared hosting, wat met goede load balancing best mogelijk is of een dedicated VPS. Laatst genoemde kun je monolitic inrichten: met 1 specifieke versie van Linux, Apache, MySQL/Postgres en PHP, eventueel aangevuld met NodeJS of Ruby versies. Nadeel is dat deze vrij moeilijk te updaten zijn, vanwege de grote hoeveelheid dependencies (afhankelijkheden in software). Vaak komt het ook voor dat maar één bepaalde versie van een package wordt aangeboden in de standaard repository. Dan moet je weer custom repositories instellen of zelf aan de slag met het builden van packages. Dat kan zorgen voor de nodige uitdagingen.

Applicaties hosten anno 2021

Tegenwoordig is het steeds gebruikelijker om volgens continious improvement en continious develivery verbeteringen aan applicaties te doen. Hierbij richt je een eigen Continious Delivery pipeline in, waarbij je automatische tests kan doen en indien succesvol kan deployen naar Kubernetes. Deze open-source technologie is ontwikkeld door Google en is in staat om high available en zeer schaalbare applicaties te hosten. Vanwege de hoge schaalbaarheid kan één cluster veel verkeer aan, mits goed geconfigureerd. Dit komt de bereikbaarheid van applicaties ten goede, ook kunnen nieuwe releases geruisloos worden aangeboden.

Applicaties op een Kubernetes-cluster zijn vaak Docker images, die alle dependencies en code bevat om de applicatie te laten werken. Het beheer gaat vaak via een repository, dat het beheer van afhankelijkheden overzichtelijk houdt. Grote bedrijven en diensten als Netflix gebruiken naast Kubernetes ook een deployment-straat, zodat tests automatisch uitgevoerd kunnen worden. Zo kunnen fouten in de applicatie nog voor uitrol naar productie worden onderschept. Nog een groot voordeel van het hosten van applicaties in Docker-images ten opzichte van virtuele machines is dat deze een stuk minder resources versnoepen. Enige nadeel is dat het bedienen van een cluster enige kennis vereist. Het opslaan van bestanden gebeurt vaak via shares, oftewel gedeelde mappen op een server of externe dienst en gedeelde databases. Hierdoor wordt opschalen mogelijk, in de Docker-images zelf host je vaak geen uploads of andere bestanden.

Conclusie

Docker images spelen vandaag der dag een grote rol in applicatieontwikkeling en hosting. Het biedt vele voordelen, zeker in combinatie met een platform als Kubernetes. De grootste voordelen is de verbeterde workflow voor developers en de ‘draagbaarheid’ van applicaties. Het beheersen van vaardigheden op het gebied van Kubernetes en andere technologieen is als zowel DevOps als Systeembeheerder belangrijker dan ooit.

Deel deze blogpost met de wereld!