Be Software Architecture Wise
Be Wise Apps

Read in English · Leer en español · Auf Deutsch lesen

Section 0.7 sur 0.8 · Débutant · 18 min de lecture

Serveurs, systèmes d’exploitation, machines virtuelles, conteneurs et services cloud

Leçon vidéo

5 min · narré en anglais, avec sous-titres
Écouter seulement (audio)
Lire la transcription

Chaque app que vous utilisez tourne quelque part : sur un serveur, dans un centre de données et, de plus en plus souvent, dans le cloud. La plupart des organisations louent désormais leur puissance de calcul au lieu d’acheter leurs propres machines, un peu comme les foyers achètent l’électricité au réseau au lieu de faire tourner un groupe électrogène.

Un serveur, c’est simplement un ordinateur dont le travail est d’attendre des requêtes et d’y répondre. Le mot désigne un rôle, pas un type particulier de machine. Le matériel d’un serveur comporte les mêmes éléments que n’importe quel ordinateur, mais il est conçu pour tourner pendant des années : de nombreux cœurs de processeur, des alimentations et des disques de secours, et ni écran ni clavier. Les serveurs vivent dans des centres de données : des bâtiments remplis de baies, avec refroidissement, alimentation de secours par batteries et groupes électrogènes, et une sécurité stricte. Exploiter les siens, c’est acheter des machines des mois avant d’en avoir besoin, deviner combien il en faut, et les payer qu’elles travaillent ou non. C’est le problème que le cloud a voulu résoudre.

Un serveur qui ne fait tourner qu’une seule application reste la plupart du temps inactif. Une machine virtuelle, ou VM, permet à une machine physique de se faire passer pour plusieurs. Une couche logicielle appelée hyperviseur répartit le matériel réel entre les machines virtuelles et les tient séparées, si bien qu’un plantage ou une attaque dans l’une n’atteint pas les autres. Chaque machine virtuelle exécute son propre système d’exploitation complet, appelé l’invité. Cela donne une isolation forte, mais chacune occupe des gigaoctets et met des minutes à démarrer. Un conteneur emballe une application avec tout ce dont elle a besoin, comme ses bibliothèques et ses réglages, pour qu’elle fonctionne de la même façon sur un ordinateur portable ou dans le cloud. Cela règle la vieille excuse : « ça marche sur ma machine ». Les conteneurs partagent le noyau du système d’exploitation de l’hôte : ils occupent donc des mégaoctets et démarrent en quelques secondes. La contrepartie est une isolation plus faible, c’est pourquoi les fournisseurs de cloud font couramment tourner les conteneurs à l’intérieur de machines virtuelles.

Le cloud computing, c’est louer de la puissance de calcul via internet, à la demande, auprès d’un fournisseur qui exploite d’immenses centres de données. Amazon Web Services, Microsoft Azure et Google Cloud sont les plus grands. Vous créez vous-même les ressources, en quelques minutes. De nombreux clients partagent le matériel du fournisseur. La capacité augmente et diminue rapidement, et vous payez ce que vous utilisez. Une start-up peut louer cent serveurs pour un après-midi, puis les rendre. Il y a toutefois un nouveau risque : des coûts qui grimpent sans bruit, car rien n’empêche quiconque de créer des ressources et de les oublier.

Les services cloud se distinguent par la part que le fournisseur gère pour vous. Pensez à la pizza : la faire maison, en cuire une toute prête, se la faire livrer ou aller au restaurant. Avec l’infrastructure en tant que service, vous louez des machines virtuelles, et vous gérez toujours le système d’exploitation et tout ce qui se trouve au-dessus. Avec la plateforme en tant que service, vous ne fournissez que votre code et vos données. La plateforme s’occupe des serveurs, des correctifs et de la mise à l’échelle. Serverless ne veut pas dire qu’il n’y a pas de serveurs ; simplement, vous ne les voyez jamais. Vous envoyez des fonctions, et vous payez à l’appel. C’est bon marché pour un trafic en pics, mais le premier appel après une période calme peut être lent. Et le logiciel en tant que service, c’est un logiciel fini que vous utilisez, tout simplement. Quel que soit votre choix, vous restez toujours responsable de vos propres données, de vos accès et de vos réglages.

