Be Software Architecture Wise
Be Wise Apps

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

Section 10.1 sur 10.8 · Intermédiaire · 22 min de lecture

Modèles de services et de déploiement cloud

Leçon vidéo

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

L’endroit où un logiciel s’exécute fait partie de son architecture, et c’est coûteux à défaire. Dans cette leçon, vous allez découvrir les modèles de services et de déploiement cloud, qui est responsable de quoi, et comment savoir quand la location n’est pas l’option la moins chère.

Pensez à la manière de trouver un logement. Vous pouvez acheter un terrain et bâtir une maison, louer un appartement vide et le meubler, louer un appartement meublé, ou séjourner à l’hôtel. Chaque étape confie davantage de travail à quelqu’un d’autre, et vous laisse moins de choix. L’hôtel est merveilleux pour une semaine, et ruineux pour dix ans. Pour le logiciel, c’est pareil : vous pouvez posséder des serveurs, louer des machines nues, louer une plateforme, ou louer un logiciel fini. Et quel que soit votre choix, c’est toujours vous qui fermez votre porte à clé. Vos données, et les personnes qui peuvent y accéder, restent votre affaire.

Les modèles de services forment un continuum. Avec l’infrastructure en tant que service, ou IaaS, vous louez des machines virtuelles, et vous installez et corrigez encore vous-même le système d’exploitation et tout ce qui se trouve au-dessus. Avec les conteneurs en tant que service, vous fournissez des images de conteneurs et leur configuration. Le fournisseur exploite le plan de contrôle, et souvent aussi les machines. Avec une plateforme en tant que service, ou PaaS, vous ne fournissez que votre code applicatif et sa configuration. Avec les fonctions en tant que service, vous fournissez des fonctions individuelles et les événements qui les déclenchent. Vous payez à l’appel et au temps d’exécution, et rien au repos. Et avec le logiciel en tant que service, ou SaaS, vous louez l’application entière et vous la configurez. La question utile n’est jamais de savoir quelle étiquette s’applique, mais quelles tâches restent les vôtres : correctifs, mise à l’échelle, sauvegardes, basculement et mises à niveau.

Chaque grand fournisseur publie un modèle de responsabilité partagée. Le fournisseur est responsable de la sécurité du cloud, et vous de la sécurité dans le cloud. Cette grille montre où passe la frontière. Sur vos propres serveurs, à gauche, toutes les couches sont les vôtres, du centre de données jusqu’en haut. Avec l’IaaS, le fournisseur prend en charge le centre de données, le matériel et la virtualisation. Vous exploitez encore le système d’exploitation, l’environnement d’exécution et votre code. Avec une plateforme ou avec des fonctions, vous ne gérez que votre code applicatif, ainsi que vos données et les accès. Regardez maintenant la rangée du haut. Vos données, vos identités et autorisations, et votre configuration restent les vôtres dans tous les modèles, même en SaaS. C’est important, car de nombreuses violations dans le cloud ont résulté d’erreurs de configuration du client, et non de défaillances du fournisseur : stockage laissé lisible par tous, clés d’administrateur dans des dépôts publics, autorisations beaucoup trop larges.

Passons aux modèles de déploiement. Le cloud public est choisi pour l’élasticité, la rapidité et un vaste catalogue de services managés. Le cloud privé, hybride et le multicloud ont tous des raisons légitimes, comme la réglementation, une charge régulière ou des plans de sortie. Mais rendre chaque charge de travail portable entre plusieurs clouds revient à payer pour une sortie dont vous ne vous servirez peut-être jamais. Au sein d’une région, la répartition entre zones de disponibilité est le choix par défaut, peu coûteux et très rentable. Utilisez-en trois plutôt que deux pour tout ce qui repose sur un quorum, afin qu’une majorité survive à la perte de l’une d’elles. Et le cloud native décrit comment un système est construit et exploité, pas où. Une machine virtuelle construite à la main et copiée telle quelle dans un cloud public n’est pas cloud native.

