Microservices in Java: Zoals bekend is er veel te doen rond microservices. De overgang van een monolithische naar een op microservice gebaseerde architectuur biedtveel voordelen voor de toekomst op het gebied van onderhoudbaarheid, schaalbaarheid, hoge beschikbaarheid, enz. In de volgende tekst zullen we het hebben over Spring Cloud.
Wat zijn Microservices?
Een microservice, ook bekend als de microservice-architectuur, is een architectuurstijl die een applicatie structureert als een verzameling services. De voordelen van de microservicearchitectuur zijn als volgt:
- Kleine modules
- Losjes gekoppeld
- Onafhankelijk inzetbaar
- Sneller defecten isoleren
De microservice-architectuur maakt een snelle, frequente en betrouwbare levering van grote, complexe applicaties mogelijk. Het stelt een organisatie ook in staat om haar technologiestapel verder te ontwikkelen. Daarnaast helpt de microservice-architectuur ons bij continue levering en integratie.
Wat is Spring Cloud en waarvoor wordt het gebruikt?
Spring Cloud is een framework voor het bouwen van robuuste cloudapplicaties en het biedt een oplossing voor de veel voorkomende patronen bij het ontwikkelen van een gedistribueerd systeem. Spring Cloud framework biedt tools voor ontwikkelaars om snel zowel cloudapplicaties als microservice-gebaseerde applicaties te bouwen.
Met Spring Cloud kan een ontwikkelaar snel services en toepassingen ontwikkelen die de ontwerppatronen implementeren die goed werken in elke gedistribueerde omgeving. Spring Cloud is echter geen project op zich, maar een groep projecten voor het beheren van de uitdagingen van de ontwikkeling van cloud-native systemen. Enkele belangrijke projecten zijn de volgende:
- Spring cloud configuratie
- Lente Wolk Netflix
- Lente-cloudbus
- Lente wolkenspeurder
- Springwolk Kubernetes
Spring Cloud Netflix is het populairste project dat deel uitmaakt van Spring Cloud. Het heeft ongeveer 3,5k sterren op GitHub. Het biedt Netflix OSS-integraties voor Spring Boot-apps via autoconfiguratie en binding met de Spring-omgeving. Met een paar eenvoudige annotaties kun je snel de algemene patronen in je applicatie inschakelen en configureren en beginnen met het bouwen van grote gedistribueerde systemen.


Service zoeken - Netflix Eureka
Bij gedistribueerd computergebruik is er een concept dat Service Discovery and Registration heet en waarbij één speciale server verantwoordelijk is voor het bijhouden van het register van alle microservices die zijn ingezet en verwijderd.
Zie het als een lookup service waar microservices (clients) zichzelf kunnen registreren en andere geregistreerde microservices kunnen ontdekken. Wanneer een microservice zich registreert bij Eureka, levert deze metadata zoals host, post en gezondheidsindicatoren, zodat andere microservices deze kunnen ontdekken. De discovery server verwacht een regelmatig heartbeat-bericht van elke microservice-instantie. Als een instantie consequent begint te falen in het verzenden van een heartbeat, zal de discovery server de instantie uit het register verwijderen. Op deze manier krijgen we een zeer stabiel ecosysteem van microservices die met elkaar samenwerken. Ook hoeven we niet handmatig het adres van andere microservices te onderhouden, wat een bijna onmogelijke taak is als de schaal omhoog of omlaag erg frequent is en we een virtuele host gebruiken om de services te hosten, vooral in de cloudomgeving.
Om een Eureka-server te maken, moeten we de Eureka Server-afhankelijkheid toevoegen en de hoofdklasse van Spring Boot annoteren met @EnableEurekaServer.

In dit geval is er hier geen dienst geregistreerd, wat te verwachten is en zodra we de cliëntdiensten opstarten, zal deze server worden bijgewerkt met de details van de cliëntdiensten. Wanneer we een nieuwe service-instantie willen registreren bij de Eureka Server, moeten we de Eureka Discovery Client-afhankelijkheid hebben en de hoofdklasse van Spring Boot annoteren met @EnableEurekaClient.
Edge Server - Netflix Zuul
Zuul is de voordeur voor alle aanvragen van apparaten en websites naar de backend. Als edge service applicatie is Zuul gebouwd om dynamische routering, monitoring, veerkracht en beveiliging mogelijk te maken. Routing is een belangrijk onderdeel van een microservice-architectuur.
Om een Eureka-server te maken, moeten we de Eureka Server-afhankelijkheid toevoegen en de hoofdklasse van Spring Boot annoteren met @EnableEurekaServer.

Zuul biedt ook een bekend toegangspunt tot de microservices in het systeem. Het gebruik van dynamisch toegewezen poorten is handig om poortconflicten te vermijden en het beheer te minimaliseren, maar het maakt het moeilijker voor een bepaalde serviceafnemer.
Om een Zuul gateway te bouwen, moet de microservice die de UI afhandelt ingeschakeld worden met zuul config. We moeten de afhankelijkheid spring-cloud-starter-zuul toevoegen en inschakelen in de hoofdklasse van Spring Boot met de @EnableZuulProxy annotatie. Het voordeel van dit type ontwerp is dat de gemeenschappelijke aspecten zoals CORS, authenticatie en beveiliging in een gecentraliseerde service kunnen worden ondergebracht, zodat alle gemeenschappelijke aspecten op elk verzoek worden toegepast. Bovendien kunnen we met Zuul elke routeringsregel of filterimplementatie implementeren.

Zuul heeft voornamelijk vier soorten filters waarmee we het verkeer kunnen onderscheppen in een verschillende tijdlijn van de aanvraagverwerking voor een bepaalde transactie. We kunnen een willekeurig aantal filters toevoegen voor een bepaald URL-patroon.
- Voorfilters worden aangeroepen voordat het verzoek wordt gerouteerd
- Postfilters worden aangeroepen nadat het verzoek is gerouteerd
- Routefilters worden gebruikt om het verzoek te routeren
- Foutfilters worden aangeroepen wanneer er een fout optreedt tijdens het afhandelen van het verzoek
Conclusie - Deel 1
Het belangrijkste doel van de implementatie van microservices is het opsplitsen van de applicatie als een aparte service voor elke kern- en API-servicefunctionaliteit. In deel 1 hebben we de microservices-architectuur en het Spring Cloud-project geïntroduceerd. We hebben het ook gehad over twee belangrijke onderdelen van het Spring Cloud Project - Eureka Service Discovery en Zuul Edge Server.
Maar dat is niet alles, in
Deel 2
gaan we verder met microservices en introduceren we de andere drie componenten.