Les fournisseurs regroupent leurs centres de données par zone géographique. Une région est une zone, comme l’Irlande ou Francfort. Elle contient plusieurs zones de disponibilité : des centres de données physiquement séparés, avec leur propre alimentation, leur propre refroidissement et leur propre réseau. Ici, un équilibreur de charge répartit les requêtes des utilisateurs entre des copies de l’application situées dans deux zones. La base de données principale, dans la zone un, tient une copie de secours dans la zone deux. Si un incendie ou une panne de courant met une zone hors service, le service continue de fonctionner. Et un réseau de diffusion de contenu garde des copies des images, des scripts et des vidéos dans des emplacements proches des utilisateurs : les pages se chargent plus vite et les serveurs traitent bien moins de requêtes.

Assemblons tout cela. Une petite chaîne de théâtres vend des billets en ligne. Le trafic est faible la majeure partie de la semaine, mais quand un spectacle populaire est mis en vente, dix fois plus de personnes arrivent en quelques minutes. Une seule machine virtuelle louée, c’est simple et bon marché. Mais le jour de la mise en vente, elle est submergée, et si elle tombe en panne, le site est hors service. Passer à une machine plus grosse, c’est ce qu’on appelle la scalabilité verticale. Cela n’exige aucune modification du code, mais le théâtre paie cette grosse machine toute la semaine, pour couvrir quelques heures de pointe. La scalabilité horizontale, c’est ajouter des copies derrière un équilibreur de charge. La plateforme ajoute des copies le jour de la mise en vente et les retire ensuite. Mais le logiciel doit être conçu pour cela : la requête suivante d’un utilisateur peut aboutir sur une autre copie. Enfin, une base de données managée avec une base de secours dans une autre zone, et un réseau de diffusion de contenu pour les photos. Cela coûte plus cher à mettre en place, mais survit à la fois à un pic de trafic et à la perte d’un centre de données.

L’endroit où s’exécute un logiciel est désormais une décision d’architecture, qui façonne le coût, la vitesse de livraison et ce qui se passe en cas de panne. La section complète en dit beaucoup plus. Ensuite, dans la section zéro point huit, nous verrons comment se construit un logiciel.

Ce qu’il faut savoir

Un serveur n’est qu’un ordinateur qui sert

Un serveur est un ordinateur dont le travail consiste à attendre des requêtes et à y répondre : pages web, appels d’API, requêtes de base de données, fichiers. Le mot désigne un rôle, pas un type particulier de machine. Un ordinateur portable qui fait tourner une petite application web est un serveur tant qu’il répond à des requêtes ; une machine montée en baie dans un centre de données est un serveur parce qu’elle ne fait jamais rien d’autre. Le même mot désigne aussi le programme qui sert (un « serveur web » comme nginx) : le contexte compte donc.

Le matériel d’un serveur comporte les mêmes éléments que n’importe quel ordinateur (voir ce qu’est un logiciel) : processeurs, mémoire, stockage et cartes réseau. La différence tient aux priorités. Les serveurs ont généralement de nombreux cœurs de processeur, beaucoup de mémoire, des alimentations et des disques redondants pour qu’une pièce défaillante n’arrête pas la machine, une administration à distance pour que personne n’ait besoin d’être dans la salle, et ni écran ni clavier. Ils sont conçus pour fonctionner pendant des années sans être éteints.

La plupart des serveurs d’internet fonctionnent sous Linux ou un autre système d’exploitation de type Unix ; Windows Server est courant dans les organisations qui s’appuient sur les produits Microsoft. Un système d’exploitation de serveur remplit les mêmes tâches que celui de votre ordinateur portable (exécuter des processus, gérer la mémoire et les fichiers, communiquer avec le réseau), mais il est généralement administré en ligne de commande, par une connexion à distance, et configuré pour pouvoir être reconstruit automatiquement plutôt qu’à la main.