Comparons, avec des prix illustratifs. La plateforme a besoin de quarante processeurs virtuels toute la journée, et de cent vingt pendant les quatre heures du coup de feu du soir. La capacité à la demande coûte quatre pence par heure de processeur virtuel ; avec un engagement sur trois ans, deux virgule quatre pence. L’option A loue cent vingt processeurs virtuels tout le mois, dimensionnés pour le pic. Cela fait trois mille cinq cent quatre livres par mois. L’option B s’engage sur les quarante toujours nécessaires, pour sept cent une livres, et n’en ajoute quatre-vingts que pendant le coup de feu, pour trois cent quatre-vingt-dix. Cela fait mille quatre-vingt-onze livres, soit moins d’un tiers de l’option A. L’option C possède du matériel dimensionné pour le pic, à un virgule deux pence par heure de processeur virtuel, plus trente pour cent de marge. Avec un quart du temps d’un ingénieur, cela fait trois mille trente-quatre livres. Mais avec deux mille processeurs virtuels en continu, posséder revient environ seize pour cent moins cher que le cloud avec engagement. C’est la situation de 37signals, qui a déplacé ses charges de travail régulières sur ses propres serveurs et a indiqué économiser environ deux millions de dollars par an.

La méthode compte plus que les chiffres. Modélisez la forme de la charge : l’élasticité l’emporte pour les petites charges en pics, et la propriété peut l’emporter pour les grandes charges plates. Comptez honnêtement le personnel et la marge de capacité, et comparez avec le meilleur prix cloud, engagements compris, et non avec le prix catalogue. Et choisissez charge de travail par charge de travail. Une même entreprise peut judicieusement utiliser un SaaS pour la paie, des fonctions pour le redimensionnement d’images et des conteneurs pour ses services cœurs.

La section complète en dit plus sur les services managés et les régions, et propose un guide de décision pour choisir un modèle d’hébergement. Ensuite, dans la section dix point deux, nous verrons les conteneurs, et comment Kubernetes les maintient en fonctionnement. À très vite.

Ce qu’il faut savoir

D’une définition à de nombreux modèles

Le chapitre 0 a présenté les serveurs et le cloud : la définition du NIST (Special Publication 800-145, 2011), avec ses cinq caractéristiques essentielles (libre-service à la demande, large accès réseau, mutualisation des ressources, élasticité rapide et service mesuré), et l’idée que les modèles de services confient une part plus ou moins grande de la pile à un fournisseur. Cette section approfondit ces idées autant qu’un architecte en a besoin pour choisir où un système s’exécute et pour défendre ce choix.

Le NIST définit trois modèles de services (infrastructure, plateforme et logiciel en tant que service) et quatre modèles de déploiement : public (ouvert à tous, détenu par un fournisseur), privé (réservé à une seule organisation, quel que soit son emplacement et quel que soit son exploitant), communautaire (partagé par des organisations ayant des préoccupations communes, comme des organismes publics) et hybride (deux ou plusieurs de ces modèles, reliés de sorte que les données et les applications puissent passer de l’un à l’autre). Le secteur a depuis ajouté les fonctions et les conteneurs en tant que service aux modèles de services, et le multicloud au vocabulaire du déploiement.

L’endroit où s’exécute un logiciel fait partie de ce que le chapitre 1 appelait la structure d’allocation d’une architecture (définir l’architecture) : la correspondance entre le logiciel et le matériel, les réseaux et les organisations. Il est significatif au sens du chapitre 1 parce qu’il coûte cher à défaire, et parce qu’il fixe une grande partie du coût d’un système, sa disponibilité, sa frontière de sécurité et la vitesse à laquelle ses équipes peuvent livrer.

Modèles de services : qui gère quoi

Les modèles de services forment un continuum. À une extrémité, vous louez de la capacité brute et faites vous-même tout ce qui se trouve au-dessus ; à l’autre, vous louez une application finie et vous vous contentez de la configurer. Chaque pas vers la droite retire du travail d’exploitation et retire des choix. Le tableau ajoute les deux modèles postérieurs au document du NIST : les conteneurs en tant que service et les fonctions en tant que service.

Comparaison des modèles de services

