☸️ Container-orkestratie (Kubernetes)
Kubernetes is een open source container-orkestratie platform, waarmee je grote groepen containers makkelijker kunt beheren.
Wat is cloud native? Wat betekent het voor development van een webapplicatie? En welke voordelen heeft het om een webapp cloud native te bouwen? Je ontdekt het in deze blog!
Cloud native is een manier van ontwikkelen van (web)applicaties die specifiek zijn bedoeld om op de cloud te draaien. Deze applicaties zijn schaalbaar, maken gebruik van cloud services, en kennen een snellere time-to-market.
Cloud native is een manier van ontwikkelen van moderne (web)applicaties en opbouwen van infrastructuur, specifiek bedoeld om in de cloud te draaien. Niet alleen dat: een cloud native (web)app maakt ook optimaal gebruik van de opbouw van de cloud en services hiervan. Vaak is een cloud native applicatie opgesplitst in kleinere, functionele elementen: microservices. Microservices zijn op een standaard manier met elkaar verbonden, bijvoorbeeld door API’s, data streaming of message bussen. Een optimaal gebouwde cloud native applicatie gaat verder dan alleen microservices. Een dergelijke app maakt gebruik van de mogelijkheden van automatisering en (automatisch) schalen die bij gebruik van de cloud komen kijken. De cloud is daarbij zo opgezet dat cloud services de complexiteit van serverbeheer overnemen.
CNCF, de Cloud Native Computing Foundation, definieert cloud native als: “Cloud native technologieën stellen organisaties in staat om schaalbare applicaties te bouwen en te draaien in moderne, dynamische omgevingen zoals publieke, private en hybride cloud. Containers, service meshes, microservices, onveranderlijke infrastructuur en declaratieve API’s illustreren deze aanpak.”
Om cloud native te ontwikkelen, moet een applicatie gesplitst worden in microservices én de samenwerking tussen deze microservices moet worden gedefinieerd. Daar komen nieuwe uitdagingen bij kijken. Microservices zijn stateless; ze zijn niet-datahoudend. Data (zoals afbeeldingen en bestanden) moet in centrale databases of object storage staan opgeslagen.
Voor een cloud native applicatie ontwikkel je functionaliteiten zoveel mogelijk los in microservices. Deze moet vervolgens zowel los worden getest als getest binnen het geheel. Bij een grote hoeveelheid aan microservices zul je dit testen en deployen vergaand moeten automatiseren om tijdrovend werk te voorkomen.
Daarnaast heb je een cloud provider nodig die je voorziet in technologie van cloud computing en cloud services. De interactie met cloud services is behoorlijk technisch en zeer specifiek. Hiervoor heb je een ontwikkelaar met operations kennis nodig: een DevOps engineer. Draait je cloud native applicatie op Kubernetes, dan zul je ook voor dit platform specifieke kennis voor nodig hebben.
De voordelen van cloud native development lijken heel erg op de voordelen van microservices. Als je webapp op een goede manier is opgedeeld in kleinere functionelere delen, ontwikkel je al deels op een cloud native manier.
De voordelen van microservices zijn onder andere: de mogelijkheid om in kleine, autonome teams te werken; flexibiliteit in technologiekeuze; en verhoogde productiviteit van ontwikkelteams.
Daarnaast zijn er nog deze voordelen van cloud native development:
Cloud native development, het werken met microservices, (test) automatisering, en een (automatische) CI/CD pipeline helpen je bij het versnellen van het release proces. Hierdoor kun je sneller (kleinere) releases uit rollen en heb je een kortere time-to-market van features waarmee je inspeelt op feedback van je klanten of (nieuwe) eisen uit de markt.
Als een cloud native applicatie goed is ontwikkeld, draait deze als een zonnetje in de cloud. De applicatie is dan schaalbaar, wendbaar en zeer sterk geautomatiseerd. Vernieuwde of nieuwe code is sneller te testen en in productie te deployen.
De cloud naar keuze voor je webapp is ingericht volgens het ‘as a service’ principe. Daardoor heb je meer keuze in wat je zelf moet beheren en wat je aan een gespecialiseerde partner overlaat. Zeker met platform-as-a-service hoef jij niet meer naar cloud hosting om te kijken en kun je je compleet op ontwikkelen focussen.
Cloud native architectuur bestaat uit elementen die nodig zijn om een applicatie in de cloud te laten draaien.
Kubernetes is een open source container-orkestratie platform, waarmee je grote groepen containers makkelijker kunt beheren.
Onveranderlijke infrastructuur is een eis voor cloud native applicaties. Als een server faalt, moet een andere server met dezelfde infrastructuur het kunnen overnemen. Voor veel cloud native applicaties wordt de configuratie van de cloud omgeving gedefinieerd in code: infrastructure as code. Zo weet de cloud welk type infrastructuur er opgezet moet worden.
Een service mesh is een abstractielaag voor je applicatie. Deze specifieke laag verzorgt de communicatie tussen microservices, in plaats van dat je handmatig moet coderen hoe elke microservice moet communiceren. Een service mesh geeft je daarbij inzicht en controle over de communicatie.
Met een declaratieve API geef je de gewenste state van het endpoint, in plaats van directe opdrachten.
Vanwege de splitsing in microservices wordt gewijzigde of nieuwe code van de applicatie vaak automatisch uitgerold, in een CI/CD pipeline (Continuous Integration en Continuous Delivery). Het doel van deze methode: code sneller en foutlozer deployen in een stabiele en hoogwaardige productieomgeving.
Omdat een cloud native app zo anders in elkaar steekt dan een traditionele app, verschilt ook cloud native security van traditionele security. Voor optimale beveiliging van applicaties die in Kubernetes draaien, bestaat het 4C model voor cloud native security: code, container, cluster en cloud. Elk van deze lagen kent eigen vorm van security.
Cloud native development hangt nauw samen met het ecosysteem waarin je clusters en microservices zich bevinden. Zo heb je bijvoorbeeld service meshes nodig, een containerorkestratieplatform, en tools voor runtime, networking en provisioning. Het CNCF heeft daarvoor een landschap aan technologieën en tools samengesteld. Nice fact: TrueFullstaq is onderdeel van dit cloud native landschap!
Steeds meer organisaties ontwikkelen hun webapp, webshop of website met microservices en containerisatie. Dat levert veel voordelen op, al kan de orkestratie ervan en beheer van onderliggende infrastructuur complex zijn. Engineers van TrueFullstaq helpen je om deze complexiteit te lijf te gaan en beheren de infrastructuur voor je, met Managed Kubernetes van TrueFullstaq.