Les centres de données : là où vivent les serveurs

Les serveurs sont installés dans un centre de données : un bâtiment conçu autour de leurs besoins. Des milliers de machines y sont rangées dans des baies, refroidies par air ou par liquide, car elles transforment presque toute leur électricité en chaleur. Le courant arrive par plusieurs alimentations, secourues par des batteries pendant les premières secondes d’une coupure, puis par des groupes électrogènes diesel. Les connexions réseau proviennent de plusieurs opérateurs. Les portes exigent un badge, et souvent une empreinte digitale.

Une organisation peut exploiter son propre centre de données ou louer de l’espace en baie dans celui de quelqu’un d’autre (on parle de colocation) ; avant 2006 environ, c’était presque le seul choix possible. Exploiter soi-même ses serveurs (sur site) signifie acheter des machines des mois avant d’en avoir besoin, deviner combien il en faudra, les payer qu’elles soient occupées ou inactives, et employer des personnes pour remplacer les disques en panne en pleine nuit. Ce coût et ce manque de souplesse sont le problème que le cloud a voulu résoudre.

Les machines virtuelles : plusieurs ordinateurs dans un seul

Un serveur typique reste la plupart du temps inactif s’il ne fait tourner qu’une seule application. Une machine virtuelle (VM) permet à une machine physique de se faire passer pour plusieurs. Chaque VM se croit un ordinateur complet, avec ses propres processeurs, sa mémoire, son disque et sa carte réseau, et exécute son propre système d’exploitation, appelé invité. Une couche logicielle appelée hyperviseur répartit le matériel réel entre les VM et les tient séparées, de sorte qu’un plantage ou une attaque dans l’une n’atteint pas les autres. Certains hyperviseurs s’exécutent directement sur le matériel (VMware ESXi, Microsoft Hyper-V, KVM, qui fait partie de Linux) ; d’autres s’exécutent comme une application sur un système d’exploitation ordinaire (VirtualBox).

La virtualisation a changé l’économie des serveurs. Une seule machine peut accueillir de nombreuses VM appartenant à différentes équipes ou à différents clients. Une VM est un ensemble de fichiers : on peut donc la copier, la sauvegarder, la déplacer vers une autre machine et la créer en quelques minutes, au lieu de la commander et d’attendre sa livraison. Notez qu’il s’agit d’un autre sens de « machine virtuelle » que les VM de langage, comme la Java Virtual Machine évoquée dans ce qu’est un logiciel : les VM de langage exécutent des programmes, celles dont nous parlons ici imitent des ordinateurs entiers.

Les conteneurs : livrer l’application avec tout ce dont elle a besoin

Tout développeur a déjà entendu « ça marche sur ma machine ». Le programme dépend d’une version précise du langage, de bibliothèques précises et de réglages précis, et le serveur en a de légèrement différents. Un conteneur résout ce problème en emballant une application avec tout ce dont elle a besoin pour s’exécuter (son environnement d’exécution, ses bibliothèques, sa configuration) dans une unité standard qui fonctionne de la même façon sur un ordinateur portable, sur un serveur de test ou dans le cloud. Le nom vient des conteneurs maritimes : des boîtes standard que n’importe quelle grue, n’importe quel navire ou camion peut manipuler sans savoir ce qu’elles contiennent.

Le paquet est une image de conteneur : un fichier en lecture seule et versionné, construit à partir d’une courte recette (avec Docker, un Dockerfile). Une copie en cours d’exécution d’une image est un conteneur. Docker, sorti en 2013, a rendu cela praticable pour les développeurs au quotidien, et son format d’image est aujourd’hui un standard ouvert maintenu par l’Open Container Initiative, si bien que d’autres outils peuvent construire et exécuter les mêmes images.