ModèleVous déployez et exploitezLe fournisseur exploiteExemplesUsage typique
IaaSMachines virtuelles : système d’exploitation, correctifs, environnement d’exécution, application, règles de mise à l’échelleMatériel, réseau, hyperviseur, centre de donnéesAmazon EC2, Azure Virtual Machines, Google Compute EngineLogiciels qui exigent un système d’exploitation ou un noyau particulier, applications existantes migrées telles quelles, contrôle total
CaaS (conteneurs en tant que service)Images de conteneurs et leur configuration ; avec un Kubernetes managé, également le choix et la mise à niveau des nœuds de travailPlan de contrôle des conteneurs, souvent aussi les nœuds ; avec les conteneurs serverless, tous les serveursAmazon EKS et ECS, Azure Kubernetes Service et Container Apps, Google Kubernetes Engine et Cloud RunNombreux services construits sous forme de conteneurs, équipes qui veulent un empaquetage portable
PaaSCode applicatif et sa configurationSystème d’exploitation, environnement d’exécution, mise à l’échelle, équilibrage de charge, souvent la journalisationHeroku, Azure App Service, Google App Engine, AWS Elastic BeanstalkApplications web et API standard qui respectent les conventions de la plateforme
FaaSFonctions individuelles et événements qui les déclenchentTout le reste, y compris la réduction à zéro ; facturation à l’invocation et à la duréeAWS Lambda, Azure Functions, Google Cloud Run functions, Cloudflare WorkersTraitements pilotés par les événements, en pics ou à faible volume, en étapes courtes
SaaSConfiguration, utilisateurs, autorisations et vos donnéesL’application entièreMicrosoft 365, Salesforce, Workday, ZendeskCapacités génériques qui ne différencient pas l’entreprise

En pratique, les frontières s’estompent. Les plateformes de conteneurs serverless comme Google Cloud Run et Azure Container Apps exécutent une image de conteneur comme un PaaS exécute du code, en descendant à zéro comme une fonction. Un Kubernetes managé peut aller d’un plan de contrôle hébergé, où vous continuez à appliquer les correctifs et les mises à niveau aux machines de travail, jusqu’à un mode entièrement managé où le fournisseur exploite aussi les nœuds. La question utile n’est jamais de savoir quelle étiquette s’applique, mais quelles tâches concrètes restent les vôtres : correctifs, décisions de mise à l’échelle, planification de la capacité, sauvegardes, basculement, mises à niveau et astreinte.

Une seconde distinction utile est l’unité de déploiement et de facturation. L’IaaS facture les machines à la seconde ou à l’heure, qu’elles soient occupées ou non ; le FaaS facture les invocations et le temps d’exécution et ne coûte rien au repos ; le PaaS et les conteneurs serverless se situent entre les deux. Le chapitre 6 explique pourquoi la tarification à la requête est moins chère qu’une capacité toujours active en dessous d’un volume de bascule, et plus chère au-dessus (architectures serverless). C’est la forme de la charge, et non sa taille, qui décide de quel côté du point de bascule elle se trouve.

Le modèle de responsabilité partagée

Chaque grand fournisseur publie un modèle de responsabilité partagée. AWS le résume ainsi : le fournisseur est responsable de la sécurité du cloud, et le client de la sécurité dans le cloud. Le fournisseur sécurise les bâtiments, le matériel, le réseau, l’hyperviseur et les services qu’il exploite ; le client sécurise ce qu’il construit et configure par-dessus. L’emplacement de la frontière dépend du modèle de services, comme le montre le diagramme.

Qui est responsable de quoi, selon le modèle de services

