Ce que le livre d'Allspaw résout
La discipline de ne pas manquer de ressources
John Allspaw a écrit 'The Art of Capacity Planning' (O'Reilly, 2008 ; deuxième édition 2017) après avoir géré les opérations de Flickr pendant des années de croissance explosive. Sa thèse : la planification de la capacité n'est pas un exercice de feuille de calcul ponctuel. C'est une discipline continue qui combine la mesure, la prévision & le jugement technique. Ignorer l'une de ces trois, & vous épuiserez la capacité en production ou brûlerez de l'argent en matériel inactif.
La planification de la capacité se situe entre deux modes de défaillance :
- Sous-approvisionnement : les services tournent à plein régime, la latence augmente, les taux d'erreur grimpent, les clients partent. Le moyen le plus rapide de perdre des utilisateurs en phase de croissance.
- Surprovisionnement : le matériel fonctionne à 10% d'utilisation, la finance vous demande pourquoi le budget ne cesse d'augmenter sans que les revenus ne suivent. Le moyen le plus rapide de perdre vos effectifs lors d'un examen du budget.
L'art réside dans la recherche du corridor entre ces deux précipices et y rester à mesure que la charge de travail change.
Trois questions principales animent chaque exercice de capacité :
- Qu'avons-nous ? Capacité actuelle en unités concrètes : requêtes par seconde, requêtes par minute, gigaoctets de stockage, connexions simultanées.
- De quoi avons-nous besoin ? Demande prévue à une date future avec des limites d'incertitude explicites.
- Quand devons-nous agir ? Délai d'approvisionnement, de provisionnement ou de mise à l'échelle. Le cloud le réduit à quelques minutes ; sur site peut signifier des mois.
Pourquoi cela ne peut pas être une feuille de calcul
Une entreprise de commerce électronique planifie la capacité une fois par an, en novembre, en extrapolant linéairement les 12 derniers mois de trafic. Elle fonctionne sur des serveurs dédiés avec un délai de 6 semaines pour l'approvisionnement. Son trafic montre une forte saisonnalité hebdomadaire (pic de 3x le week-end), une forte saisonnalité annuelle (Black Friday 5x), & a connu une croissance de 40% année sur année pendant trois ans.
Charge de travail par rapport à utilisation
Deux nombres différents, tous deux requis
La planification de la capacité échoue lorsque les équipes mesurent seulement l'une des deux dimensions essentielles.
Charge de travail : la demande sur le système de l'extérieur. Requêtes par seconde, transactions par minute, mégaoctets par seconde, utilisateurs simultanés. La charge de travail décrit ce que le monde vous demande.
Utilisation : à quel point le système fonctionne plein en servant cette demande. Pourcentage CPU, mémoire utilisée, profondeur de queue, bande passante réseau, opérations disque par seconde. L'utilisation décrit à quel point le système se sent sous cette demande.
La charge de travail seule vous dit ce qui vient mais non si vous pouvez le servir. L'utilisation seule vous dit à quel point vous êtes plein mais pas ce qu'il faut attendre demain. Vous avez besoin des deux, tracées côte à côte, pour prendre des décisions de capacité.
Ratio de capacité = charge de travail / utilisation. Si vous servez 1 000 requêtes par seconde à 50% CPU, votre ratio de capacité est 2 000 RPS par 100% CPU par serveur. Ce facteur de conversion vous permet de traduire la charge de travail prévue en nombre de serveurs requis.
Allspaw insiste sur la mesure à la bonne granularité. Un échantillon par minute masque les pics de 30 secondes. Un échantillon par heure masque tout. Le vrai travail de capacité nécessite une résolution inférieure à la minute pour les événements de pointe et une résolution à la minute pour les tendances. Tout ce qui est plus grossier produit une fausse confiance dangereuse.
Quoi instrumenter
Votre équipe lance l'instrumentation de capacité sur le lancement d'un nouveau produit (un service de transcodage vidéo). Vous pouvez choisir jusqu'à 8 métriques à suivre à une résolution inférieure à la minute. Le service ingère les uploads vidéo, les met en file d'attente, transcode en plusieurs formats, & écrit les résultats dans un stockage d'objets.
Tendance, saisonnalité, incertitude
Trois couches de chaque prévision
Allspaw et le livre SRE de Google s'accordent sur la structure d'une prévision utile : tendance, saisonnalité & limites d'incertitude. Ignorer l'une des trois et la prévision devient trompeuse.
Tendance : la pente de la demande sur des mois ou des années. Souvent modélisée par régression linéaire pour les fenêtres courtes, exponentielle ou par morceaux pour la croissance composée. La ligne de tendance répond à la question 'où la demande se dirige-t-elle en général ?'
Saisonnalité : les motifs cycliques à plusieurs échelles de temps. Quotidien (trafic de pointe l'après-midi), hebdomadaire (pics de week-end), annuel (Black Friday, saison fiscale, année scolaire). La saisonnalité multiplicative s'adapte à la tendance ; la saisonnalité additive ajoute un décalage constant.
Limites d'incertitude : le cône de prévision. Une prévision sans limites est une supposition. Les vraies prévisions publient une estimation centrale avec des limites inférieure et supérieure explicites, généralement avec une confiance de 90% ou 95%. Le cône s'élargit à mesure que vous projetez plus loin dans l'avenir. Une prévision de 4 semaines peut avoir des limites ±10% ; une prévision de 12 mois a souvent ±50%.
Découpler la croissance commerciale de la demande technique : les prévisions de planification de capacité prévoient la charge de travail technique, mais les équipes commerciales prévoient les revenus, les inscriptions ou les campagnes. Le travail du planificateur de capacité est de traduire les prévisions commerciales en demande technique : une croissance de 30% des inscriptions peut signifier 30% d'appels API en plus, mais elle peut signifier 80% en plus si les nouveaux utilisateurs utilisent le système plus intensément, ou seulement 15% si ils convertissent à des taux plus faibles. Le ratio de conversion compte autant que la prévision commerciale sous-jacente.
Prévision du trafic des vacances
Votre service dessert un site de commerce électronique. Le trafic du Black Friday l'année dernière était 5x la moyenne de novembre, soutenu pendant 12 heures. L'entreprise a connu une croissance de 40% année sur année. Le marketing lance une promotion payante censée ajouter 20% supplémentaires au trafic du Black Friday cette année.
Connaître votre plafond
Trouver le plafond avant que la production ne le fasse
La prévision vous dit ce qui vient. Les tests de plafond vous disent si le système peut le servir. Allspaw traite les tests de plafond comme un apport non négociable à la planification de la capacité : vous ne connaissez pas votre vraie capacité jusqu'à ce que vous l'ayez testée sous charge contrôlée.
Trois types de tests de plafond :
- Test de charge synthétique : un générateur de charge (k6, Locust, JMeter, vegeta) entraîne le trafic vers un service cible en staging. Augmentez la charge jusqu'à ce que quelque chose se casse. Le point de rupture est le plafond. Meilleur pour les tests de service isolés.
- Exercice d'incendie en production : réduisez délibérément la capacité en production (drainer un pourcentage de serveurs, tuer une région) et observez comment la capacité restante gère le trafic réel. Teste le vrai comportement en production y compris les interactions inattendues. Confiance la plus élevée mais risque le plus élevé.
- Charge fantôme : relisez le trafic réel de production vers un service cible s'exécutant en parallèle avec la production. Capture les véritables modèles de charge de travail (mélange de requêtes rare, agents utilisateurs bizarres) sans affecter les utilisateurs. Juste milieu solide.
La marge de sécurité est le tampon entre la charge actuelle et le plafond. Règles d'or SRE :
- 50% de marge de sécurité en état stable pour un service dans une seule région (pour qu'une défaillance de région n'épuise pas la région restante)
- 30% de marge de sécurité pour un service multi-région avec redondance N+2
- 100%+ de marge de sécurité à l'approche des événements de pointe connus (Black Friday, finales de sports)
La marge de sécurité n'est pas un gaspillage. C'est le coût de ne pas appeler des ingénieurs à 3 heures du matin, de ne pas perdre de clients pendant une pointe, & de ne pas souffrir d'une défaillance en cascade lorsqu'une région échoue. Les équipes de finance poussent parfois à réduire la marge de sécurité ; les ingénieurs de capacité doivent articuler le coût de fonctionner étroitement pour que cette conversation soit factuelle plutôt qu'émotionnelle.
Concevoir un test de plafond
Vous héritez d'un service sans plafond de capacité documenté. La charge de production actuelle est 800 requêtes par seconde sur 12 serveurs, CPU moyen 35%. Le marketing annonce une campagne dans 6 semaines censée augmenter le trafic à 3 000 RPS à la pointe.
Vers le haut, vers l'extérieur, ou en diagonale
Quand ajouter de la puissance, ajouter des boîtes, ou les deux
Trois stratégies de mise à l'échelle fondamentales, chacune avec des profils de coût et de fiabilité distincts :
Mise à l'échelle verticale (montée en puissance) : machines plus grandes. Remplacez les serveurs 8 cœurs par des serveurs 32 cœurs. Chemin le plus simple ; fonctionne jusqu'à ce que vous atteigniez les limites des machines uniques. Le point unique de défaillance reste. Le coût croît de manière non-linéaire : une machine 32 cœurs coûte souvent plus de 4x une machine 8 cœurs.
Mise à l'échelle horizontale (mise à l'échelle) : plus de machines. Ajoutez des serveurs derrière un équilibreur de charge. La capacité se met à l'échelle linéairement avec le nombre de serveurs. Les modes de défaillance changent : vous devez gérer la coordination distribuée, mais une défaillance de serveur unique ne détruit plus le service. La complexité opérationnelle augmente.
Mise à l'échelle diagonale (terme d'Allspaw) : montez en puissance d'abord vers une taille par serveur confortable, puis montez horizontalement à partir de là. Combine les opérations plus simples des gros serveurs avec la redondance de plusieurs serveurs. La plupart des services en production vivent dans le territoire de mise à l'échelle diagonale.
Capacité réservée par rapport aux prix à la demande : les fournisseurs de cloud récompensent la prévisibilité. La capacité réservée est 30-60% moins chère que à la demande mais nécessite un engagement de 1-3 ans. Les planificateurs de capacité verrouillent généralement la demande en régime stable avec une capacité réservée et éclatent à la demande pour les pics. Mal juger cette division peut soit gaspiller de l'argent (sur-réservé) soit exposer le budget à la surprise (sous-réservé pendant les pics).
Instances Spot et charges de travail préemptibles : 60-90% moins cher que à la demande mais peuvent être reprises avec quelques minutes de préavis. Convenable pour les travaux par lots, l'analytique, les charges de travail d'entraînement, ou tout service conçu pour l'interruption gracieuse. Le trafic en production face aux utilisateurs évite généralement spot.
Choisir un chemin de mise à l'échelle
Votre service de transcodage vidéo s'exécute sur 8 instances cloud de taille moyenne (8 cœurs chacune). Vous attendez une croissance 3x au cours des 6 prochains mois. La charge de travail est liée au CPU, parallélisable par vidéo, & chaque transcode vidéo prend 90 secondes de bout en bout. Les instances réservées coûtent 50% du prix à la demande. Les instances Spot coûtent 30% du prix à la demande mais peuvent être résiliées avec 2 minutes de préavis.
Carrières en planification de capacité
Où les compétences en planification de capacité rapportent
La planification de la capacité est rarement un titre de poste en soi. Les compétences apparaissent sous plusieurs rôles :
Ingénieur en fiabilité de site : la planification de la capacité est une responsabilité SRE principale. La plupart des équipes SRE ont un ou deux ingénieurs qui se spécialisent dans la capacité, possédant les modèles de prévision, les tests de plafond & l'automatisation du provisionnement.
Ingénieur coût cloud / FinOps : un rôle plus récent axé sur l'optimisation des dépenses cloud. Combine la planification de la capacité avec la modélisation financière, la négociation contractuelle & la gestion du portefeuille d'instances réservées. Paie extrêmement bien dans les grandes entreprises nées du cloud car les factures de cloud sont souvent la deuxième plus grande dépense après la masse salariale.
Ingénieur en performance : se concentre sur l'efficacité par nœud et les tests de plafond. Le travail : extraire plus de capacité du même matériel par le profilage, l'optimisation & les changements architecturaux. Connaissances lourdes des systèmes et runtimes de langage.
Spécialiste en planification de capacité : dans les très grandes entreprises (Google, Meta, Amazon, Netflix), des équipes dédiées à la planification de la capacité existent. Ils possèdent les modèles de prévision sur toute la flotte, négocient l'approvisionnement à grande échelle & coordonnent avec la finance sur les feuilles de route matérielles pluriannuelles.
Compétences qui composent : analyse des séries temporelles (R, Python statsmodels, Prophet), théorie de la mise en file d'attente (M/M/1, M/M/c, loi de Little), au moins un outil de gestion de configuration, au moins un tableau de bord de coûts cloud, & la capacité à écrire un rapport de prévision qu'un CFO peut comprendre et mettre en action. Les compétences techniques vous obtiennent l'entretien ; les compétences en communication vous obtiennent le budget.
Conclusion
Ce que vous savez maintenant
La planification de la capacité est une discipline continue, pas un exercice annuel. Vous avez couvert :
- Le corridor entre sous-approvisionnement & surprovisionnement
- Charge de travail par rapport utilisation comme les deux dimensions de la mesure
- Tendance, saisonnalité & limites d'incertitude comme les trois couches de chaque prévision
- Tests de plafond (synthétique, fantôme, exercice d'incendie) comme le seul moyen de connaître la vraie capacité
- Marges de sécurité & pourquoi elles ne sont pas un gaspillage
- Mise à l'échelle diagonale & la décision de tarification réservée/à la demande/spot
- Chemins de carrière où ces compétences rapportent l'autorité budgétaire
Deux idées comptent vraiment. Prévoir avec des limites, jamais avec des points uniques. Et mesurez votre plafond avant que la production ne le fasse. Portez ces deux idées en avant & le reste suit.
Lecture recommandée : 'The Art of Capacity Planning' d'Allspaw (O'Reilly, 2017 deuxième édition), les chapitres pertinents du SRE Book de Google (gratuit sur sre.google/books/), & 'Systems Performance' de Brendan Gregg pour le travail de systèmes sous-jacent. La leçon compagne geometry-of approfondit la structure visuelle : la loi de Little comme aire, les courbes de mise en file d'attente, les pentes de tendance & les enveloppes de marge de sécurité.