Service Mesh uitgelegd: Hoe open-source meshes microservice-communicatie vereenvoudigen
Bij het ontwikkelen in een microservice-architectuur zijn er veel individuele componenten die het DevOps-team moet configureren. Voor microservices om samen te werken, hebben ze gevestigde communicatiekanalen nodig voor informatiedeling en data-overdracht.
Eén manier om communicatie tussen services te beheren en te monitoren is het gebruik van een service mesh.
Wat is een Service Mesh?
Een service mesh is een toegewijde infrastructuurlaag die aan de microservice-architectuur wordt toegevoegd. De hoofdrol is om snelle en veilige service-tot-service-communicatie te garanderen. Deze low-latency-tool beheert en monitort interservice-communicatie en data-deling.
Het bestaat uit een control plane vanuit waar ontwikkelaars specifieke regels en beleidsregels implementeren naar de netwerklag. De control plane werkt direct met de data plane, een verzameling van sidecar-proxies die naast de services draaien. Deze proxies zijn verantwoordelijk voor alle communicatie tussen de services. Bovendien monitoren ze en bieden waardevolle inzichten in de algehele applicatieprestaties en helpen potentiële issues te vinden en downtime te vermijden.
De proxies bieden waardevolle capaciteiten, waaronder:
- Dynamische service-ontdekking
- Load balancing
- Health checks
- Encryptie
- Observeerbaarheid
- Circuit breakers
- Gefaseerde rollouts met percentage-gebaseerde traffic split
- Authenticatie
- Rijke metrics
- Autorisatie
De Opkomst van Service Mesh-architectuur
Om volledig te begrijpen hoe een service mesh werkt, moeten we kijken naar waarom zo'n tool ontwikkeld is. De opkomst van service mesh-architectuur ontstond als oplossing voor een aantal problemen met betrekking tot microservices.
Veel ontwikkelteams maakten de switch van het ontwikkelen van monolithische applicaties naar microservice-architectuur. Dit deelde een applicatie van een monolithische eenheid tot een systeem van individuele services die samenwerken. De applicatie bestaat uit meerdere autonoom services met hun individuele functionaliteiten.
De moeilijkheid met het ontwikkelen van zo'n applicatie is het configureren van de beste manier voor deze services om met elkaar te praten. De applicatieprestaties hangen af van de services die samenwerken en data delen om de beste gebruikerservaring te bieden. Een webwinkel kan bijvoorbeeld bestaan uit een login-service die communiceert met een koop-service die informatie vereist van een inventaris-database enz.
Omdat microservices communiceren via APIs, was het vinden van de beste oplossing voor ontdekking en routing belangrijk. Daarnaast moesten ontwikkelaars garanderen dat de communicatie binnen het systeem veilig was. Terwijl firewalls de applicatie beschermden tegen buitenlandse aanvallen, was er een plat, open netwerk binnen de microservice-architectuur.
Voor mesh-service-architectuur werd deze taak afgehandeld door load balancers. Het was echter geen praktische oplossing, vooral op grotere schaal, vanwege implementatie- en kostenkwesties. De service mesh werd ontwikkeld als ultieme oplossing voor alle bovenstaande kwesties. Het presenteerde een netwerklag met een gecentraliseerde register (control plane) die alle services beheerde met zijn sidecar-proxies. Ze zijn veel gemakkelijker te configureren en schalen vergeleken met load balancers. Ontwikkelaars kunnen de proxies omhoog en omlaag schalen zoals nodig en routing-regels wijzigen zonder de services te wijzigen.
Service Mesh Voordelen
De meest significante voordelen van service mesh zijn:
- Verbeterde beveiliging – Het implementeren van een service mesh in een microservice-architectuur verbetert de algehele beveiliging. Deze netwerklag introduceert automatische autorisatie, authenticatie, encryptie en beleidshandhaving. Het gebruikt mutual Transport Layer Security (mTLS) om ervoor te zorgen dat alle service-tot-service-communicatie veilig is. Services identificeren zich met hun TLS-certificaten om een verbinding tot stand te brengen. Zodra ze hun identiteit valideren, vestigen ze een gecodeerd kanaal voor data-deling.
- Verkeerscontrole en zichtbaarheid – Een van de primaire functies van een service mesh is verkeerscontrole te bieden. Het beheert oost-west verkeer, evenals het verkeer tussen services. Alle communicatie gebeurt via de sidecar-proxies, die beheerd worden door de control plane. Verkeer wordt transparant gerouteerd, wat ontwikkelaars betere zichtbaarheid geeft van alle data-uitwisseling. Met helderder inzicht in applicatieprestaties is het gemakkelijker om potentiële issues binnen het systeem te ontdekken.
- Observeerbaarheid – Omdat het platform alle verkeer beheert, verzamelt het waardevolle inzichten in verkeersgedrag en gebruikersinteractie. Met dergelijke grote hoeveelheden data kunnen business-analisten een strategie plannen voor het verbeteren van de applicatie.
- Ontwikkelaars gefocust op app-ontwikkeling in plaats van networking – In plaats van het ontwikkelteam de hele netwerklag in te stellen en te beheren, kunnen ze service mesh in de architectuur implementeren. Hoewel de platform initiële configuratie vereist, automatiseert het tijdrovende taken gerelateerd aan netwerkbeheer. Dit stelt ontwikkelaars in staat om zich te richten op microservices. Het laten van de service mesh service-tot-service-interacties beheren bespaart tijd en geld en verbetert ook productiviteit.
- Veerkracht – Een service mesh biedt functies die helpen veerkrachtige microservice-applicaties te creëren. Een dergelijke functie is het circuit breaker-patroon dat helpt falen en latentiepieken te detecteren. Daarnaast gebruikt een service mesh load balancing voor service-ontdekking en het routeren van verkeer over het microservice-netwerk. Andere functies die bijdragen aan veerkracht zijn retries, timeouts en deadlines.
- Snellere test- en implementatiecycli – Het gebruik van sidecar-proxies voor pod-tot-pod-communicatie is veel eenvoudiger en sneller in te stellen. In plaats van redundante functies in elke service te coderen, implementeren ze proxies en koppelen ze aan de service. Dit versnelt de algehele ontwikkel- en testcycli.
Lijst van Open Source Service Meshes
Er zijn een aantal open-source service meshes beschikbaar. Istio, Linkerd en Consul zijn het meest gebruikt.
Hieronder vind je meer details over elk platform.
Istio
Istio is een open-source infrastructuur ontworpen door Google, IBM en Lyft. Het is een van de vroegste service mesh-platforms. Het gebruikt Istiod, een control plane bestaande uit meerdere componenten (Pilot, Citadel en Mixer) voor het opereren en configureren van de service mesh. De data plane bestaat uit Envoy-proxies, ontwikkeld in C++. HTTP/TCP-verbindingen worden beheerd door de Gateway, Istio's load balancer. De VirtualService en DestinationRules definiëren routing-regels en beleid.
Linkerd
Linkerd is een lichtgewicht open-source service mesh, ontwikkeld door het Cloud Native Computing Foundation (CNCF)-project. Het is eenvoudig te installeren in een Kubernetes-cluster op elk platform, zonder extra configuratie. Geen configuratie hebben is voordelig bij het werken met kleinere clusters. Echter, grootschalige projecten vereisen de mogelijkheid van configuratie om alle services in de cluster succesvol te beheren.
Zijdecar-proxies zijn geschreven in Rust. Linkerd gebruikt de Controller voor de control plane en de Web Deployment voor het dashboard. Daarnaast gebruikt het Prometheus voor het verkennen en opslaan van metrics en Grafana voor het renderen en tonen van dashboards.
Consul Connect
Consul was oorspronkelijk ontworpen als een service discovery-tool en evolueerde later tot een service mesh. In tegenstelling tot Linkerd, omvat Consul Connect veel configuratie, wat je meer controle geeft over de netwerkomgeving. Daarbij is het moeilijker te gebruiken dan Linkerd. Deze open-source service mesh is platform-agnostisch, wat betekent dat het geen Kubernetes of Nomad vereist. Toch vereenvoudigt Nomad het proces van het beheren van microservice-communicatie via Consul.
Microsoft's Open Service Mesh
Open Service Mesh (OSM) is een CNCF Envoy-project dat een service mesh-interface implementeert om dynamische microservice-applicaties te beheren en te beveiligen. Het gebruikt Envoy xDS als sidecar-containers. De hoofdfuncties omvatten traffic shifting, certificaatbeheer, mTLS inschakelen, automatische sidecar-injectie en toegangscontrolebeleid.
Kuma
Kuma is een open-source control plane voor Kubernetes en VM's die binnen een service mesh draaien. Het heeft L4+L7 beleidsarchitectuur die functies implementeert zoals service discovery, routing, zero-trust beveiliging en observeerbaarheid. Het platform is hoog schaalbaar en eenvoudig in te stellen.
OpenShift Service Mesh Red Hat
Red Hat ontwikkelde zijn OpenShift Service Mesh voor het beheren van microservice-applicaties. Het biedt meerdere interfaces voor netwerken en verhoogde beveiliging met Security Context Constraint. Het meet prestaties met Jaeger en observeert interacties tussen services met Kiali. Daarnaast omvat OpenShift de Red Hat 3scale Istio Mixer Adapter voor betere API-beveiliging.
AWS App Mesh
Amazon ontwikkelde App Mesh, een gratis service mesh-software die al je services binnen een microservice-architectuur beheert. Het biedt hoge beschikbaarheid en end-to-end zichtbaarheid voor je microservice-applicatie. AWS App Mesh integreert met AWS Fargate, Amazon ECS, Amazon EC2, Amazon EKS, Kubernetes en AWS Outposts. Met zijn monitoring-tools exporteert het automatisch monitoringdata.
Network Service Mesh
Network Service Mesh is een open-source CNCF Sandbox-project. Het is een hybride/multi-cloud IP-service mesh die een eenvoudige set API's gebruikt om connectiviteit te faciliteren. Het vestigt een verbinding tussen services die in containers draaien en met externe endpoints. Wanneer geïmplementeerd, vereist het minimale wijzigingen aan Kubernetes.
Conclusie
Een service mesh vereenvoudigt het beheren en onderhouden van een applicatie ontwikkeld met de microservice-architectuur. Het verbetert de algehele beveiliging binnen de microservice-architectuur en garandeert zichtbaarheid en observeerbaarheid van verkeersstroom. Over het algemeen verbeteren de service mesh-functies prestaties en versnellen de ontwikkelcyclus. Met een wijd scala aan open-source oplossingen beschikbaar, vind er eentje die het beste past bij de behoeften van je applicaties.
Cloud computing
- De 7 kernsoorten technologie verkennen
- De verschillende typen prototyping begrijpen: Een gids voor founders
- De vier kernsoorten productieprocessen verkennen
- 5-As Bewerking Meesteren: Precisie, Efficiëntie en Belangrijke Toepassingen
- Lager typen verkennen: Bal, Rol, en Precisie Opties
- Waarom Waterjetsnijden? Belangrijkste Voordelen voor Precisie Metaalbewerking
- Straalblazen: Belangrijkste voordelen voor oppervlaktevoorbereiding en metaalbewerking
- De toekomst bedienen: Hoe robots de dienstverlenende sector transformeren
- Ontdek de Voordelen van Waterstraalsnijden voor Precisie Fabricage
- Top Cloudcomputing Cursussen Voor 2026: Van AWS Fundamentals Tot Maryland's MicroMasters
- Belangrijkste Eigenschappen van Grafiet: Structuur, Kracht en Toepassingen