Skip to content

L'objectif de cette série d'exercices est d'apprendre à construire une application en respectant une architecture à base de microservices en se focalisant sur le langage Java.

Notifications You must be signed in to change notification settings

mickaelbaron/microservices-docker-java-tutorial

Repository files navigation

Tutoriel Microservices avec Docker - Développement avec le langage Java

L'objectif de cette série d'exercices est d'apprendre à construire une application en respectant une architecture à base de microservices en se focalisant sur le langage Java.

Plusieurs technologies seront utilisées :

  • le framework Open Liberty pour packager et exécuter une application microservice respectant la spécification MicroProfile ;
  • l'outil Docker pour l'isolation des microservices ;
  • la bibliothèque et le serveur RabbitMQ pour la gestion d'un bus d'événements/messages afin que les microservices communiquent de manière asyncrhone ;
  • l'outil Docker Compose pour la composition des microservices.

La grande majorité du code contenu dans les microservices vous sera donné comme support dans le répertoire workspace. En effet, ces exercices se focaliseront principalement sur les problématiques de déploiement et non sur l'aspect développement.

Dans la suite, on appelle « microservice », un programme qui implémente une fonctionnalité dans un langage donné (par exemple Java) et est isolé dans un conteneur.

Buts pédagogiques : développer un microservice avec le langage Java et la spécification MicroProfile, télécharger une image Docker, créer une image, créer un conteneur, faire communiquer plusieurs conteneurs, mettre en place un bus d'événements, composer des microservices avec Docker Compose.

Ce dépôt est utilisé dans le cadre d'un cours sur les architectures orientées services que je dispense à l'ISAE-ENSMA et à l'Université de Poitiers en français. Tous les supports de cours et tutoriaux sont disponibles sur mon blog personnel : https://mickael-baron.fr/soa/.

Prérequis logiciels

Avant de démarrer cette série d'exercices, veuillez préparer votre environnement de développement en installant les outils suivants :

Présentation de l'étude de cas

L'étude de cas utilisée est une application permettant de diffuser des messages « HelloWorld ». Elle fournit une interface web pour la saisie et pour la consultation des messages (voir figure ci-dessous).

Application HelloWorld

Sur le schéma proposé sur la figure ci-dessous, nous détaillons la décomposition en microservices de cette application. L'architecture dispose de sept microservices.

  • Le microservice Web (contenu dans le projet helloworldwebmicroservice) fournit à l'utilisateur une interface web. La technologie utilisée sera du HTML/JavaScript et Vue.js pour le client et NodeJS pour le serveur web.
  • Le microservice Rest (contenu dans le projet helloworldrestmicroservice) a pour rôle de fournir une API de type service web pour le microservice Web. Lors de la réception d'un message « HelloWorld » celui-ci est envoyé au microservice Redis à des fins de stockage. Il publie également un événement vers le microservice RabbitMQ.
  • Le microservice Redis fournit un serveur Redis pour le stockage des messages « HelloWorld ».
  • Le microservice RabbitMQ fournit un bus d'événements de type AMQP basé sur l'implémentation RabbitMQ.
  • Le microservice Log (contenu dans le projet helloworldlogmicroservice) s'abonne au bus d'événement et affiche sur la sortie console les événements envoyés.
  • Les microservices Email et LLM (une IA générative) s'abonnent au bus d'événement et envoient un email ou délègue à un agent d'une IA générative pour réaliser une tâche précise. Ces deux microservices ne seront pas traités dans ces exercices.

Schéma de l'Application HelloWorld

Ressources

Retrouver les précédentes leçons :

Pour aller plus loin, vous pouvez consulter les ressources suivantes :

About

L'objectif de cette série d'exercices est d'apprendre à construire une application en respectant une architecture à base de microservices en se focalisant sur le langage Java.

Topics

Resources

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •