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)

En présentiel ou en classe virtuelle
En français ou en anglais
Public

Développeurs et développeuses .NET (C#), architectes

Accessible aux personnes en situation de handicap

Délai

Le cours peut être organisé dans un délai d'un mois.

Objectifs

A l'issue du cours vous saurez:

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

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
stateless
  • 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
kube-proxy
  • 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
North/south
  • 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
Broker
  • 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
kubectl apply
  • 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 et Service.
  • 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é
Otel
  • 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:

Contact

Questions, inscriptions, demande d'adaptation: