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 et Kubernetes.
(17,5 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.
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
- Monolithe ou microservices: les critères de choix.
- Le domain driven design comme prérequis à une architecture microservices.
- La méthodologie 12 factors.
- Les types d'applications .NET: application web, worker.
- La containerisation: une solution d'isolation des applications.
- Kubernetes: un orchestrateur pour les conteneurs.
L'architecture microservices
- La délimitation des contextes (bounded contexts).
- La souveraineté sur les données.
- La communication entre microservices: synchrone vs asynchrone.
- Le principe smart endpoints, dumb pipes.
- La sécurité par jeton (JWT) et le single sign on.
- Les types de livrables: application autonome ou fonction serverless.
- 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 implémentations de Service discovery: Eureka, load balancer, DNS, Kubernetes: avantages et inconvénients.
- Le rôle des health checks.
- La mise en oeuvre du load balancing.
Mise en pratique: déploiement d'applications sur Kubernetes et application d'un mécanisme de service discovery.
Publish / subscribe avec le broker RabbitMQ
- Les types de messages: commands et events.
- Le rôle du broker dans une architecture microservices.
- Présentation de RabbitMQ.
- Les différents types d'exchanges.
- La souscription à un exchange.
- L'envoi de messages sur un exchange.
Mise en pratique: communication asynchrone entre microservices avec RabbitMQ.
L'exposition des microservices avec une API Gateway
- L'API Gateway comme point d'entrée à un ensemble de microservices.
- Les règles de routage.
- 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: Ingress, Ocelot.NET, Kubernetes Gateway.
Mise en pratique: création d'une API Gateway avec Kubernetes pour exposer les microservices développés précédemment.
La centralisation de la configuration et la protection des données sensibles
- Le stockage et la protection des propriétés sous forme de secrets et de configMaps.
- Les méthodes de cryptages des propriétés.
- La transmission des propriétés aux applications.
Mise en pratique: déclaration de secrets avec Kubernetes, utilisation de ces derniers dans les microservices.
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).