Jour 1 – Comprendre et concevoir une architecture micro-services
Objectifs du jour :
- Distinguer micro-services et architecture monolithique, identifier gains et pièges
- Définir les frontières d'un service à partir du métier
- Rédiger un contrat d'API versionné conforme aux standards REST/gRPC
Contenu :
- Architecture distribuée expliquée : scalabilité indépendante, tolérance aux pannes, exigences d'automatisation.
- Méthodes de découpe métier : Domain-Driven Design, Bounded Context ; critères de taille, couplage, fréquence de changement.
- Contrats d'interface : pourquoi publier un contrat (OpenAPI, gRPC proto) avant d'écrire le code ; version et compatibilité.
- Introduction à la documentation automatisée
- Mise en situation : analyse critique d'une architecture existante
- Choisir un domaine métier familier (ex. gestion d'événements, suivi de stocks, e-commerce).
- Identifier 3 à 4 micro-services logiques en appliquant les principes de découpe (responsabilité unique, faible couplage).
- Pour l'un des services, rédiger une première version de contrat d'API : principales opérations, structures de données échangées, versions…
- Générer un test de contrat
Jour 2 – Construire, sécuriser et rendre robustes les microservices
Objectifs du jour :
- Développer un service Spring Boot autonome et persistant.
- Sécuriser les échanges et gérer les défaillances réseau.
- Ecrire les tests unitaires, d'intégration et de contrat
Contenu :
- Service Spring Boot autonome : démarrage rapide, configuration externalisée, profils dev/test/prod, tests unitaires de contrôleur.
- Persistance indépendante : une base ou un schéma par service, transactions locales ; événements d'intégration (Kafka, RabbitMQ) pour la communication et la cohérence inter-services.
- Sécurité et résilience : API Gateway, JWT pour l'authentification centrale, time-outs, retries et circuit breakers (Resilience4j) pour éviter les cascades de panne.
- Tests : unitaires, d'intégration, contrat
- À partir du découpage précédent (ou d'un scénario fourni), développer un micro-service capable de créer, lire, mettre à jour et supprimer ses propres données.
- Mettre en place une couche de persistance dédiée, isolée des autres services.
- Ajouter un mécanisme d'authentification / autorisation et prévoir un dispositif de résilience (par ex. interruption contrôlée lorsqu'un appel externe échoue).
Jour 3 – Observabilité, déploiement continu et aide par l'IA
Objectifs du jour :
- Surveiller l'état des services et diagnostiquer les incidents
- Sécuriser les échanges et gérer les défaillances réseau.
- Conteneuriser un service et livrer vers un cluster
- Découvrir comment un LLM peut accélérer les tâches répétitives Devops ou qualité
Contenu :
- Observabilité « trois piliers » : logs structurés, métriques Prometheus, traces OpenTelemetry, visualisation Grafana pour remonter un parcours requête.
- Docker & Kubernetes simplifiés : image multi-stage, manifestes K8s/Helm, alternatives managées (AWS ECS, Azure Container Apps).
- Pipeline CI/CD : exemple GitHub Actions (build puis tests puis push image puis déploiement staging).
- IA pour la plateforme : exemple de prompt pour générer un test de contrat Pact ou un manifeste K8s, discussion sur biais et réglementation (RGPD) et prompt engineering encadré.
- Emballer le service du Jour 2 dans un format exécutable et portable.
- Rédiger un descriptif de déploiement permettant de lancer ce service dans un environnement orchestré (cluster ou plate-forme cloud).
- Activer la collecte de journaux, métriques et traces, suivre la requête de bout en bout et détecter une anomalie simple à corriger manuellement.