Spring Cloud, le couteau suisse des microservices

Cet article s’insère dans la série « microservices » écrite par François Berthault dans le cadre de la participation de TalanLabs à Devoxx 2017, du 5 au 7 avril prochains au Palais des Congrès de Paris.

5.1

Nous avons vu dans l’épisode précédent comment implémenter un microservice grâce à Spring Boot.

Une nouvelle question se pose : Comment orchestrer et mettre à disposition un parc de microservices qui pourrait être scalable et déployer sur différents serveurs ? Et pour se faire, nous pouvons utiliser Spring Cloud.

 

Spring Cloud, le couteau suisse des microservices

© François Berthault

API Gateway : un design pattern pensé pour le Cloud

Spring Cloud propose plusieurs API Gateway simples à mettre en place (NetFlix, Consul et Zookeper).

Intéressons-nous à celle de Netflix OSS (Open Source Software). Quand la célèbre société de streaming vidéo à débuter sur les plateforme d’Amazon AWS, les équipes de Netflix ont mis au point leur propre API Gateway, répondant notamment aux problématiques de la distribution volatile sur le Cloud (IP dynamique, scalabilité en temps réels, data-center, etc.). Novateur dans le domaine des architectures émergeantes, Netflix OSS offre régulièrement à la communauté open source de nombreux projets (plus d’une cinquantaine) comme Hystrix, Chaos Monkey, Eureka ou Zuul.

Cette API Gateway se compose de deux éléments :

  • Eureka : le service d’annuaire (discovery service ou registry service). Les instances d’Eureka peuvent s’enregistrer et les clients peuvent être découverts par les instances.
  • Zuul : le proxy/routeur intelligent (edge service).

Spring Cloud ajoute une surcouche à Eureka et Zuul pour les rendre transparents et complètement intégrés à l’écosystème Spring.

API Gateway : un design pattern pensé pour le Cloud

© François Berthault

C’est assez simple à comprendre :

  • Étape 1 : Chacun des microservices embarque la librairie discovery-client et va s’enregistrer dans un serveur Eureka au démarrage.
  • Étape 2 : Zuul va lui découvrir l’ensemble des microservices connus par Eureka.
  • Étape 3 : Zuul va mettre en place les routes http vers les microservices, jouer le rôle de load balancer et les protéger avec Hystrix (circuit breaking).
  • Étape 4 : Une fois l’initialisation terminée, Zuul exposera de nouvelles uri, afin de rendre accessible les microservices où qu’ils soient.

Spring Cloud Eureka fournit aussi un  tableau de bord de supervision des instances de microservices :

Les microservices pour une architecture orientée web n°5 - Spring Cloud Eureka

Un serveur de config pour simplifier les déploiements

Afin d’ajouter un service de configuration pour centraliser et déployer en temps réel les configurations des microservices, un simple dépôt Git suffit. Il stockera l’ensemble des propriétés d’environnement et remplacera les multiples fichiers de configuration. Au démarrage, chacun des processus viendront récupérer les informations dont ils ont besoin. Plus besoin de déployer manuellement un fichier de configuration par instance de microservice.

Un serveur de config pour simplifier les déploiements

© No Fluff Just Stuff : blog.nofluffjuststuff.com

Spring Cloud est la boite à outil indispensable à vos microservices

Nous avions vu la simplicité avec laquelle il était possible de construire un microservice complet  grâce à Spring Boot dans l’article précèdent. Maintenant, l’orchestration et la configuration des microservices sont  choses faites avec Spring Cloud. Il ne vous reste plus qu’à vous lancer.

En complément, voici une vidéo de l’excellente conférence de Josh Long (Spring Advocate & JAVA Champion) lors du Devoxx France 2016 nommé « Bootiful microservice ».


Des exemples de codes pour votre architecture microservices sont disponibles sur Github. Vous y trouverez également un exemple complet de déploiement de microservices via Spring Cloud (jusqu’à l’orchestration des images Docker avec docker-compose).

Vous avez aimé cet article ? Découvrez ou redécouvrez les autres épisodes de la série « Les microservices pour une architecture orientée web » :

Partie 1   Les microservices pour une architecture orientée web n°1 : Définitions et caractéristiques

Partie 2   Les microservices pour une architecture orientée web n°2 : Un changement de point de vue

Partie 3   Les microservices pour une architecture orientée web n°3 : Organisation des équipes pour une projet d’architecture en microservices

Partie 4   Les microservices pour une architecture orientée web n°4 : Simple comme Spring Boot

Développeur Full-Stack depuis 2002, Je suis un "Java Web Devops Coding Architect". et Je prêche "Architecture as Code" !