Responsabilité partagée dans six modèles d’hébergement : le client détient toujours les données et l’accès, et confie au fournisseur de plus en plus de couches basses en allant du sur-site au SaaSSur sitevos serveursIaaSmach. virtuellesCaaSK8s managéPaaSplateforme appFaaSfonctionsSaaSapp complèteDonnées et accèsVousVousVousVousVousVousCode applicatifVousVousVousVousVousFourniss.Runtime, scalingVousVousPartagéFourniss.Fourniss.Fourniss.Système d’exploitationVousVousPartagéFourniss.Fourniss.Fourniss.VirtualisationVousFourniss.Fourniss.Fourniss.Fourniss.Fourniss.Matériel, réseauVousFourniss.Fourniss.Fourniss.Fourniss.Fourniss.Centre de donnéesVousFourniss.Fourniss.Fourniss.Fourniss.Fourniss.Vous gérez et sécurisezPartagéLe fournisseur gère
Aller vers la droite confie les couches basses au fournisseur, mais les données, les identités et la configuration des accès restent au client dans tous les modèles.

Trois choses ne se transfèrent jamais. Le client détient toujours ses données (ce qui est stocké, où, pendant combien de temps, qui peut le lire), ses identités et ses autorisations, et la configuration des services qu’il utilise. De nombreuses violations dans le cloud ont résulté d’erreurs de configuration du client plutôt que de défaillances du fournisseur : stockage objet laissé lisible par tous, clés d’administrateur commitées dans des dépôts publics, autorisations trop larges. En 2019, par exemple, un attaquant a exploité un pare-feu applicatif web mal configuré chez Capital One pour obtenir des identifiants cloud et copier des données concernant plus de 100 millions de personnes aux États-Unis et au Canada ; l’infrastructure du fournisseur s’est comportée comme prévu.

Pour un architecte, le modèle est une liste de contrôle des tâches à attribuer à quelqu’un. Si une équipe déplace la base de données des commandes de la plateforme de livraison de repas d’une machine virtuelle vers un service de base de données managé, l’application des correctifs au moteur de base de données passe au fournisseur, mais pas le choix d’une fenêtre de maintenance, le test des mises à niveau de version majeure, l’octroi d’accès selon le moindre privilège, l’activation du chiffrement ni la vérification que les sauvegardes peuvent être restaurées. Le chapitre 8 traite en profondeur des principes de sécurité qui sous-tendent ces responsabilités (principes de sécurité pour les architectes).

Les modèles de déploiement et leurs vraies raisons

Les organisations choisissent rarement un modèle de déploiement pour une seule raison, et la raison affichée n’est pas toujours la vraie. Il est utile de distinguer les motivations qui résistent à l’examen de celles qui n’y résistent pas.

Public, privé, hybride et multicloud

  1. Cloud publicChoisi pour l’élasticité, la rapidité (un nouvel environnement en quelques minutes, et non un achat de matériel en plusieurs mois), un vaste catalogue de services managés et une présence mondiale. Il convient à une charge variable, aux nouveaux produits dont la demande est inconnue et aux équipes qui veulent consacrer leurs efforts au produit plutôt qu’aux serveurs.
  2. Cloud privéChoisi pour un contrôle réglementaire ou contractuel, une charge régulière et prévisible, des investissements existants dans un centre de données ou une latence très faible vers des équipements sur site. Un cloud privé désigne un provisionnement en libre-service, piloté par API, sur une infrastructure dédiée (par exemple avec OpenStack, VMware ou l’édition sur site du cloud public d’un fournisseur), et non une simple salle de serveurs virtualisée où les demandes passent encore par une file de tickets.
  3. Cloud hybrideRésulte généralement d’une migration progressive, de données qui doivent rester sur site (un grand livre sur mainframe, des systèmes d’usine ou d’hôpital) ou de sites en périphérie comme des magasins et des entrepôts. Le débordement d’un centre de données privé vers le cloud public aux heures de pointe est souvent promis mais rarement praticable, car les données dont la charge de travail a besoin restent derrière et les copier coûte du temps et de l’argent.
  4. MulticloudUtiliser deux fournisseurs publics ou plus. Parmi les raisons défendables : utiliser un service distinctif de chaque fournisseur, des acquisitions qui arrivent sur un autre cloud, un levier de négociation et une réglementation qui exige des plans de sortie crédibles. Dans l’UE, le règlement sur la résilience opérationnelle numérique (DORA), applicable depuis janvier 2025, impose aux entités financières de disposer de stratégies de sortie pour leurs prestataires de services TIC critiques. Rendre chaque charge de travail portable entre plusieurs clouds est un objectif différent et bien plus coûteux.

