Microservices op AKS

Wij horen en zien dat veel mensen praten over Microservices en Service Mesh, maar wat is dit? 

Wij horen en zien dat veel mensen praten over Microservices en Service Mesh, maar wat is dit? En wat kun je ermee? In dit artikel kijken we naar wat Microservices zijn, wat een Service Mesh is en wat je ermee kunt doen en tot slot of je het nu wel echt nodig hebt. Daarnaast is dit artikel een onderdeel uit een serie van artikelen over AKS. Dus ik ga ook bespreken of je een Service Mesh kan gebruiken op AKS.

Wat zijn Microservices

Microservices is eigenlijk een architectuurstijl die je in staat stelt je applicatie te structureren als een verzameling van services. Meestal is elke dienst een kleine applicatie (maar niet te klein) die eigendom is van een klein team. De applicatie is ontworpen om loosely coupled te zijn, dit betekent in principe dat je applicatie zelfstandig kan worden ingezet en niet je systeem neerhaalt. Door gebruik te maken van een Microservices architectuur gekoppeld met DevOps praktijken, kun je snelle, frequente en betrouwbare releases van complexe applicaties doen.

Microservices zijn geen wondermiddel of dé holy grail, je moet goed over de keuze nadenken voordat je de Micro-services route kiest. Sommige valkuilen of nadelen van microservies hebben te maken met de communicatie tussen diensten en externe bronnen, denk aan latency en beveiliging. Het kan zijn dat ontwikkelaars extra code moeten schrijven om hier mee om te gaan. Een andere valkuil zou kunnen zijn dat hoe meer microservices je hebt hoe meer resources je moet developen en beheren. Debugging is een andere uitdaging. Maar laat je niet afschrikken door de nadelen of valkuilen, kijk ook naar de voordelen en voornamelijk naar jouw eigen situatie. Zorg voordat je begint aan deze reis dat je weet wat microservices voor jouw kunnen betekenen.

 

Wat is een Service Mesh?

Een service mesh is een klein hulpmiddel dat helpt om de waarneembaarheid, veiligheid en betrouwbaarheid van jouw microservice applicaties te verbeteren door zichzelf in de platform laag te injecteren in plaats van in de applicatie laag. Bij de meeste servicemesh’s wordt een proxycontainer aan de applicatie pods toegevoegd. Dit wordt normaal gesproken een sidebar container genoemd. De belangrijkste rol van een service mesh is zoals je vast wel geraden hebt door het gebruik van een proxy; het beheren van het netwerkverkeer tussen de services.

Er zijn momenteel verschillende service meshes beschikbaar. De meest populaire is Istio (het griekse woord voor zeil). Istio is gemaakt door teams van Google en IBM in samenwerking me het Envoy team van Lyft en wordt ontwikkeld in GitHub. Een andere populaire service mesh is Linkerd, die beweert ‘s ’werelds lichtste, snelste, service mesh’ te zijn. Ook dit wordt in GitHub bijgehouden.

Er zijn ook enkele bedrijven die service meshes maken, waaronder Microsoft met hun Open Service Mesh (OSM). OSM is erg nieuw en nog steeds in Alpha op het moment van schrijven. Ngix werkt aan hun eigen service mesh genaamd NGINX Service Mesh (NSM). NSM wordt achter gesloten deuren ontwikkeld, maar problemen kunnen via Github worden gelogd. Een mooie vergelijking van de verschillende opties kun je hier vinden.

Omdat er verschillende service mesh opties zijn raad ik je aan om elke optie goed te onderzoeken en uit te proberen voordat je een keuze maakt. Oh, en vergeet niet om de projecten in de gaten te houden, want zoals alles met Kubernetes te maken heeft, wordt er veel geüpdatet. Dus baanbrekende veranderingen kunnen zomaar gebeuren.

 

Wat kun je doen met een Service Mesh?

Hieronder beschrijf ik enkele functionaliteiten die je met een service mesh kan realiseren:

Dynamische Service Discovery en Routing

Door gebruik te maken van een service mesh kun je dynamische service discovery en traffic management krijgen. Dit stelt je in staat om traffic shadowing uit te voeren, denk aan duplicatie, erg handig voor het testen. Bijvoorbeeld, je hebt misschien een applicatie die communiceert met een service, je bent van plan een nieuwe versie van deze service uit te brengen, maar je wilt testen wat er zou gebeuren met live data. Door gebruik te maken van traffic shadowing kun je dit live verkeer dupliceren naar de productie omgeving en in de nieuwe test service zien hoe het reageert en presteert.

Een ander kenmerk is het splitsen van verkeer. Dit maakt het canary testen makkelijk. Laten we het zojuist genoemde voorbeeld gebruiken, maar nu is de applicatie getest en al en willen we het uitrollen, maar nog niet voor iedereen. Met verkeerssplitsing kunnen we het verkeer opsplitsen tussen de twee diensten, zeg maar 70% voor de oude service/dienst en 30% met de nieuwe service/dienst. We kunnen dan de nieuwe service monitoren op eventuele fouten en problemen en het percentage die de nieuwe versie ziet verhogen wanneer je er zeker van bent dat de het allemaal werkt. Je kunt dit ook gebruiken voor het testen van nieuwe functionaliteiten middels A/B testing.

