/microservices-docker-java-tutorial

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.

Primary LanguageJava

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.

Nous utiliserons pour cela plusieurs technologies :

  • la bibliothèque KumuluzEE 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 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 Docker.

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 Docker, créer un conteneur Docker, faire communiquer plusieurs conteneurs Docker, 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 pour le client et NodeJS pour créer un petit 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 basé sur 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 Twitter s'abonnent au bus d'événement et envoient respectivement un email ou un « Tweet ». Ces deux microservices ne seront pas traités.

Schéma de l'Application HelloWorld

Ressources

Retrouver les précédentes leçons :

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