L’erreur courante consiste à adopter le multicloud comme une couverture abstraite. Faire tourner une charge de travail à l’identique chez deux fournisseurs implique de n’utiliser que les services que proposent les deux, de construire et tester deux jeux de code d’infrastructure, d’entretenir les compétences pour les deux, et souvent de payer des frais de transfert de données entre eux. C’est le piège du plus petit dénominateur commun : vous payez chaque jour le coût de la portabilité en échange d’une sortie dont vous ne vous servirez peut-être jamais. La section 10.8 traite la dépendance au fournisseur comme un compromis à chiffrer, et non comme un péché à éviter à tout prix (FinOps, architecture des coûts et dépendance au fournisseur).

Les régions et les zones de disponibilité comme données de conception

Une région est une zone géographique dotée de son propre ensemble indépendant de centres de données ; une zone de disponibilité est un ou plusieurs centres de données d’une région, avec une alimentation électrique, un refroidissement et un réseau distincts, suffisamment éloignés des autres pour qu’un incendie, une inondation ou une panne de courant locale n’en touche qu’un seul, et suffisamment proches pour des allers-retours de quelques millisecondes au plus. Le chapitre 0 a expliqué l’idée. Pour la conception, trois points supplémentaires comptent.

Premièrement, chaque service managé a un périmètre de défaillance : les ressources zonales (une machine virtuelle isolée, un disque) disparaissent avec leur zone ; les services régionaux (la plupart des bases de données managées en mode multizone, le stockage objet, les files d’attente) sont répliqués entre zones par le fournisseur ; quelques services mondiaux (DNS, identité, certains services de diffusion de contenu et d’équilibrage de charge) couvrent plusieurs régions, ce qui rend leurs rares pannes très étendues. Connaître le périmètre de chaque dépendance est la première étape de toute analyse de disponibilité (voir disponibilité et fiabilité).

Deuxièmement, la répartition entre zones est le choix par défaut, peu coûteux et très rentable. Faire tourner les services sans état de la plateforme de livraison de repas dans trois zones derrière un équilibreur de charge, avec une base de données qui garde une instance de secours synchrone dans une deuxième zone, permet de survivre à la perte d’un centre de données avec un basculement automatique et un léger coût en latence. Trois zones plutôt que deux comptent pour tout ce qui utilise des quorums, comme etcd dans Kubernetes ou une base de données fondée sur un consensus, car une majorité doit survivre. Le trafic entre zones n’est pas toujours gratuit pour autant : la plupart des grands fournisseurs facturent les données qui circulent entre zones, si bien que des services bavards répartis entre zones ajoutent une ligne visible à la facture.

Troisièmement, les régions ne sont pas identiques. Les régions plus récentes ou plus petites peuvent manquer de certains services, certaines ont moins de zones, les prix varient d’une région à l’autre, et la juridiction applicable suit la région. La section 10.6 traite des régions multiples, de la reprise après sinistre et de la résidence des données (multirégion, reprise après sinistre et edge computing).

Services managés ou autogérés

Un service managé est un composant (base de données, file d’attente, cache, moteur de recherche, plan de contrôle Kubernetes) que le fournisseur installe, exploite, corrige, sauvegarde et met à l’échelle pour vous. L’alternative consiste à exploiter vous-même le même logiciel open source sur des machines virtuelles ou dans des conteneurs. Le compromis oppose la charge de travail et le risque d’un côté, au contrôle, au coût et à la portabilité de l’autre.

Les services managés l’emportent quand le composant n’est pas différenciant : toute entreprise de livraison de repas a besoin d’une base de données PostgreSQL fiable, mais aucune ne gagne de clients grâce à sa façon d’appliquer les correctifs à sa base de données. En termes de conception pilotée par le domaine, ce sont des sous-domaines génériques, ceux qu’il vaut mieux acheter que construire. Une base de données managée offre un basculement multizone, une restauration à un instant donné et l’application des correctifs de versions mineures, qui exigeraient sinon une équipe compétente d’astreinte. L’autogestion l’emporte quand vous avez besoin d’une version, d’une extension ou d’un paramètre de réglage que le fournisseur ne propose pas, quand les limites ou quotas du fournisseur ne conviennent pas, quand le surcoût du service managé devient important à grande échelle, ou quand la portabilité entre environnements compte plus que la commodité.