Service-to-Service communicatie betrouwbaarheid

De primaire functie van een service mesh is het beheren van service-to-service communicatie. Hierdoor kun je gebruik maken van de opties om functies zoals request retries, timeouts, rate limiting en circuit breaking te implementeren.

Zoals hierboven vermeld wordt bij de meeste service mesh installaties een proxyserver sidecar container toegevoegd aan elke pod in jouw cluster. Deze sidecars worden aangestuurd door de service mesh controle plan. Zodra alle proxies zijn geconfigureerd heb je de data plane. Deze data plane stelt je in staat om slimme routing in te schakelen, denk aan  latency aware load balacing en het implementeren van routing rules op basis van request properties.

Let wel op: niet alle service meshes zijn hetzelfde, dus het kan zijn dat bovengenoemde opties niet in de gekozen mesh zit.

Door gebruik te maken van opties zoals time-outs en circuit brekers kun je ervoor zorgen dat jouw diensten geen enorme achterstanden krijgen of een slechte gebruikerservaring oplevert. Ik zou zeker wat tijd besteden aan het onderzoeken van deze mogelijkheden en samen werken met de business om zo aan alle vereisten te voldoen.

Waarneembaarheid van het verkeer

Doordat alle service to service communicatie via de proxy’s in een service mesh verloopt, heb je de mogelijkheid om het netwerk verkeer beter waar te nemen. Hierdoor kun je een verzoek traceren via alle services in de service mesh, de frequentie van HTTP-foutcodes en elke vertraging, of het nu gaat om service to service of wereldwijd. Sommige service meshes hebben een eigen dashboard zodat je in een weergave inzicht kan hebben op alle netwerkverkeer, maar ze bieden vaak ook de mogelijkheid om de logs naar Prometheus te sturen of ze met Grafana te gebruiken. Dit zijn dé meest gebruikte tools voor het monitoren van AKS.

Communicatie beveiliging

Ik weet dat dit het laatste punt is in dit artikel, maar dit is waarschijnlijk dé reden waarom de meeste mensen een service mesh gebruiken. Met de meeste service meshes kun je bepalen met welke diens je kunt praten. Dus ‘Service A’ kan communiceren met ‘Service C’, maar niet met ‘Service B’, en ‘Service B’ kan alleen praten met ‘Service C’. Standaard heeft AKS wel een netwerkbeleid, maar dit wordt niet gecontroleerd via manifest files en kan erg omslachtig zijn.

Deze functie is dé reden waarom mensen kiezen voor een service mesh: gecodeerd verkeer. Dit betekent dat al het intere netwerkverkeer is versleuteld met behulp van certificaten. Deze certificaten kunnen zelfs afkomstig zijn van een externe CA zoals let’s encrypt of van Azure Key Vault indien deze wordt ondersteund door de service mesh.

 

Heb je een Service Mesh nodig?

Als je een paar services hebt draaien die verbinding maakt met een event grid of een message queue, dan heb je waarschijnlijk geen service mesh nodig. Tenzij je natuurlijk een van bovenstaande functies nodig heeft, zoals intercluster communicatie over https.

Als je meerdere services hebt die met elkaar praten dan is een service mesh wellicht iets voor jou. Door een service mesh te gebruiken stel je je ontwikkelaars ook in staat om zich te concentreren op de zakelijke waarde van jouw applicatie in plaats van de services met elkaar te verbinden.

 

Kan je Service Mesh gebruiken met AKS?

Service meshes zijn 100% compatible met AKS. AKS draait net als elke Kubernetes-installatie, of het nu op locatie is, in een andere cloud, of op virtuele machines draait.

Het voordeel van het koppelen van een service mesh met AKS is dat je nu niet ook de onderliggende systemen hoeft te beheren. Microsoft regelt dat voor je. Dit betekent dat je meer tijd vrij hebt voor het ontwikkelen van je applicatie en te onderzoeken of Service mesh iets voor je is.

Microsoft is momenteel bezig met het creëren van haar eigen service mesh (OSM). Ik zou aanraden de ontwikkelingen hierover goed in de gaten te houden, omdat het uiteindelijk waarschijnlijk extreem compatibel zal zijn met AKS en misschien zelfs wel super eenvoudig te implementeren als add-on.

Wil je meer lezen over AKS? In de komende weken gaan we meer artikelen schrijven over dit onderwerp. Wil je dit niet missen? Schrijf je dan hier in voor onze Intercept Insights. Dan houden we je op de hoogte van de laatste nieuwsberichten.

 

Dit artikel is onderdeel van een reeks 

Lees in dit vervolg artikel alles over update scenario's op AKS.

Vorige artikelen teruglezen? Klik hier:
1. De evolutie van AKS
2. Hybride deployments met Kubernetes


Wil je niets missen? Schrijf je dan hier in voor onze Intercept Insights. Dan houden we je op de hoogte van de laatste nieuwsberichten.


Bezoek onze AKS workshop

Leer nog meer over AKS door onze interactieve AKS workshop. In 1.5 uur ontvang jij de voordelen en de best practices om jouw omgeving efficiënter te maken. Middels veelvoorkomende AKS uitdagingen ben jij klaar voor AKS. Klik hier voor data en meld je aan!

Tags

  • Microservices
  • Containers
  • Azure Kubernetes Services

Geschreven door

Richard Hooper

Richard Hooper

Azure Architect bij Intercept | Microsoft Certified Trainer | Microsoft MVP

Wellicht ook interessant:

  • 202011111 Intercept Illustratie Bij Artikel Aks Monitoring A

    AKS monitoring en management

    In dit artikel geven we je op een hoog niveau meer inzicht in de mogelijkheden van het monitoren van (Azure) resources, maar AKS-clusters in het bijzonder.

    • Leesduur 9min
    Meer over AKS monitoring en management
  • Ingress Name (2)

    Ingress, Services, Pods & Namespaces.

    Nadat je de container technologie hebt omarmd en hebt besloten dat Kubernetes gaat gebruiken, moet je aan de bak en je erin gaan verdiepen. Er is namelijk veel te leren, maar een aantal belangrijke concepten zoals Services, Pods, Ingresses en namespaces zijn van cruciaal belang voor je succes.

    • Leesduur 8min
    Meer over Ingress, Services, Pods & Namespaces.
  • Aks Security

    AKS Security

    Iedereen werkt hard aan het nieuwe platform en dan vraagt iemand... "Hoe zit het met de veiligheid?"

    • Leesduur 10min
    Meer over AKS Security
  • Ebook AKS ENG 1

    Het Intercept AKS e-book

    Dit e-book geeft je alle informatie die je moet weten om te beslissen of Azure Kubernetes een goede match met jouw software architectuur is. Leer daarnaast ook van onze best practices omtrent o.a. security, update scenario's en het monitoren en managen van AKS clusters.

    • Leesduur 2min
    Meer over Het Intercept AKS e-book
  • 20201028 Intercept Illustratie Bij Artikel Windows Container

    Windows containers in een Linux wereld

    Een veel voorkomende vraag wanneer iemand op zoek is naar het transformeren/containeriseren van zijn oplossing is; ‘ik draai nu op een Windows systeem: moet ik Windows containers gebruiken of moet ik kiezen voor Linux containers? En dit is inderdaad een hele terechte vraag.

    • Leesduur 8min
    Meer over Windows containers in een Linux wereld
  • Hoofdfoto Artikel AKS Updates

    Update scenario's op AKS

    In dit artikel ga ik het hebben over een heel belangrijk onderwerp: updates. Als ik zeg updates, dan bedoel ik niet alleen Kubernetes updates, maar ook de worker node OS updates. Veel mensen vergeten het patchen van het work OS in de overtuiging dat het door Microsoft wordt geregeld. Dit is niet het geval.

    • Leesduur 8min
    Meer over Update scenario's op AKS
  • Going Hybris

    Hybride deployments met Kubernetes

    Ik hoor en zie online dat veel mensen praten over Microservices en Service Mesch, maar wat is dit? In dit artikel kijken we naar wat Microservices zijn, wat een Service Mesh is en wat je ermee kunt doen en tot slot of je het nu wel echt nodig hebt

    • Leesduur 7min
    Meer over Hybride deployments met Kubernetes
  • 20200819 Intcercept Artikel Illustratie Aks Cluster

    Best practices voor het opzetten van een AKS cluster

    Kubernetes is “hot & happening”, vrijwel iedereen wil er mee aan de slag. Het aanmaken van een AKS-cluster is zo gedaan, maar gaat dat ook zo makkelijk als je Kubernetes echt in productie wilt nemen? In dit artikel geven wij belangrijke tips en best-practices voor het opzetten en gebruiken van een AKS-productie omgeving.

    • Leesduur 6min
    Meer over Best practices voor het opzetten van een AKS cluster
  • 20200819 Intcercept Artikel Illustratie Aks Cluster

    Best practices voor het opzetten van een AKS cluster

    Kubernetes is “hot & happening”, vrijwel iedereen wil er mee aan de slag. Het aanmaken van een AKS-cluster is zo gedaan, maar gaat dat ook zo makkelijk als je Kubernetes echt in productie wilt nemen? In dit artikel geven wij belangrijke tips en best-practices voor het opzetten en gebruiken van een AKS-productie omgeving.

    • Leesduur 6min
    Meer over Best practices voor het opzetten van een AKS cluster