Académique Documents
Professionnel Documents
Culture Documents
Pour l’architecture monolithique, l’application repose sur une unique base de code. Les modules donc
communiquent avec une seule et même base de données. Ce type d’architecture pose deux problèmes :
• Si l'un des processus de l'application enregistre un pic de demande, toute l'architecture doit être
mise à l'échelle.
• L'ajout ou l'amélioration de fonctionnalités d'une application monolithique devient plus
complexe à mesure de la croissance de la base de code.
• Cette complexité limite les expérimentations et rend l'implémentation de nouvelles idées
difficile.
• Les architectures monolithiques augmentent les risques en matière de disponibilité des
applications, car de nombreux processus dépendants et étroitement couplés renforcent l'impact
d'un seul échec de processus.
Aussi, le modèle d’application Cloud Native introduit la séparation des applications en fonctionnalités
indépendantes appelées microservices. Les applications gagnent en flexibilité et en modularité.
20/05/2023 1
Concepts de base des microservices
1. Services autonomes : chaque microservice est un service indépendant qui peut être développé,
déployé, mis à l'échelle et géré séparément des autres microservices.
2. Communication : les microservices communiquent entre eux à l'aide de protocoles légers tels
que REST, HTTP ou AMQP.
HTTP est un protocole de communication utilisé pour transférer des données sur le Web
AMQP est un protocole de messagerie pour l'échange de messages entre des applications. Les
messages échangés entre les microservices sont souvent en format JSON ou XML.
3. Gestion des données : chaque microservice a sa propre base de données, qui peut être une base
de données relationnelle ou une base de données NoSQL. Les microservices peuvent également
partager des données entre eux en utilisant des API.
4. Déploiement continu : les microservices sont déployés de manière continue et indépendante
les uns des autres, ce qui permet de les mettre à jour rapidement et sans interruption de service.
5. Scalabilité : les microservices peuvent être mis à l'échelle horizontalement en ajoutant des
instances de services en fonction de la demande. Cela permet d'optimiser les performances et
de réduire les coûts d'infrastructure.
6. Résilience : les microservices sont conçus pour être résilients, c'est-à-dire qu'ils sont capables
de gérer les erreurs et les pannes de manière autonome, sans affecter les autres microservices.
7. DevOps : les microservices nécessitent une collaboration étroite entre les équipes de
développement et d'exploitation (DevOps) pour assurer un déploiement rapide et une gestion
efficace des microservices.
8. Sécurité : les microservices doivent être sécurisés pour empêcher les attaques malveillantes.
Les mesures de sécurité incluent l'authentification, l'autorisation et la gestion des clés API.
Exemple :
https://openclassrooms.com/fr/courses/4668056-construisez-des-microservices/7651431-apprehendez-
larchitecture-microservices
20/05/2023 2
TP1 : Communication entre deux micro services avec Node.js
npm init -y
Express est un framework pour créer des applications web en Node.js, tandis qu'Axios est une bibliothèque pour
effectuer des requêtes HTTP à partir de n'importe quel environnement JavaScript. Express est principalement
utilisé pour gérer les routes et la logique de l'application web, tandis qu'Axios est utilisé pour communiquer avec
des API ou des serveurs distants.
Résultat :
PS D:\02-DocFormation\cloud\TPS\ServiceA> npm install express axios
found 0 vulnerabilities
PS D:\02-DocFormation\cloud\TPS\ServiceA> dir
Répertoire : D:\02-DocFormation\cloud\TPS\ServiceA
Résultat :
PS D:\02-DocFormation\cloud\TPS\ServiceB> npm install express axios
added 65 packages, and audited 66 packages in 5s
9 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
PS D:\02-DocFormation\cloud\TPS\ServiceB> dir
Répertoire : D:\02-DocFormation\cloud\TPS\ServiceB
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 20/05/2023 10:45 node_modules
-a---- 20/05/2023 10:45 24991 package-lock.json
-a---- 20/05/2023 10:45 295 package.json
20/05/2023 3
Étape 3: Création du premier service
1. Dans la première console, créez un nouveau fichier serviceA.js dans le répertoire du premier
service.
2. Ouvrez le fichier serviceA.js dans un éditeur de code.
3. Ajoutez le code suivant pour créer le premier service :
app.listen(3000, () => {
console.log('Service A is running on port 3000');
});
app.listen(3001, () => {
console.log('Service B is running on port 3001');
});
20/05/2023 4
Étape 5: Exécution des services
node serviceA.js
node serviceB.js
1. Ouvrez un navigateur web ou utilisez un outil tel que Postman pour effectuer une requête GET
à l'URL http://localhost:3000/serviceA.
2. Vous devriez recevoir une réponse indiquant que le service A a reçu une réponse du service B.
3. Vérifiez la console de chaque service pour voir les messages de démarrage et les é
20/05/2023 5
TP2 :
Voici un exemple d'utilisation de deux microservices avec MongoDB. Dans cet exemple, nous aurons
un microservice principal qui expose des API CRUD pour interagir avec une base de données
MongoDB, et un microservice secondaire qui consomme ces API.
Microservice principal:
Étape 1: Configuration du projet Créez un nouveau répertoire pour votre microservice principal et
accédez-y. Ouvrez un terminal et exécutez la commande suivante pour initialiser un nouveau projet
Node.js :
npm init -y
Étape 2: Installation des dépendances Dans cet exemple, nous utiliserons Express.js comme
framework web, MongoDB comme base de données, et Mongoose comme bibliothèque d'ODM
(Object Data Modeling) pour interagir avec MongoDB. Installez-les en exécutant la commande
suivante :
Étape 3: Création du microservice principal Créez un nouveau fichier nommé main.js et ajoutez le
code suivant :
20/05/2023 6
}
});
// Écoute du serveur
app.listen(3000, () => {
console.log('Le microservice principal est en cours d\'exécution sur le port 3000');
});
Ce code crée une application Express qui définit deux endpoints : un endpoint POST pour créer un
utilisateur et un endpoint GET pour récupérer tous les utilisateurs. Le microservice principal se connecte
à une base de données MongoDB en utilisant Mongoose.
Microservice secondaire:
Le microservice secondaire peut consommer les API exposées par le microservice principal en utilisant
des requêtes HTTP vers les endpoints correspondants. Vous pouvez utiliser n'importe quelle
bibliothèque HTTP pour effectuer ces requêtes, comme Axios, Fetch, ou la bibliothèque intégrée http
de Node.js.
Voici un exemple d'utilisation d'Axios pour consommer les API du microservice principal :
Pour créer une base de données MongoDB, vous devez suivre ces étapes :
1. Assurez-vous d'avoir MongoDB installé et en cours d'exécution sur votre système. Si ce n'est
pas le cas, téléchargez MongoDB à partir du site officiel de MongoDB
(https://www.mongodb.com) et suivez les instructions d'installation spécifiques à votre
système d'exploitation.
2. Une fois MongoDB installé, ouvrez une nouvelle fenêtre de terminal ou une interface de ligne
de commande et exécutez la commande suivante pour démarrer le serveur MongoDB :
mongod
Cela lancera le serveur MongoDB et écoutera sur le port par défaut (27017).
20/05/2023 7
3. Ouvrez une autre fenêtre de terminal ou une interface de ligne de commande pour effectuer les
opérations de gestion de la base de données.
4. Dans cette nouvelle fenêtre de terminal, exécutez la commande suivante pour lancer l'interface
de ligne de commande de MongoDB : mongo
5. Maintenant, vous pouvez créer une nouvelle base de données en utilisant la commande use
suivie du nom de la base de données que vous souhaitez créer. Par exemple, pour créer une base
de données nommée "microservice-example", vous pouvez exécuter la commande suivante :
use microservice-example
Si la base de données n'existe pas déjà, MongoDB la créera automatiquement lorsque vous y insérerez
des données.
6. Vous pouvez maintenant effectuer des opérations CRUD (Create, Read, Update, Delete) sur
votre base de données. Par exemple, vous pouvez insérer des documents dans une collection
en utilisant la commande insertOne ou insertMany, lire les documents en utilisant la
commande find, mettre à jour les documents en utilisant la commande updateOne ou
updateMany, supprimer des documents en utilisant la commande deleteOne ou deleteMany,
etc.
Cela insérera un document avec les champs "name" et "email" dans la collection "users".
Ces étapes vous permettent de créer une base de données MongoDB et d'effectuer des opérations de
base sur celle-ci. Vous pouvez ensuite utiliser cette base de données avec votre microservice principal
en ajustant la chaîne de connexion MongoDB dans votre code.
un microservice principal qui expose une API pour gérer des utilisateurs, et un microservice
secondaire qui consomme cette API pour effectuer des opérations.
20/05/2023 8