La différence essentielle avec une VM tient à ce qui est partagé. Une VM imite du matériel et exécute un système d’exploitation invité complet. Un conteneur est un processus isolé : il partage avec d’autres conteneurs le noyau du système d’exploitation de l’hôte (le cœur du système d’exploitation, qui contrôle le matériel, la mémoire et les processus), et les fonctions d’isolation du noyau lui donnent sa propre vue des fichiers, des processus et du réseau. Les conteneurs démarrent donc en quelques secondes ou moins et occupent des mégaoctets plutôt que des gigaoctets : des dizaines peuvent tourner là où quelques VM tiendraient. La contrepartie est une isolation plus faible, car tous les conteneurs dépendent d’un seul noyau partagé ; c’est pourquoi les fournisseurs de cloud font couramment tourner les conteneurs de leurs clients à l’intérieur de VM, combinant ainsi les deux.

Comparaison des machines virtuelles et des conteneurs

Chaque VM porte un système d’exploitation invité complet sur un hyperviseur ; les conteneurs partagent le noyau de l’hôte via un runtime de conteneursMach. virtuellesConteneursApp AApp BApp CBiblioth.Biblioth.Biblioth.OS invitéOS invitéOS invitéHyperviseurOS hôte (ou aucun : hyperviseur bare-metal)Matériel serveur physiqueApp AApp BApp CBiblioth.Biblioth.Biblioth.Runtime conteneursOS hôte avec un noyau partagéServeur physique ou VMsans OS invité par conteneurChaque VM a son OS complet :isolation forte, gigaoctets, minutesConteneurs = processus isolés :légers, mégaoctets, secondes
Les VM virtualisent le matériel et chacune embarque un système d’exploitation ; les conteneurs virtualisent le système d’exploitation et en partagent le noyau.
# Start from an image that already has Python installed
FROM python:3.12-slim
WORKDIR /app
# Bake the libraries into the image
COPY requirements.txt .
RUN pip install -r requirements.txt
# Add the application code
COPY . .
EXPOSE 8000
CMD ["python", "-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Un Dockerfile complet pour une petite API web en Python. La commande docker build transforme cette recette en image.

Faire tourner un conteneur est facile. En faire tourner des centaines sur des dizaines de machines, redémarrer ceux qui plantent, ajouter des copies quand le trafic augmente et déployer de nouvelles versions sans interruption de service ne l’est pas. Ce travail revient à un orchestrateur, dont Kubernetes est le plus connu ; il est traité dans conteneurs et orchestration.

Le cloud : louer de la puissance de calcul à la minute

Le cloud computing (informatique en nuage) consiste à louer des ressources informatiques via internet, à la demande, auprès d’un fournisseur qui exploite d’immenses centres de données : Amazon Web Services (AWS), Microsoft Azure et Google Cloud sont les plus grands, parmi beaucoup d’autres. Le National Institute of Standards and Technology (NIST) américain a publié en 2011 la définition que la plupart des gens citent, la Special Publication 800-145. Elle énumère cinq caractéristiques essentielles : le libre-service à la demande (vous créez vous-même les ressources, via un site web ou une API, sans téléphoner à personne), un large accès par le réseau, la mutualisation des ressources (de nombreux clients partagent le matériel du fournisseur), l’élasticité rapide (la capacité augmente et diminue vite) et le service mesuré (vous payez ce que vous utilisez).

L’analogie, c’est l’électricité. Autrefois, les usines faisaient tourner leurs propres générateurs ; aujourd’hui, elles se branchent sur le réseau et paient au kilowattheure. Avec le cloud, une start-up peut louer cent serveurs pour un après-midi afin de tester un lancement, et cesser de payer dès qu’elle les rend. C’est le paiement à l’usage (pay-as-you-go). Il transforme un gros achat initial en coût de fonctionnement, et il récompense les systèmes capables d’éteindre de la capacité quand elle n’est pas nécessaire. Il crée aussi un nouveau risque : des coûts qui grimpent sans bruit, car rien n’empêche quiconque de créer des ressources puis de les oublier.

IaaS, PaaS, SaaS et serverless : quelle part gérez-vous ?

Les services cloud se distinguent surtout par la part de la pile que le fournisseur gère pour vous. Le NIST a défini trois modèles de service ; un quatrième, le serverless, s’est répandu après le lancement du service Lambda d’AWS en 2014. Une façon courante de les retenir passe par la pizza : vous pouvez la faire maison, en acheter une toute prête à cuire, vous en faire livrer une ou aller au restaurant. Chaque étape confie davantage de travail à quelqu’un d’autre, et vous retire une partie de vos choix.

Comparaison des modèles de service cloud

ModèleVous gérezLe fournisseur gèreExemplesAnalogie de la pizza
Sur siteTout : bâtiment, matériel, OS, runtime, application, donnéesRienVos propres serveurs dans votre propre centre de donnéesFaite maison de A à Z
IaaS (infrastructure en tant que service)Système d’exploitation, runtime, application, donnéesMatériel, virtualisation, réseau, bâtimentAmazon EC2, Azure Virtual Machines, Google Compute EnginePizza toute prête à cuire : vous la cuisez dans votre propre four
PaaS (plateforme en tant que service)Code de l’application et donnéesTout ce qui se trouve en dessous, y compris les correctifs de l’OS et la mise à l’échelleHeroku, Azure App Service, Google App EngineLivraison : vous fournissez la table et les boissons
Serverless / FaaS (fonction en tant que service)Des fonctions individuelles, déclenchées par des événementsTous les serveurs, avec réduction à zéro en cas d’inactivité et facturation à l’appelAWS Lambda, Azure Functions, Google Cloud Run functionsPizza à la part, payée à la bouchée
SaaS (logiciel en tant que service)Vos données, vos utilisateurs et leurs réglagesL’application tout entièreMicrosoft 365, Gmail, SalesforceManger au restaurant

« Serverless » ne veut pas dire qu’il n’y a pas de serveurs ; cela veut dire que vous ne les voyez et ne les gérez jamais. Vous envoyez une fonction, vous indiquez quels événements la déclenchent (une requête HTTP, l’arrivée d’un fichier, un message dans une file) et le fournisseur exécute autant de copies que nécessaire, en facturant à l’exécution et à la milliseconde. C’est bon marché pour un trafic faible ou en pics, et cela ne demande presque aucun travail d’exploitation. Ses coûts apparaissent ailleurs : le premier appel après une période calme peut être lent, le temps que le fournisseur démarre la fonction (un démarrage à froid, ou cold start), la durée d’exécution d’une fonction est limitée, et les coûts peuvent dépasser ceux d’un simple serveur pour un trafic important et régulier. Le chapitre 6 traite en profondeur des architectures serverless.

Entre ces modèles se trouvent les services managés : bases de données, files de messages, caches, stockage objet, moteurs de recherche et bien d’autres, que le fournisseur installe, exploite, corrige, sauvegarde et met à l’échelle. Utiliser une base de données managée au lieu d’en installer une sur une VM transfère une grande partie du travail d’exploitation au fournisseur. Le compromis, abordé dans FinOps et dépendance au fournisseur, est que plus un système utilise de services propres à un fournisseur, plus il est difficile à déplacer.

Régions, zones de disponibilité et réseaux de diffusion de contenu

Les fournisseurs de cloud regroupent leurs centres de données par zone géographique. Une région est une zone géographique (comme l’Irlande, Francfort ou la Virginie) dotée de son propre ensemble distinct de centres de données, isolé des autres régions. Chaque région est divisée en plusieurs zones de disponibilité : des groupes physiquement séparés d’un ou plusieurs centres de données, chacun avec son alimentation, son refroidissement et son réseau indépendants, généralement distants de plusieurs kilomètres mais assez proches pour être reliés par des connexions rapides. Un incendie, une inondation ou une panne de courant ne devrait mettre hors service qu’une zone au plus.

Cela offre aux architectes tout un éventail de protections. Faire tourner des copies d’une application dans deux ou trois zones d’une même région permet de survivre à la perte d’un centre de données pour un faible surcoût de latence ; les faire tourner dans deux régions permet de survivre à la perte d’une région entière, mais rend bien plus difficile la synchronisation des données. Les régions comptent aussi pour le droit et pour la latence : les règles de protection des données peuvent exiger que les données personnelles restent dans une juridiction donnée, et les utilisateurs sont servis plus vite depuis une région proche d’eux, car aucun réseau ne peut battre la vitesse de la lumière (voir comment les ordinateurs communiquent).

Un réseau de diffusion de contenu (CDN) va plus loin pour le contenu qui ne change pas d’un utilisateur à l’autre, comme les images, les feuilles de style, les scripts et la vidéo. Il en conserve des copies sur des serveurs situés dans des centaines d’endroits, appelés emplacements en périphérie (edge locations), de sorte qu’un utilisateur à Nairobi récupère les photos de produits de la boutique depuis une ville proche plutôt que depuis un centre de données en Europe. La page se charge plus vite, et les serveurs de la boutique traitent bien moins de requêtes. De nombreux CDN absorbent aussi le trafic d’attaque et peuvent exécuter de petits morceaux de code en périphérie.

À l’intérieur d’une région

Une région cloud compte trois zones de disponibilité, chacune avec ses centres de données ; l’app tourne en copies dans deux zones derrière un équilibreur de charge, et un CDN sert les fichiers statiques depuis des points prochesRégion (p. ex. Europe de l’Ouest)Zone de dispo. 1Zone de dispo. 2Zone de dispo. 3Copie appCopie appBDprimaireSecourscopie du primaireréservede calculLoad balancerUsagersNœud CDNde proximitéimages, scripts, vidéo servis depuis des copies proches
Des copies de l’application dans deux zones de disponibilité maintiennent le service si une zone tombe en panne, tandis qu’un CDN sert le contenu statique depuis des emplacements proches des utilisateurs.

Scalabilité verticale et scalabilité horizontale

Quand un système doit traiter davantage de travail, il existe deux réponses de base. La scalabilité verticale (scaling up) consiste à prendre une machine plus grosse : plus de cœurs, plus de mémoire. Elle n’exige aucune modification du logiciel, ce qui est son grand avantage, mais on ne peut pas acheter plus gros que la plus grosse machine du marché, le prix grimpe de façon disproportionnée vers le haut de gamme, et une seule machine reste un point unique de défaillance. La scalabilité horizontale (scaling out) consiste à répartir le travail sur davantage de machines, généralement derrière un équilibreur de charge (load balancer) qui distribue les requêtes entre elles et cesse d’en envoyer à celles qui tombent en panne. Elle permet d’aller bien plus loin et de survivre aux pannes de machines, mais seulement si le logiciel est conçu pour cela : par exemple, un serveur ne doit pas conserver la session d’un utilisateur uniquement dans sa propre mémoire, ni enregistrer les fichiers envoyés uniquement sur son propre disque, si la requête suivante de cet utilisateur risque d’aboutir sur un autre serveur.

Le cloud rend la scalabilité horizontale attrayante, car ajouter une machine se résume à un appel d’API, et l’autoscaling peut ajouter et retirer des copies automatiquement selon la charge. Les bases de données sont généralement la partie la plus difficile à faire passer à l’échelle horizontalement, c’est pourquoi le chapitre 7 consacre une section à la réplication et au partitionnement.

Exemple commenté

Exemple commenté : héberger un site de réservation de billets

Une petite chaîne de théâtres vend des billets en ligne. Le trafic est faible la majeure partie de la semaine, mais quand un spectacle populaire est mis en vente, dix fois plus de personnes arrivent en quelques minutes.

Une VM louée (IaaS)Simple et bon marché. L’équipe applique les correctifs de l’OS. Le jour de la mise en vente, l’unique machine est submergée, et si elle tombe en panne, le site est hors service.
VM plus grosseLa scalabilité verticale donne de la marge sans modifier le code, mais le théâtre paie la grosse machine toute la semaine pour couvrir quelques heures de pointe.
App sur un PaaS, deux zones, autoscalingDes copies de l’app tournent dans deux zones de disponibilité derrière un équilibreur de charge. Le jour de la mise en vente, la plateforme ajoute automatiquement des copies, puis les retire. Cela exige que l’app ne garde aucune donnée de session en mémoire locale.
Base de données managéeLe fournisseur fait tourner une base primaire dans une zone et une base de secours dans une autre, avec des sauvegardes automatiques. L’équipe conçoit toujours le schéma et les index (voir stocker des données).
CDN pour les images et les scriptsLes plans de salle et les photos des spectacles sont servis depuis des emplacements en périphérie, si bien que les serveurs de l’app consacrent leurs efforts aux réservations.

La conception finale coûte plus cher à mettre en place qu’une seule VM, mais moins cher à faire tourner qu’une machine surdimensionnée en permanence, et elle survit à la fois à un pic de trafic et à la perte d’un centre de données.

Chaque étape a échangé du contrôle contre de la commodité : l’équipe a choisi quel travail garder et lequel confier au fournisseur.

Pourquoi c’est important pour l’architecture

L’endroit où s’exécute un logiciel est désormais une décision d’architecture, et non un détail réglé après coup. Le choix entre VM, conteneurs, plateformes et fonctions façonne le coût, la rapidité avec laquelle l’équipe peut livrer, la manière dont le système passe à l’échelle et ce qui se passe quand un centre de données tombe en panne. Les régions et les zones transforment les objectifs de disponibilité en plans de déploiement concrets ; les services managés échangent du travail d’exploitation contre une dépendance à un fournisseur. Le chapitre 9 développe les stratégies de scalabilité, et le chapitre 10 traite des modèles de service et de déploiement cloud, des conteneurs et de l’infrastructure de manière approfondie, au niveau professionnel.

Vérifiez votre compréhension

Pourquoi les conteneurs démarrent-ils plus vite et occupent-ils moins d’espace que les machines virtuelles ?

Un conteneur ne démarre pas son propre système d’exploitation : c’est un processus isolé qui partage le noyau de l’hôte et n’embarque que l’application et ses bibliothèques. Une VM embarque et démarre un système d’exploitation invité complet.

Une équipe loue une VM dans le cloud et y installe sa propre base de données. Qui est responsable des correctifs du système d’exploitation ?

L’équipe. Avec l’IaaS, le fournisseur gère le matériel et la virtualisation, et le client gère le système d’exploitation et tout ce qui se trouve au-dessus.

Contre quelle défaillance protège le fait de tourner dans deux zones de disponibilité, et contre quoi ne protège-t-il pas ?

Il protège contre la perte d’un centre de données ou d’une zone (alimentation, incendie, réseau). Il ne protège pas contre la perte de la région entière, ni contre les bugs logiciels et les données erronées, qui touchent toutes les copies.

Pourquoi une application qui fonctionne bien sur un seul serveur pourrait-elle mal se comporter une fois mise à l’échelle horizontalement derrière un équilibreur de charge ?

Elle peut conserver un état, comme les sessions des utilisateurs, dans sa propre mémoire : quand l’équilibreur de charge envoie la requête suivante à une autre copie, celle-ci ne connaît pas l’utilisateur.

Suivant · 0.8Comment les logiciels sont construitsComment les équipes transforment des besoins en récits utilisateur, collaborent avec Git et les pull requests, testent à plusieurs niveaux, livrent grâce au CI/CD et aux environnements, et comment un simple appui dans une app de livraison de repas traverse chaque partie d’un système.Continuer →

Sources et lectures complémentaires

Une question sur cette section ? ArchitectBot, l’assistant d’étude IA du cours, répond d’abord à partir du cours.

Demander : « Pour une petite application web au trafic en pics, comment choisir entre la faire tourner sur une machine virtuelle, dans des conteneurs sur une plateforme, ou sous forme de fonctions serverless ? »