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)

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
  • 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
stateless
  • 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
kube-proxy
  • 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
Broker
  • 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
North/south
  • 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
AES
  • 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:

Contact

Questions, inscriptions, demande d'adaptation: