Concevoir une architecture microservices et la déployer avec Kubernetes
La mise en oeuvre d'une architecture microservices est le résultat de l'adoption de plusieurs principes: travail en petite équipe, domain driven design, intégration et livraison continue et scalabilité horizontale. En découlent de nouveaux patterns: bounded contexts, service discovery, échanges de messages asynchrones, API Gateway, gestion de configuration.
Ces patterns dépassent le domaine du développement et recoupent les pratiques agiles, DevOps, cloud ready. Ce cours vous permettra de les mettre en oeuvre avec ASP.NET, RabbitMQ (ou Kafka) et Kubernetes.
(21 heures)
Développeurs et développeuses .NET (C#), architectes
Accessible aux personnes en situation de handicap
DélaiLe cours peut être organisé dans un délai d'un mois.
Objectifs
A l'issue du cours vous saurez:- définir le périmètre métier d'un microservice;
- appliquer le principe de service discovery avec Kubernetes;
- exposer un ensemble de microservice avec une API Gateway;
- échanger des informations entre microservices avec RabbitMQ;
- externaliser la gestion de configuration et protéger les données sensibles avec Kubernetes;
- observer le fonctionnement en production avec OpenTelemetry et .NET Aspire.
Prérequis
Ce cours demande une connaissance solide des bases de la programmation C# (principes de la programmation orientée objet, types génériques, custom attribute, expressions lambda) et une habitude de travailler avec Visual Studio, VsCode ou Rider.
Méthodes pédagogiques
- Explication, pour chaque concept, du problème qu'il prétend résoudre.
- Mise en pratique d'un concept immédiatement après qu'il ait été présenté.
- Validation de chaque étape par exécution de tests unitaires.
- Exercice « fil rouge » pour obtenir en fin de cours une application complète.
- QCM en fin de chapitre pour s'assurer de l'acquisition des connaissances.
Programme détaillé
Introduction
- La définition des objectifs.
- Principes S.O.L.I.D. et autres bonnes pratiques.
- L'analyse du métier: domaine et sous domaines.
- Monolithe ou Microservices, les critères de choix.
- La méthodologie 15 factors.
- Présentation de .NET Aspire.
- La conteneurisation: une solution d'isolation des applications.
- Kubernetes: l'environnement d'exécution pour des conteneurs.
L'architecture microservices
- La délimitation des contextes (bounded contexts).
- Le traitement des commandes.
- L'API comme contrat, REST vs RPC
- Les données.
- La communication entre microservices
- La sécurité par jeton (JWT) et le single sign on.
- Les types de livrables: application web, worker.
- Les tests.
Mise en pratique: refactoring d'une application monolithe en microservices.
Service discovery
- Les défis posés par l'autoscaling et le zero downtime deployment.
- Les différentes implémentation: client side, server side, network side.
- Le rôle des health checks.
Mise en pratique: déploiement d'applications sur Kubernetes et application d'un mécanisme de service discovery.
L'exposition des microservices avec une API Gateway
- Le routage des requêtes.
- L'action de l'API Gateway sur les requêtes et les réponses (réessais, sécurité, etc...).
- L'agrégation de données.
- Les solutions disponibles, focus sur Kubernetes Gateway
Mise en pratique: création d'une API Gateway avec Kubernetes pour exposer les microservices développés précédemment.
Publish / subscribe avec un système de messagerie
- Introduction.
- Les mécanismes de réception des messages: push ou pull.
- Le routage des messages.
- L'ordre de livraison des messages.
- Accusé de réception et réessais.
- La priorisation.
- Points sensibles: parallélisation, first in first out, idempotence, exactly once delivery.
Mise en pratique: communication asynchrone entre microservices avec RabbitMQ ou Kafka.
Le déploiement sur Kubernetes
- Rappel des commandes .NET pour publier une application.
- La publication du SBOM.
- La création d'une image OCI.
- Présentation d'un cluster Kubernetes.
- Les descripteurs
Deployment
etService
. - La protection des données de configuration sensibles.
- Le cycle complet Continuous Integration (CI) + Continuous Delivery (CD).
Mise en pratique: installation de Minikube et déploiement d'images sous forme de conteneurs.
L'observabilité
- Les traces.
- Les logs.
- Les métriques.
- L'intégration avec Kubernetes.
- L'intégration de .NET Aspire avec OpenTelemetry.
Mise en pratique: mise en place de l'observabilité sur les microservices déployés précédemment.
Prix et financements
2 12
Réduction de 50% pour les associations reconnues d'utilité publique.
Sources de financements pour les organisations françaises:
- prise en charge tout ou partie du coût de la formation par votre opérateur de compétence (OPCO);
- Le dispositif FNE formation si votre organisation est éligible.
- Le plan de développement des compétences de votre entreprise (renseignez-vous auprès de votre service RH).