Platformmigratie
Kubernetes, een buzzword?
Na jarenlang ons platform onder de loep te hebben genomen, Google's Site Reliability Engineering-praktijken te hebben bestudeerd en met hun tools te hebben geëxperimenteerd, kwamen we tot de conclusie dat Kubernetes, gebaseerd op Google's Borg-distributiearchitectuur, het beste paste bij de volgende iteratie van ons Lighthouse-platform.
Wat is Kubernetes?
Kubernetes is opensource-technologie gebaseerd op Google's interne Borg-architectuur, die jarenlang intern werd gebruikt en later publiekelijk werd vrijgegeven. Het is baanbrekende technologie die de kracht van containerorkestratie benut.
Containerorkestratie is een beladen term, maar hoewel het complex is, is het niet ingewikkeld om te begrijpen.
Laten we beginnen bij de bouwstenen:
Een container bevat alleen de software en dependencies die je nodig hebt om je applicatie te laten draaien. Dit betekent dat je software in zijn eigen omgeving draait, zonder dat je externe dependencies hoeft te downloaden of te importeren. Dit lijkt op een virtuele machine, met dit verschil dat een container alleen bevat wat nodig is en daardoor licht en eenvoudig is.
Kort gezegd: als het op mijn computer werkt, werkt het ook op jouw computer, omdat de container onafhankelijk alles biedt wat nodig is.
Waar draaien we onze containers?
Containers hebben doorgaans hun eigen omgeving nodig om in te draaien. Als je op één machine ontwikkelt, draait de applicatie meestal in iets als Docker. Wil je echter meerdere images verdelen over meerdere nodes of een cluster, dan is Kubernetes de voorkeursoptie.
Kubernetes is de meest flexibele optie, omdat alle configuratie, niet alleen de containers, maar ook de omgeving, de applicatieconfiguraties en de netwerkconfiguraties, als code kan worden vastgelegd.
Waarom is dit een goede zaak?
Door onze configuraties als code op te slaan, hebben we één single source of truth en bewaren we onze configuraties in Git. Hierdoor kunnen we wijzigingen veel eenvoudiger, veiliger en sneller doorvoeren.
Dit levert ons veel voordelen op:
Schaalbaarheid: we kunnen eenvoudig opschalen en onze belasting verdelen over meerdere nodes, wat de prestaties verbetert
Beschikbaarheid: dit hangt ook samen met betrouwbaarheid, want als een pod of container niet functioneert of de node uitvalt, zijn er nog andere containers die de belasting overnemen
Eenvoud: het past perfect bij ons extreme programming en continuous delivery werkmodel, dat zich richt op kleine iteratieve wijzigingen
Controle: doordat alles in code staat, is het eenvoudig te bepalen hoe en waar het draait
Observability: we krijgen meer inzicht in hoe en waar het draait, en omdat inzicht bieden ons vak is, geven we de informatie die we verzamelen door aan ons product, wat de informatie die wij leveren verrijkt
Technologie: doordat we betere toegang hebben en alles vereenvoudigd is, wordt het voor ons makkelijker om nieuwe disruptieve technologieën te integreren, zoals machine learning, big data, AI en wat er verder nog aankomt
Dit overzicht is niet volledig, maar laat op een kleine schaal zien welke kracht deze technologie ons biedt, terwijl we samen toegroeien naar een betrouwbaardere toekomst.