Équilibrer le besoin de fiabilité du service avec la nécessité de publier de nouvelles fonctionnalités.
→Définir un objectif de niveau de service (SLO) (par exemple, 99,9 % de disponibilité). Les 0,1 % restants constituent le budget d'erreur. Si le budget est majoritairement intact, livrer des fonctionnalités. Si le budget est épuisé, suspendre les livraisons de fonctionnalités et se concentrer sur les améliorations de la fiabilité.
Pourquoi: Le budget d'erreur fournit un cadre basé sur les données pour prendre des décisions de risque, alignant les équipes d'ingénierie, de produit et commerciales sur un objectif commun.
Apprendre des incidents pour éviter qu'ils ne se reproduisent, tout en favorisant une culture de sécurité psychologique.
→Mener des post-mortems non-blâmantes après les incidents. Concentrer l'enquête sur les facteurs systémiques, les lacunes des processus et les défaillances des outils, et non sur l'attribution de la faute à des individus. Le résultat devrait être une liste d'éléments d'amélioration actionnables.
Pourquoi: Une culture non-blâmante encourage une communication honnête et ouverte, menant à une compréhension plus précise des causes profondes d'un incident et à des actions préventives plus efficaces.
Coordonner efficacement la réponse à un incident majeur, en évitant la confusion et la duplication des efforts.
→Mettre en œuvre un système de commandement des incidents (ICS) avec des rôles clairement définis : Commandant d'incident (coordination générale), Responsable des opérations (enquête/correction technique) et Responsable des communications (mises à jour des parties prenantes).
Pourquoi: L'ICS fournit une structure standardisée et évolutive pour la réponse aux incidents, garantissant des lignes d'autorité et de communication claires, ce qui est crucial pour résoudre rapidement les problèmes complexes.
Mesurer la performance d'une organisation de livraison de logiciels.
→Suivre les quatre métriques DORA clés : Fréquence de déploiement (à quelle fréquence), Délai de mise en production (rapidité du commit au déploiement), Taux d'échec des changements (quel pourcentage de déploiements provoque des échecs) et Temps de restauration de service (MTTR).
Pourquoi: Ces quatre métriques offrent une vue équilibrée de la vélocité de développement et de la stabilité opérationnelle, et il a été prouvé qu'elles sont corrélées avec les organisations très performantes.
Une équipe SRE passe trop de temps sur des tâches opérationnelles manuelles et répétitives (toil), ne laissant pas de temps pour les projets d'ingénierie.
→Identifier et quantifier le toil le plus chronophage. Prioriser et automatiser ces tâches (par exemple, implémenter l'autoscaling au lieu de la mise à l'échelle manuelle, l'auto-remédiation pour les alertes courantes). Limiter le toil à < 50 % du temps d'ingénieur.
Pourquoi: Le toil est un frein à la productivité et au moral. Le réduire systématiquement par l'automatisation libère les ingénieurs pour travailler sur des améliorations de la fiabilité à long terme.
Attribuer les coûts cloud avec précision à différentes équipes, services ou environnements dans une infrastructure partagée.
→Implémenter une stratégie de labellisation/tagging cohérente. Utiliser ces labels pour filtrer dans les rapports de facturation Cloud. Pour GKE, activer l'allocation des coûts GKE pour ventiler les coûts par namespace ou charge de travail.
Pourquoi: Une allocation précise des coûts offre de la visibilité, ce qui favorise la responsabilisation. Les équipes qui peuvent voir leurs dépenses sont habilitées à les optimiser.
Optimiser les coûts de calcul pour un ensemble diversifié de charges de travail (stables, interruptibles, dev/test).
→Faire correspondre la charge de travail au modèle de tarification. Utiliser les remises pour engagement d'utilisation (CUDs) pour les charges de travail stables 24h/24 et 7j/7. Utiliser les VM Spot pour les tâches tolérantes aux pannes et interruptibles (par exemple, le traitement par lots). Planifier l'arrêt des environnements de développement/test en dehors des heures ouvrables.
Pourquoi: Une approche unique pour la tarification du calcul est inefficace. Utiliser le bon outil pour la tâche peut entraîner des économies importantes (>70 %) sans impacter les performances.
Optimiser les coûts et les performances de GKE en s'assurant que les pods demandent des quantités appropriées de CPU et de mémoire.
→Déployer le Vertical Pod Autoscaler (VPA) en mode `recommendation`. Analyser ses suggestions pour ajuster les `requests` de ressources des pods. Une fois confiant, passer en mode `auto` pour un redimensionnement continu.
Pourquoi: Le sur-provisionnement des pods gaspille de l'argent, tandis que le sous-provisionnement entraîne des problèmes de performance (étranglement, OOMKilled). Le VPA utilise les données d'utilisation réelles pour faire des recommandations de dimensionnement précises, améliorant à la fois l'efficacité et la stabilité.
Réduire la latence causée par les démarrages à froid pour un service Cloud Run.
→Configurer une valeur `min-instances` pour maintenir un certain nombre d'instances chaudes. De plus, optimiser l'image du conteneur (image de base plus petite, moins de couches) et le code de démarrage de l'application (initialisation paresseuse).
Pourquoi: `min-instances` est le moyen le plus direct de réduire les démarrages à froid, mais cela a un coût. Le combiner avec l'optimisation du conteneur et du code offre une approche équilibrée de la performance et du coût.
Optimiser les coûts pour une charge de travail d'analyse BigQuery à grande échelle avec des modèles de requêtes variables.
→Passer de la tarification à la demande aux éditions BigQuery (slots). Acheter un engagement de slots de base pour une charge prévisible et activer l'autoscaling pour les pics. De plus, optimiser les requêtes en utilisant des tables partitionnées/clusterisées et en évitant `SELECT *`.
Pourquoi: Pour les charges de travail cohérentes, la tarification basée sur les slots est plus rentable que la tarification à la demande. L'autoscaling offre une flexibilité pour les pics tout en contrôlant les coûts. L'optimisation des requêtes et des tables réduit la quantité de données traitées, diminuant directement les coûts.
Réduire les coûts élevés de sortie réseau pour une application distribuée mondialement.
→Utiliser Cloud CDN pour mettre en cache le contenu statique en périphérie, plus près des utilisateurs. Pour le trafic dynamique, choisir le niveau de service réseau approprié (Premium pour les performances, Standard pour les économies de coûts). Traiter les données régionalement pour minimiser le trafic inter-régions.
Pourquoi: La sortie est un facteur de coût majeur. Le CDN décharge le trafic de l'origine, réduisant directement la sortie. Une utilisation judicieuse des niveaux de réseau et du traitement régional des données peut réduire considérablement les coûts.