Managé ne veut pas dire sans maintenance. Le fournisseur imposera des mises à niveau de version majeure selon son propre calendrier quand les anciennes versions arriveront en fin de support, modifiera des valeurs par défaut, imposera des quotas que vous découvrirez au pire moment et subira des pannes que vous ne pourrez pas réparer, seulement attendre qu’elles passent. Vous restez responsable de la conception du schéma, des performances des requêtes, des choix de capacité, du coût et du test régulier qui prouve qu’une restauration fonctionne. Traitez chaque service managé comme une dépendance qui a ses propres modes de défaillance et son propre coût de sortie.

Ce que signifie cloud native

La Cloud Native Computing Foundation (CNCF), qui fait partie de la Linux Foundation et héberge Kubernetes, publie la définition la plus citée du cloud native. La version 1.0 (2018) décrivait des technologies permettant aux organisations de construire et d’exploiter des applications scalables dans des environnements dynamiques comme les clouds publics, privés et hybrides, et citait comme exemples typiques les conteneurs, les service meshes, les microservices, l’infrastructure immuable et les API déclaratives. La version 1.1, approuvée en 2024, déplace l’accent des technologies vers les pratiques : développer, construire et déployer des charges de travail de façon programmatique et reproductible à grande échelle, ce qui se caractérise par des systèmes faiblement couplés qui interopèrent de manière sécurisée, résiliente, gérable, durable et observable.

Deux conséquences en découlent. Le cloud native décrit comment un système est construit et exploité, et non où : un cluster Kubernetes dans un centre de données privé, provisionné à partir de code et déployé de nombreuses fois par jour, est cloud native ; une machine virtuelle configurée à la main et copiée telle quelle dans un cloud public ne l’est pas. Et le cloud native est un moyen plutôt qu’une fin. Ses pratiques (automatisation, composants jetables, configuration déclarative, élasticité, observabilité) sont rentables quand un système a besoin de changements fréquents, d’une échelle variable et d’une haute disponibilité ; elles ajoutent du coût et de la complexité pour un outil interne stable utilisé par vingt personnes.

Les migrations sont souvent décrites à l’aide des « six R », qu’il vaut la peine de connaître parce qu’ils fixent les attentes : rehost (« lift and shift », sans changement), replatform (petits changements comme le passage à une base de données managée), refactor ou réarchitecture (refonte pour un fonctionnement cloud native), repurchase (remplacement par un SaaS), retain (laisser en place) et retire (arrêter le système). Le rehosting est rapide, mais il apporte généralement peu des avantages du cloud et, exécuté sur des machines toujours actives dimensionnées pour le pic, peut coûter plus cher que le centre de données qu’il a quitté.

Quand le cloud n’est pas moins cher

Le contre-exemple le plus connu est 37signals, l’entreprise derrière Basecamp et HEY. En octobre 2022, son directeur technique, David Heinemeier Hansson, a annoncé qu’elle quittait le cloud, en citant une facture AWS annuelle de plus de 3 millions USD pour des charges de travail à la charge régulière et prévisible. Elle a acheté pour environ 700 000 USD de serveurs Dell, les a installés dans un espace de colocation loué et a retiré ses applications du calcul AWS au cours de 2023 ; elle a indiqué que cela réduisait sa facture cloud d’environ 2 millions USD par an. En 2025, elle a annoncé la seconde étape : déplacer environ 18 pétaoctets de fichiers d’Amazon S3 vers des baies de stockage d’environ 1,5 million USD, pour remplacer une facture S3 d’environ 1,5 million USD par an, avec l’objectif déclaré de fermer son compte AWS. L’entreprise a projeté des économies d’environ 10 millions USD sur cinq ans. Sortir ainsi des charges de travail du cloud s’appelle le rapatriement depuis le cloud (cloud repatriation).

