Read in English · Leer en español · Auf Deutsch lesen
Chapitre 10 sur 12 · Intermédiaire à avancé
Architecture cloud native et d’infrastructure
L’endroit où un logiciel s’exécute, et la manière dont il s’exécute, sont désormais une décision d’architecture. Ce chapitre traite des modèles de services et de déploiement cloud et du modèle de responsabilité partagée, des conteneurs et de Kubernetes, de l’application douze facteurs, de l’infrastructure en tant que code et de GitOps, des pipelines CI/CD et des stratégies de déploiement, de la conception multirégion, de la reprise après sinistre et de l’edge computing, de l’ingénierie de plateforme, ainsi que du FinOps et de la dépendance au fournisseur. Il s’adresse aux développeurs et aux architectes qui connaissent les qualités opérationnelles du chapitre 9 et veulent choisir, justifier et exploiter les plateformes dont dépendent leurs systèmes, sans se laisser vendre une pile toute faite.
Introduction vidéo au chapitre 10
7 min · narré en anglais, avec sous-titresÉcouter seulement (audio)
Lire la transcription
Bienvenue dans le chapitre 10 : Architecture cloud native et d’infrastructure. Pendant la plus grande partie de l’histoire du logiciel, l’infrastructure venait après l’architecture : une équipe d’exploitation recevait une application terminée et trouvait des serveurs pour la faire tourner. Cette séparation a disparu. Aujourd’hui, le choix entre machines virtuelles, conteneurs, plateformes et fonctions détermine une grande partie du coût. Le nombre de zones de disponibilité et de régions détermine la disponibilité. Et le pipeline de déploiement détermine à quelle vitesse et avec quelle sécurité une équipe peut changer quoi que ce soit.
Ce chapitre s’adresse aux développeurs et aux architectes qui veulent choisir, justifier et exploiter les plateformes dont dépendent leurs systèmes, sans se laisser vendre une pile toute faite. Il s’appuie sur le chapitre 0, qui a présenté les serveurs, les machines virtuelles, les conteneurs, les modèles de services cloud, les régions et les zones de disponibilité, et sur le chapitre 9, qui a expliqué comment faire passer les systèmes à l’échelle, les faire se dégrader gracieusement et les garder observables. Ici, ces idées rencontrent les plateformes sur lesquelles tournent aujourd’hui la plupart des systèmes. Les décisions sur l’endroit et la manière dont un logiciel s’exécute coûtent cher à défaire, elles concernent toutes les équipes, et elles fixent les attributs de qualité que le chapitre 2 vous a demandé de spécifier. Et le chapitre 11 suivra, avec la manière de juger une architecture, infrastructure comprise, et de la faire évoluer sans risque dans le temps.
L’exemple récurrent est la plateforme de livraison de repas utilisée tout au long du cours : applications pour les clients et les restaurants, service des commandes, cartes, paiements, affectation des livreurs, et un coup de feu du soir très marqué. Les quatre premières sections portent sur les fondations. La section dix point un établit qui gère quoi, de l’infrastructure en tant que service, ou IaaS, jusqu’au SaaS, en passant par le PaaS et les fonctions. Dans le modèle de responsabilité partagée, vos données, vos identités et votre configuration restent toujours votre affaire. La section dix point deux explique les images de conteneurs, le plan de contrôle et les nœuds de Kubernetes, et la boucle de réconciliation qui en est le cœur. Elle dit aussi franchement quand Kubernetes est surdimensionné. La section dix point trois passe en revue les douze facteurs de l’application douze facteurs, avec leurs limites actuelles, et montre comment auditer un service existant à leur aune. La section dix point quatre traite de l’infrastructure en tant que code : outils déclaratifs, état et dérive, modules, infrastructure immuable, GitOps, politiques en tant que code et tests.
L’idée la plus importante de ce chapitre est celle d’un état souhaité déclaré, réconcilié en continu par l’automatisation. Ce diagramme de la section dix point deux montre comment Kubernetes s’y prend. Vous déclarez l’état souhaité. Ici, trois répliques de la version deux point quatre du service des commandes. Un contrôleur observe l’état réel du cluster, et ne trouve que deux pods en cours d’exécution. Il compare ce qu’il voit avec ce qui a été déclaré, et constate qu’il manque un pod. Il agit donc, et demande un nouveau pod. La boucle se répète à chaque événement de changement, et périodiquement. Comme il agit sur la différence actuelle, et non sur une suite d’événements mémorisée, les événements manqués et les redémarrages ne causent aucun dommage durable. La même idée se retrouve dans le code d’infrastructure, GitOps, les pipelines de déploiement et l’infrastructure immuable. Une personne modifie une description, qui est revue, versionnée et auditable, et les machines font le reste.
Les quatre sections suivantes portent sur le changement, l’échelle, les personnes et l’argent. La section dix point cinq suit un changement du commit jusqu’à la production à travers un pipeline CI/CD, compare les déploiements progressifs, bleu-vert, canari et fantômes, et sépare le déploiement de la mise en production grâce aux feature flags. La section dix point six compare les stratégies de reprise après sinistre, explique ce que la réplication des données entre régions fait à la cohérence, et traite de l’architecture cellulaire et des fonctions en périphérie. La section dix point sept traite la plateforme interne de développement comme un produit, avec des golden paths et des garde-fous, et montre comment mesurer si elle aide. Et la section dix point huit fait du coût une qualité architecturale, mesurée par commande, et traite la dépendance au fournisseur comme un compromis à chiffrer plutôt que comme un péché à éviter.
La seconde idée est que chaque option de ce chapitre est un compromis. Ce diagramme de la section dix point six montre côte à côte quatre stratégies de reprise après sinistre. Chacune se juge à deux chiffres fixés par le métier : l’objectif de temps de reprise, ou RTO, c’est-à-dire combien de temps vous pouvez être indisponible, et l’objectif de point de reprise, ou RPO, c’est-à-dire combien de données vous pouvez perdre. Avec la sauvegarde et restauration, les sauvegardes sont copiées dans une région de reprise où rien ne tourne. La reprise prend des heures, et vous perdez tout ce qui a suivi la dernière sauvegarde. Avec le pilot light, ou veilleuse, les données sont répliquées mais les serveurs d’application sont éteints. Avec le warm standby, ou secours tiède, une petite copie fonctionnelle tourne déjà et monte en charge. Le temps de reprise tombe à quelques dizaines de minutes, puis à quelques minutes. Avec l’actif-actif, une seconde région complète sert déjà du trafic, et les deux chiffres sont proches de zéro. Chaque pas vers la droite achète une reprise plus rapide et moins de pertes de données, au prix d’un coût permanent et d’une complexité plus élevés. Le bon choix dépend de la charge de travail et de l’organisation.
À la fin du chapitre, vous saurez comparer les modèles de services et de déploiement cloud, et répartir les responsabilités d’une charge de travail selon le modèle de responsabilité partagée. Vous comprendrez comment Kubernetes maintient un état souhaité déclaré, et vous saurez juger quand il est surdimensionné. Vous saurez choisir entre déploiements progressifs, bleu-vert, canari et fantômes, et utiliser les feature flags pour séparer le déploiement de la mise en production. Et vous saurez calculer des coûts unitaires, comme le coût par commande, et évaluer la dépendance au fournisseur comme un compromis chiffré.
Chaque section peut se lire seule, mais l’ordre est voulu. On ne peut pas raisonner sur les stratégies de déploiement sans savoir ce que fait Kubernetes pendant un déploiement. Si l’exploitation est nouvelle pour vous, lisez d’abord les encadrés pour débutants, ainsi que la section du chapitre 0 sur les serveurs et le cloud. Ne cherchez pas à mémoriser les noms d’outils. Les produits changent tous les quelques ans, alors que les mécanismes durent. Les fournisseurs sont cités à titre d’exemples, non de recommandations. À la fin de chaque section, vous trouverez des questions d’autoévaluation. Répondez-y de tête avant de regarder les réponses. Comptez environ trois heures pour lire tout le chapitre. Quand vous serez prêt, un test facultatif du chapitre vous attend, d’environ quarante-cinq minutes, avec vingt questions à choix multiples et deux réponses rédigées. La note de réussite est de quatre-vingts pour cent.
Voilà la structure du chapitre. Commencez par la section dix point un, sur les modèles de services et de déploiement cloud, et sur qui est responsable de quoi. À très vite.
En un coup d’œil
Vous apprendrez à
- Comparer IaaS, CaaS, PaaS, FaaS et SaaS ainsi que les modèles de déploiement, et répartir les obligations relatives à une charge de travail selon le modèle de responsabilité partagée.
- Expliquer comment Kubernetes maintient un état souhaité déclaré grâce à son plan de contrôle, à ses nœuds et à ses boucles de réconciliation, configurer les requêtes, les limites et les sondes, et juger quand Kubernetes est surdimensionné pour le besoin.
- Auditer une application au regard des douze facteurs et des principes qui vont au-delà, et prioriser les corrections selon le risque.
- Concevoir du code d’infrastructure avec un état distant, du verrouillage, des modules, des environnements, des contrôles de politiques, des tests et une réconciliation GitOps.
- Choisir une stratégie de déploiement (progressif, bleu-vert, canari ou fantôme) et séparer le déploiement de la mise en production grâce aux feature flags.
- Choisir une stratégie de reprise après sinistre en fonction du RTO, du RPO et du coût, et expliquer les conséquences de la réplication des données entre régions et du déplacement de traitements vers la périphérie (edge).
- Expliquer comment une plateforme interne de développement dotée de golden paths réduit la charge cognitive, et comment mesurer si elle réussit.
- Calculer des coûts unitaires comme le coût par commande, identifier les facteurs architecturaux du coût du cloud et évaluer la dépendance au fournisseur comme un compromis chiffré.
Avant de commencer
Chapitre 0, section 0.7 (les serveurs et le cloud) et section 0.8 (comment se construit un logiciel) ; chapitre 9, en particulier le passage à l’échelle, l’absence d’état, les SLO et l’observabilité. Le chapitre 6 sur les systèmes distribués est utile.
Durée
Environ 3 heures de lecture ; 45 minutes pour le test.
Termes clés
cloud native · modèle de responsabilité partagée · zone de disponibilité · image de conteneur · Kubernetes · boucle de réconciliation · application douze facteurs · infrastructure en tant que code · GitOps · canary release (déploiement canari) · RTO et RPO · golden path (chemin balisé) · FinOps · dépendance au fournisseur (lock-in)
Pourquoi l’infrastructure est devenue de l’architecture
Pendant la plus grande partie de l’histoire du logiciel, l’infrastructure venait après l’architecture : une équipe d’exploitation recevait une application terminée et trouvait des serveurs pour la faire tourner. Cette séparation a disparu. Dans un système moderne, le choix entre machines virtuelles, conteneurs, plateformes et fonctions détermine une grande partie du coût ; le nombre de zones de disponibilité et de régions détermine la disponibilité ; le pipeline de déploiement détermine à quelle vitesse et avec quelle sécurité une équipe peut changer quoi que ce soit ; et l’infrastructure elle-même est écrite sous forme de code, revue dans des pull requests et versionnée avec l’application. Les décisions sur l’endroit et la manière dont un logiciel s’exécute comptent désormais parmi les plus significatives que prend un architecte, exactement au sens du chapitre 1 : elles coûtent cher à défaire, elles concernent toutes les équipes et elles fixent les attributs de qualité que le chapitre 2 vous a demandé de spécifier.
Ce chapitre s’appuie sur deux chapitres précédents. Le chapitre 0 a présenté les serveurs, les machines virtuelles, les conteneurs, les modèles de services cloud, les régions et les zones de disponibilité (les serveurs et le cloud). Le chapitre 9 a expliqué comment faire passer les systèmes à l’échelle, les faire se dégrader gracieusement et les garder observables (à partir des stratégies de passage à l’échelle). Ici, ces idées rencontrent les plateformes sur lesquelles tournent aujourd’hui la plupart des systèmes. L’exemple récurrent est la plateforme de livraison de repas utilisée tout au long du cours : applications pour les clients et les restaurants, service des commandes, cartes, paiements, affectation des livreurs et un coup de feu du soir très marqué.
Comment les sections s’articulent
Les quatre premières sections portent sur les fondations. Modèles de services et de déploiement cloud établit qui gère quoi en IaaS, en conteneurs en tant que service, en PaaS, en FaaS et en SaaS, présente le modèle de responsabilité partagée, les vraies raisons du cloud privé, hybride et du multicloud, ce que la CNCF entend par cloud native, et les cas où louer ne revient pas moins cher que posséder. Conteneurs et orchestration explique les images et les normes OCI, le plan de contrôle et les nœuds de Kubernetes, ses objets de base et la boucle de réconciliation qui en est le cœur, avec du vrai YAML, et dit franchement quand Kubernetes est surdimensionné. L’application douze facteurs passe en revue les douze facteurs avec leurs limites actuelles, les principes qui vont au-delà, et l’audit d’un service existant. Infrastructure en tant que code traite des outils déclaratifs (Terraform, OpenTofu, CloudFormation, Bicep, Pulumi), de l’état, de la dérive, des modules, de l’infrastructure immuable, de GitOps, des politiques en tant que code et des tests.
Les quatre sections suivantes portent sur le changement, l’échelle, les personnes et l’argent. Pipelines CI/CD et stratégies de déploiement suit un changement du commit jusqu’à la production, compare les déploiements progressifs, bleu-vert, canari et fantômes, et sépare le déploiement de la mise en production grâce aux feature flags. Multirégion, reprise après sinistre et edge computing compare les stratégies de reprise après sinistre selon le RTO, le RPO et le coût, explique les conséquences de la réplication des données entre régions sur la cohérence, et traite de l’architecture cellulaire et des fonctions en périphérie. Ingénierie de plateforme traite la plateforme interne de développement comme un produit, avec des golden paths et des garde-fous, et montre comment mesurer si elle aide. FinOps, architecture des coûts et dépendance au fournisseur fait du coût une qualité architecturale, mesurée par commande, et traite la dépendance au fournisseur comme un compromis à chiffrer plutôt que comme un péché à éviter.
Chaque section peut se lire seule, mais l’ordre est voulu : on ne peut pas raisonner sur les stratégies de déploiement sans savoir ce que fait Kubernetes pendant un déploiement, ni sur l’ingénierie de plateforme sans code d’infrastructure ni pipelines à partir desquels construire la plateforme.
Une idée traverse toutes les sections
L’idée la plus importante de ce chapitre est celle d’un état souhaité déclaré, réconcilié en continu par l’automatisation. Kubernetes maintient le nombre de copies en cours d’exécution égal au nombre que vous avez déclaré. Le code d’infrastructure décrit les réseaux et les bases de données, et un outil calcule puis applique la différence avec ce qui existe. GitOps maintient le cluster identique à ce que contient un dépôt Git. Un pipeline de déploiement transforme chaque changement en une même suite d’étapes, testée et reproductible. L’infrastructure immuable remplace au lieu de réparer. Dans chaque cas, une personne modifie une description, qui est revue, versionnée et auditable, et les machines font le reste. C’est ce qui permet à une petite équipe d’exploiter un grand système en toute sécurité : le changement devient routinier, et le rétablissement devient une simple réexécution plutôt qu’un acte d’héroïsme.
La seconde idée est que chaque option proposée dans ce chapitre est un compromis, et que le bon choix dépend de la charge de travail et de l’organisation. Kubernetes est excellent pour de nombreux services et de nombreuses équipes, et un gaspillage pour trois services et deux développeurs. L’actif-actif multirégion achète des minutes de temps de reprise pour un multiple du coût. Une équipe plateforme n’aide que si les développeurs veulent ce qu’elle construit. Le cloud est le moins cher pour une charge variable et peut être battu par du matériel en propre pour une charge importante et régulière. La dépendance au fournisseur est un coût à mettre en balance avec le coût de la portabilité. Le chapitre vous donne donc des guides de décision, des exemples commentés chiffrés et les arguments des deux camps, plutôt qu’une pile unique recommandée.
Comment utiliser ce chapitre
Si l’exploitation est nouvelle pour vous, lisez d’abord les encadrés pour débutants et la section du chapitre 0 sur les serveurs et le cloud, et ne cherchez pas à mémoriser les noms d’outils : les produits changent tous les quelques ans, alors que les mécanismes (réconciliation, immuabilité, état et dérive, livraison progressive, objectifs de reprise, coûts unitaires) durent. Les ingénieurs expérimentés voudront peut-être commencer par les exemples commentés et les guides de décision, puis lire les sections dont ils contestent les compromis. Tout au long du chapitre, des fournisseurs comme AWS, Microsoft Azure, Google Cloud et Cloudflare sont cités à titre d’exemples, non de recommandations.
Le chapitre 11 traite ensuite de l’évaluation, de la gouvernance et de la modernisation : comment juger une architecture, infrastructure comprise, et comment la faire évoluer sans risque dans le temps.
Les 8 sections
Test du chapitre
Vérifiez votre compréhension du chapitre 10
Facultatif : 20 questions à choix multiples et 2 courtes réponses rédigées, tirées à chaque fois d’une banque de 72 questions. Note de réussite : 80 %. Réussir tous les tests de chapitre, puis l’évaluation finale, donne droit au Certificat de fin de formation Be Wise.
Passer le test du chapitre 10 dans l’appLectures complémentaires
- The NIST Definition of Cloud Computing (SP 800-145), Peter Mell and Timothy Grance (2011), National Institute of Standards and Technology. La définition courte et largement citée des caractéristiques essentielles, des modèles de services et des modèles de déploiement.
- The Twelve-Factor App, Adam Wiggins (2011), 12factor.net (Heroku; community-maintained since 2024). Douze pratiques concises pour des applications déployables et scalables ; elles restent le vocabulaire commun de la conception d’applications cloud native.
- Kubernetes: Up and Running (3rd edition), Brendan Burns, Joe Beda, Kelsey Hightower and Lachlan Evenson (2022), O'Reilly Media. Une introduction claire aux objets et à l’exploitation de Kubernetes, par des personnes qui ont contribué à le créer.
- Infrastructure as Code (3rd edition), Kief Morris (2025), O'Reilly Media. L’ouvrage de référence sur la conception, le test et la livraison du code d’infrastructure, indépendamment de tout outil particulier.
- Continuous Delivery, Jez Humble and David Farley (2010), Addison-Wesley. Le texte fondateur sur les pipelines de déploiement, le principe « build once, deploy many » et la banalisation des mises en production.
- Accelerate: The Science of Lean Software and DevOps, Nicole Forsgren, Jez Humble and Gene Kim (2018), IT Revolution. La recherche à l’origine des métriques DORA, qui relie les pratiques de livraison et une architecture faiblement couplée à la performance des organisations.
- Site Reliability Engineering: How Google Runs Production Systems, Betsy Beyer, Chris Jones, Jennifer Petoff and Niall Richard Murphy (eds) (2016), O'Reilly Media (free online). Comment un grand opérateur exploite ses systèmes grâce à l’automatisation, aux budgets d’erreur et à l’ingénierie des mises en production.
- Don't get locked up into avoiding lock-in, Gregor Hohpe (2019), martinfowler.com. Une analyse équilibrée des différentes formes de dépendance au fournisseur et du coût réel de leur évitement.