In gesprek met … Kevin Versteeg, Lead Developer

Ik ben heel trots op ons team

Kevin Versteeg is Lead Developer bij Sidekick-IT en onder andere gespecialiseerd in PHP, MariaDB en Debian GNU/Linux. Met zijn bijna 16 jaar aan ervaring en continue honger naar nieuwe kennis, een drijvende kracht binnen het team. Het project waarin hij zich momenteel heeft vastgebeten? Van Infrastructure as a Service via Platform as a Service naar Infrastructure as Code. Hij vertelt er graag meer over.

Van IaaS naar PaaS met Docker en Kubernetes

“Bij Sidekick-IT werd gebruik gemaakt van Infrastructure as a Service (IaaS): virtuele servers -te vergelijken met fysieke servers- fungeerden als aparte servers die stuk voor stuk ingericht dienden te worden. Sommige klanten maakten gebruik van een dedicated server, waarop soms ook meerdere projecten van die specifieke klant konden draaien. Andere klanten maakten gebruik van shared hosting. In deze IaaS-opzet moesten onvermijdelijke upgrades per server opgepakt en doorgevoerd worden. Sidekick-IT introduceerde Q1 2022 een nieuwe manier van werken: Platform as a Service (PaaS). Bij deze nieuwe manier worden applicaties in Docker containers verdeeld. Elk project (applicatie) krijgt -afhankelijk van de requirements van het project- zijn eigen set containers, bijv. een container voor Apache en PHP en voor een MariaDB database. De containers (pods) worden vervolgens geïsoleerd uitgevoerd en beheerd met Kubernetes. Kubernetes is complexe materie om te doorgronden. Er gaat veel tijd in zitten, ook om een werkwijze op te zetten die voor het hele team bruikbaar is. Ik ben dan ook heel trots op ons team en onze projectsamenwerking met Site4U/Fundaments.

“Ons Kubernetes cluster heeft native ondersteuning voor IPv6. Iets wat bijvoorbeeld Amazon met haar Elastic Kubernetes Service (EKS) ook nog maar sinds januari 2022 ondersteunt.– Kevin Versteeg, Lead Developer Sidekick-IT

Zero downtime deployment

“Waar ik als developer heel blij van word, is onze CI/CD pipeline waarmee commits (of: codewijzigingen) automatisch gebuild en gepubliceerd worden. Die pipeline hadden we weliswaar al een aantal jaar op orde, maar kende ook wel wat beperkingen. Zo was deployment nog niet ‘zero-downtime’ en eventuele configuratie changes aan bijvoorbeeld een ElasticSearch, PHP of MariaDB werden niet automatisch meegenomen bij publicatie. Dergelijke wijzigingen dienden alsnog door een developer op de server uitgevoerd te worden. Nu met de overstap naar K8s zijn we in staat om ‘zero-downtime’ deployments uit te voeren en worden configuratie changes aan services automatisch mee gepubliceerd. Het upgraden of zelfs toevoegen van nieuwe services (bijv. Traefik of Redis) gaat vanzelf mee in dit proces.”

“Wij zijn in staat om ‘zero-downtime’ deployments uit te voeren en configuratie changes aan services worden automatisch mee gepubliceerd.” – Kevin Versteeg, Lead Developer Sidekick-IT

Infrastructure as Code (IaC)

Met de Kubernetes clusters in de lucht, is een grote stap gemaakt richting Infrastructure as Code. Kevin vervolgt: “De configuratie van services (ES, PHP, MariaDB etc) hebben we zowel lokaal (i.e. in development) als in productie ófwel binnen het Docker image, ófwel binnen losse configuratie bestanden. Alle benodigde configuratie voor het uitvoeren van een project staat uiteraard in GitLab bij het respectievelijke project. Wanneer wij tijdens ontwikkeling een wijziging in de configuratie van bijvoorbeeld ES aanbrengen en we deze committen, wordt die configuratie wijziging automatisch meegenomen: de CI/CD pipeline loopt en bouwt nieuwe Docker images waarin alle wijzigingen worden meegenomen. De images worden gepusht naar onze Docker Registry en vervolgens weer gepulld in het K8s cluster en daar opgestart. Voorheen zouden we zo’n configuratie-actie handmatig moeten herhalen op de betreffende server. Omdat dit nu geautomatiseerd is, hebben we daardoor ook de garantie dat de configuratie zoals die in Git staat, daadwerkelijk zo in productie staat. Eigenlijk hebben we nu een heel fraaie zogeheten ‘devops’ oplossing.”

Centrale logging

Flexibel zijn en denken in oplossingen was bij dit project essentieel. “Het verhuizen van traditionele virtual servers naar een K8s cluster heeft ook betekend dat we oplossingen hebben bedacht voor kleine problemen die we eerder niet hadden. Zo is het bij traditionele servers gebruikelijk dat system services hun logfiles lokaal wegschrijven. Dit is ook wel het geval in een K8s cluster, maar de logs zijn daar niet gegarandeerd persistent. Ze kunnen (en zullen) verloren gaan. Om dit te ondervangen hebben we voor een robuustere log oplossing gekozen waarbij alle log events centraal worden verzameld en opgeslagen. De keuze is gevallen op ElasticSearch met Kibana als front-end. Zo kunnen we alles wat er door onze projecten gelogd wordt op 1 plek volgen en makkelijk krachtig doorzoeken. “

Monitoring

Eenzelfde kwestie speelde voor monitoring. Kevin: “We hebben zowel op de traditionele servers als op de nieuwe nodes in het K8s cluster de beschikking over o.a. traditionele Zabbix (trend) monitoring. Maar dit geeft ons geen inzage in wat er zich op applicatieniveau in de diverse containers afspeelt. Die inzage is wel vereist om te kunnen volgen of applicaties bijvoorbeeld hoge load of andere problemen ondervinden. Om hieraan te voldoen, hebben we Prometheus ingezet, dat op haar beurt weer Grafana inzet om prachtige charts te genereren van onder andere CPU / Memory / Network / Disk IO.”

Vizier op de toekomst

Diverse klanten profiteren inmiddels van de nieuwe manier van werken. En hoewel het team van Sidekick-IT nog volop bezig is met het uitrollen van het project richting al haar klanten, richt Kevin zijn vizier alweer op de toekomst. “Kubernetes bestaat al lang en heeft de laatste jaren veel aan populariteit gewonnen. Dit zal ook nog lang zo doorgaan. Een andere belangrijke ontwikkeling waar de laatste jaren veel aan ontwikkeld wordt, is die van Serverless. Ook wel bekend als Functions in Azure of Lambda in AWS. Voor sommige projecten die aan de randvoorwaarden voldoen kan dit een hele efficiënte en zorgeloze oplossing zijn. Een developer bij Sidekick-IT is nooit uitgeleerd.”

wil jij ook werken aan uitdagende projecten?

Ook interessant...

In gesprek met... Tim de Hoog, Projectmanager en rechterhand bij Sidekick-IT
Een inspirerende dag bij "AI in de Stad"
Jean-Pierre is full stack developer én turnfanaat
Nieuwe importfunctie verbetert efficiëntie en communicatie GLEAN Study Manager RIVM
In gesprek met... Kyllian Warmerdam, Junior Web Developer
Update naar FinDock 2.0 verbetert donatieproces Black Jaguar Foundation

waar kunnen we jou mee helpen?