Les deux camps méritent d’être entendus. En faveur du raisonnement de 37signals : sa charge est régulière, elle gagnait donc peu à l’élasticité ; elle employait déjà des ingénieurs d’exploitation expérimentés et a indiqué n’avoir eu besoin d’aucun personnel supplémentaire ; les fournisseurs de colocation s’occupent de l’alimentation, du refroidissement et de la sécurité physique ; et les serveurs peuvent servir cinq ans ou plus, si bien que leur coût par année de calcul est très inférieur à la location à la demande. De l’autre côté : 37signals est une entreprise mature à la demande prévisible, ce que ne sont pas la plupart des nouveaux produits ; la comparaison dépend fortement de ce qu’aurait été la facture cloud avec des remises d’engagement et un dimensionnement ajusté ; posséder du matériel implique des dépenses d’investissement, des délais de livraison de plusieurs semaines ou mois et une capacité achetée à l’avance ; et une équipe plus petite, sans compétences d’exploitation poussées, devrait les recruter, ce qui peut effacer l’économie. Les critiques soulignent aussi que les chiffres d’économies proviennent de l’entreprise elle-même.

Exemple commenté

Exemple commenté : louer ou posséder la capacité de calcul de la plateforme de livraison de repas

Tous les prix sont des hypothèses illustratives choisies pour montrer la méthode, et non de vrais devis. La capacité cloud à la demande coûte £0,040 par vCPU-heure ; un engagement sur trois ans coûte £0,024 (une remise de 40 %) ; le matériel en propre en colocation coûte £0,012 par vCPU-heure, alimentation et espace compris, mais exige 30 % de marge de capacité et du temps de personnel. La plateforme a besoin de 40 vCPU toute la journée, et de 120 vCPU pendant les quatre heures du coup de feu du soir (environ 122 heures par mois). Un mois compte 730 heures.

A : cloud, dimensionné pour le pic, toujours actif120 vCPU × 730 h × £0,040 = £3504 par mois
B : cloud, base engagée plus pic en autoscaling40 × 730 × £0,024 = £701 ; plus 80 × 122 × £0,040 = £390 ; total £1091 par mois
C : matériel en propre dimensionné pour le pic120 × 1,3 × 730 × £0,012 = £1367 ; plus un quart d’ingénieur à £80 000 par an = £1667 ; total £3034 par mois
Passons à plus grande échelle : 2000 vCPU en continu, sans heure de pointeCloud avec engagement : 2000 × 730 × £0,024 = £35 040. En propre : 2000 × 1,3 × 730 × £0,012 = £22 776 plus un ingénieur (£6667) = £29 443, soit environ 16 % de moins

Pour une petite charge en pics, l’élasticité domine : l’option B coûte moins d’un tiers de l’option A et environ un tiers de l’option C, car elle ne paie la capacité de pointe que pendant le coup de feu.

Pour une charge importante et plate, les coûts fixes de la propriété se répartissent sur davantage de capacité et la propriété commence à l’emporter : c’est la situation de 37signals. L’économie est réelle, mais plus faible que ne le suggèrent les comparaisons spectaculaires, une fois comptés la marge de capacité, le personnel et l’effort de migration.

La méthode compte plus que les chiffres : modélisez la forme de la charge, incluez le personnel et la marge de capacité, comparez avec le meilleur prix cloud (avec engagements) et non avec le prix catalogue, et refaites le calcul à mesure que l’activité évolue.

Guide de décision

Guide de décision : choisir un modèle d’hébergement pour une charge de travail

