Application de microservice développée avec NestJs et déployée sur kubernetes
Prérequis et outil
- Porteur
- Battement
- Compte Azure
- Kubernetes
- Terraforme
- Barre
- Prométhée
- Grafana
- ArgoCD
- OpenTelemetry
Koultime est une application mobile qui permet de trouver votre meilleur plat et de le commander en ligne.
L’extrémité avant:
- Application mobile développée avec flutter
Back-end :
- Application de microservice développée avec Nest.js
Les raisons du choix de l’architecture de microservice sont :
- La flexibilité d’ajouter de nouveaux services
- La possibilité de faire évoluer le service des commandes indépendamment chaque fois que nous avons beaucoup de demande
Prestations de service :
Architecture
Déploiement
-
Le client ne pouvait communiquer qu’avec la passerelle api : nous devrions exposer une adresse IP publique
-
Pour les microservices, nous ne devrions autoriser que le trafic de la passerelle API
-
Les différentes applications sont isolées dans leurs espaces de noms (auxquelles nous donnons la possibilité d’avoir du multi env)
-
La connexion à la base de données est établie via la chaîne de connexion (fournie par mongodb atlas) et stockée dans un secret
-
J’ai utilisé des cartes de configuration pour stocker le nom des services qui seront utilisés par la passerelle api pour envoyer des requêtes aux microservices
Suivi de la santé de la charge de travail
/health
est la voie responsable du retour de la santé du pod mis en œuvre à l’aide terminus forfait.
livenessprobe est ajouté à la définition de déploiement afin de suivre la santé en fonction de la réponse de /health
Barre
J’ai créé des graphiques helm avec un fichier de valeurs pour chaque microservice.
Consultez les graphiques Ici
J’ai utilisé les cartes de prometheus et grafana pour le suivi.
Automatisation
Le provisioning du cluster est fait par le premier stack de Terraform Le provisioning de la release helm d’argocd est fait par le second stack de Terraform
Le déploiement est automatisé à l’aide d’argoCD
Visualisation réseau de la passerelle API
Arbre de la passerelle API
Arbre du microservice de commande
Surveillance
Métrique
-
Les différentes métriques sont définies à l’aide de prometheus :
- utilisation du processeur, utilisation de la mémoire, nombre de requêtes…
-
Une métrique commerciale est appelée ordres est celui qui est chargé de compter le nombre de commandes demandées
Nous pouvons visualiser les différentes métriques à l’aide de Grafana :
Journaux
Utilisé Nest.js logger pour collecter les journaux.
Tester le projet
Make sure that you have all the tools installed
- Cloner le projet
- Sous le scénario dossier vous trouverez des scripts
- exécuter init_tf.bash
- se connecter au cluster
- exécuter init_helm.bash
GitHub
Voir Github