Appliquez-le charge de travail par charge de travail, et non une fois pour toute l’organisation : une même entreprise utilise judicieusement un SaaS pour la paie, des fonctions pour le redimensionnement d’images et des conteneurs pour ses services cœurs.

  1. La capacité est-elle générique, avec un produit sur le marché qui convient suffisamment (e-mail, paie, CRM, paiements) ?
    OuiAchetez un SaaS et intégrez-le via son API ; consacrez l’effort de conception à l’intégration et au plan de sortie.
    NonContinuez : vous devez exploiter votre propre logiciel.
  2. La loi, un contrat ou l’emplacement physique excluent-ils le cloud public pour cette charge de travail (règles de souveraineté strictes, équipements sur site, boucles de contrôle à la milliseconde) ?
    OuiUtilisez un cloud privé, la colocation ou un déploiement en périphérie sur site, relié aux services du cloud public en mode hybride lorsque c’est permis.
    NonContinuez avec les options de cloud public.
  3. Le traitement est-il piloté par les événements, de courte durée et en pics ou à faible volume (webhooks, traitement de fichiers, tâches planifiées) ?
    OuiUtilisez des fonctions en tant que service ou une plateforme de conteneurs serverless ; vérifiez les limites de démarrage à froid, de durée et de coût à grand volume.
    NonContinuez : il s’agit d’un service de longue durée.
  4. Le modèle d’un PaaS ou d’une plateforme de conteneurs serverless convient-il (service HTTP sans état, environnement d’exécution standard, peu de besoins particuliers) ?
    OuiUtilisez-le. C’est ce qui retire le plus de travail d’exploitation à une petite équipe.
    NonContinuez : vous avez besoin de plus de contrôle.
  5. Exploitez-vous de nombreux services répartis entre plusieurs équipes, et avez-vous (ou financerez-vous) une équipe capable d’exploiter Kubernetes ?
    OuiUtilisez un Kubernetes managé (CaaS), idéalement derrière une plateforme interne (section 10.7).
    NonUtilisez des machines virtuelles avec des bases de données managées et des groupes d’autoscaling, construits à partir de code d’infrastructure.
  6. La charge est-elle importante, régulière et prévisible pour des années, avec des compétences d’exploitation en interne ?
    OuiComparez le coût de matériel en propre ou en colocation à celui d’une capacité cloud avec engagement ; le rapatriement peut être rentable.
    NonRestez sur de la capacité louée et utilisez des remises d’engagement pour la base régulière.

Vérifiez votre compréhension

Une équipe déplace sa base de données d’une VM qu’elle exploitait elle-même vers un service de base de données managé. Citez deux responsabilités qui passent au fournisseur et deux qui restent à l’équipe.

Le fournisseur prend en charge les correctifs du moteur, le matériel et généralement les sauvegardes automatisées et le basculement entre zones. L’équipe garde la conception du schéma et des requêtes, les autorisations d’accès, les choix de chiffrement, la capacité et le coût, le test des restaurations et la planification des mises à niveau de version majeure.

Pourquoi un système fondé sur un quorum, comme etcd, préfère-t-il trois zones de disponibilité à deux ?

Un quorum a besoin d’une majorité. Avec deux zones, perdre la zone qui détient la majorité arrête le système ; avec trois, n’importe quelle zone peut tomber en panne et une majorité survit.

Une machine virtuelle construite à la main et copiée telle quelle dans un cloud public est-elle cloud native ?

Non. Le cloud native désigne des pratiques comme l’automatisation, la configuration déclarative, les composants jetables et l’observabilité, et non un emplacement. Le rehosting déplace le système sans adopter ces pratiques.

Pourquoi une même organisation peut-elle judicieusement utiliser à la fois un SaaS, des fonctions et Kubernetes ?

Le modèle d’hébergement doit se choisir charge de travail par charge de travail : les capacités génériques s’achètent en SaaS, les tâches en pics pilotées par les événements conviennent aux fonctions, et les services cœurs de longue durée peuvent justifier des conteneurs sur Kubernetes.

Suivant · 10.2Conteneurs et KubernetesImages, couches, registres et normes OCI ; pourquoi l’orchestration est nécessaire ; le plan de contrôle de Kubernetes, les nœuds, les objets de base et les boucles de réconciliation ; requêtes, limites, sondes, et quand Kubernetes est surdimensionné.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 : « Comment décider si les services de notre plateforme de livraison de repas doivent tourner sur un PaaS, sur des conteneurs serverless ou sur un Kubernetes managé ? »