Partager via


Principes de conception de l’excellence opérationnelle

Au cœur du pilier Excellence opérationnelle, les pratiques DevOps garantissent la qualité de la charge de travail par le biais de flux de travail standardisés et de la cohésion de l’équipe. Ce pilier définit des procédures d’exploitation pour les pratiques de développement, l’observabilité et la gestion des mises en production. L’objectif est de réduire la variance des processus, les chances d’erreur humaine et l’interruption des clients. Pour évaluer votre intégrité opérationnelle, commencez par les questions suivantes :

  • Exécutez-vous des opérations avec discipline ?
  • Les clients utilisent-ils la charge de travail avec une prévisibilité maximale ?
  • Comment apprendre de l’expérience et des données collectées pour favoriser l’amélioration continue ?

Les opérations de charge de travail peuvent se transformer en pratiques chaotiques lorsqu’il n’y a pas de propriété ou de leadership clair. Dans ce type d’environnement, les équipes ont souvent recours à des méthodes exécutées avec un effort élevé et produisent des résultats faibles, ce qui conduit à une expérience utilisateur médiocre. Ces approches répondent uniquement aux objectifs à court terme. Les avantages à long terme sont réalisés grâce à l’évaluation continue et aux investissements stratégiques.

Les principes de conception fournissent des lignes directrices pour les stratégies opérationnelles qui doivent être prises en compte pour traiter les causes sous-jacentes et non seulement traiter les symptômes. Commencez par les approches recommandées, puis observez ce qui fonctionne et ce qui ne permet pas d’identifier les domaines d’amélioration. Après avoir défini votre stratégie, continuez à agir à l’aide de la liste de contrôle d’excellence opérationnelle.

Les exigences opérationnelles d’une charge de travail sont aussi importantes que ses besoins métier. Les processus efficaces garantissent que la charge de travail atteint les résultats métier dans les contraintes de conformité, que cette conformité soit organisationnelle ou externe. La clé consiste à trouver la répétabilité avec cohérence.

Les objectifs du pilier Excellence opérationnelle sont de faire la bonne chose, de le faire de la bonne façon et de résoudre les problèmes appropriés en tant qu’équipe.

Si vous atteignez ces objectifs, les charges de travail s’exécutent de manière fiable et prévisible même pendant les périodes de modification. L’incapacité à répondre aux exigences opérationnelles peut entraîner des déploiements défaillants, une expérience utilisateur incohérente et des coûts supplémentaires qui auraient pu être évités par le biais d’une planification appropriée et d’une exécution simplifiée.

Adopter la culture DevOps

Icône Objectif Permettre aux équipes de développement et d’exploitation d’améliorer continuellement la conception et les processus de leur système en travaillant avec un état d’esprit de collaboration, de responsabilité partagée et de propriété.

DevOps est une communauté de pratique où la diversité du point de vue et des compétences s’oriente vers une mission. Les équipes doivent favoriser un environnement collaboratif de connaissances partagées au lieu d’apprendre en silo. Utilisez des fonctions partagées pour tenter de surmonter les contraintes de ressources.

Une bonne culture DevOps s’étend sur la responsabilité partagée. Les équipes de développement et d’exploitation doivent aligner leurs objectifs et leurs priorités avec les attentes de leurs clients et garder le focus sur l’entreprise à l’esprit. L’équipe de développement doit impliquer l’équipe des opérations dans la boucle de commentaires afin que les améliorations soient pilotées amont et d’autres équipes bénéficient également. À l’inverse, les équipes d’exploitation sont responsables de la réussite de l’équipe de développement dans leurs résultats métier en partageant des ressources et des commentaires pertinents pour la charge de travail.

En même temps, les pratiques DevOps appliquent des lignes claires de propriété et de responsabilité à chaque équipe. Quel que soit l’endroit où l’application s’exécute, l’équipe de charge de travail est responsable de cette application.

DevOps optimise les tâches opérationnelles afin qu’elles soient efficaces, mais pas fastidieuses. Pour tirer pleinement parti de DevOps, la culture doit optimiser les processus par le biais de la technologie et avoir des processus pour les personnes de l’organisation afin de promouvoir la communication transparente.

Approche Avantages
Utilisez des systèmes et des outils courants qui favorisent un environnement collaboratif pour la communication et le suivi de la progression. Les outils et processus courants permettent une communication transparente. Les équipes de développement et d’exploitation bénéficient à la fois de la sensibilisation à la situation dans différents environnements, des problèmes de support courants et des défis globaux et des victoires.

Teams connaît déjà les chemins d’escalade existants s’il existe un incident.

Un backlog partagé rend les priorités, telles que le travail sur de nouvelles fonctionnalités ou la résolution des bogues, clair.
Créez un état d’esprit continu d’apprentissage et d’expérimentation tout au long du cycle de développement.

Prenez en charge le partage des connaissances entre les équipes et gérez la documentation pour la réutilisation.

Effectuer des analyses sans blâme et des évaluations post-publication et/ou post-incident.
Grâce à des mécanismes d’expérimentation, tels que les tests A/B et le développement de preuves de concept, vous pouvez encourager l’innovation tout en conservant les coûts bas.

Partagez des connaissances grâce à la collaboration qui rend l’équipe compétent dans les approches de conception, les outils et les processus.

Faire des rétrospectives après un projet permet d’identifier les domaines d’amélioration et de célébrer le succès.
Adoptez des pratiques agiles éprouvées du secteur qui se concentrent sur l’optimisation des actions.

Recherchez des opportunités de « décalage vers la gauche » dans les opérations pour les processus manuels et automatisés, les pratiques de déploiement et d’assurance qualité, ainsi que l’observabilité.
Les pratiques de développement agiles mènent à des cycles de vie de mise en production plus courts, qui sont un indicateur de valeur métier.

La détection, la résolution et la prévention des problèmes plus tôt sont souvent moins intrusives pour le processus.
Définissez des normes pour toutes les procédures opérationnelles et de développement, puis passez en revue et validez-les à une cadence régulière.

Ces procédures incluent les tâches de routine, les processus hors bande, les exercices d’urgence et les situations, le choix d’outils, les procédures de surveillance, les plans de compétence et même la communication avec les parties prenantes et les divulgations des clients.

Soyez intentionnel et explicite sur vos décisions.
Les normes ajoutent la prévisibilité aux opérations et rendent les processus et les pratiques évolutifs. La validation des normes est un excellent moyen de dessiner des points d’amélioration.

Préparez-vous aux situations d’urgence et de récupération en effectuant des exercices réguliers.

Exécutez avec précision et activez la gouvernance pour éviter les anomalies qui entraînent des risques.
Tirez parti des équipes d’opérations centralisées avec des compétences spécialisées et une étendue d’expérience. Il existe un avantage pour utiliser des ressources partagées à la fois pour les opérations et les ressources.

Bien que vous possédiez votre charge de travail, l’équipe centralisée vous aide à acquérir des compétences interfonctionnelles, telles que la gestion des incidents, une perspective proactive sur la surveillance et l’expertise en externalisation avec confiance.

Établir des normes de développement

Icône Objectif Optimisez la productivité en standardisant les pratiques de développement, en appliquant des portes de qualité et en effectuant le suivi des progrès et du succès grâce à la gestion systématique des changements.

L’équipe de développement est chargée de résoudre les problèmes de charge de travail avant la mise en production avec une friction minimale. N’oubliez pas l’efficacité du développeur et optimisez les cycles de traitement rapide, du codage aux résultats des tests. Implémentez des processus efficaces et de taille appropriée qui planifient et normalisent les activités techniques et favorisent également le consensus au sein de l’équipe et des parties prenantes.

Approche Avantages
Documenter les fonctionnalités de charge de travail et capturer les avantages des clients.

Dérivez l’étendue et les exigences fonctionnelles et non fonctionnelles détaillées de l’architecture.

Créez des modèles d’estimation de dimensionnement pour signaler l’étendue et le coût des tâches impliquées.
De bonnes spécifications réduisent les coûts opérationnels et les risques d’échec en soutenant des cycles de développement plus productifs et simplifiés.

Les développeurs comprennent la conception technique, les objectifs et les critères d’achèvement avant de commencer le cycle de codage.

Une bonne documentation facilite la communication et l’intégration reproductibles des nouveaux membres de l’équipe.
Utilisez une méthodologie de développement de logiciels standard du secteur adaptée aux besoins de votre charge de travail et de votre taille d’équipe.

Conservez un backlog partagé entre tous les rôles.
L’adoption d’une méthodologie connue définit le rythme du projet. Elle supprime les ambiguïtés du processus en donnant aux membres de l’équipe des attentes claires et à la responsabilité.

En suivant une liste commune, les tâches peuvent être affinées et hiérarchisées avec les pratiques standard. Le projet aura de meilleures chances d’être livré à temps.

Les méthodologies standard aident à la gestion des risques. Avec des révisions de jalons granulaires, les développeurs peuvent résoudre les problèmes potentiels avant qu’ils ne deviennent des afficheurs.
Utilisez le contrôle de code source unifié pour tous les codes, scripts, modèles de déploiement, définitions de pipeline et documentation associée.

La stratégie de branchement doit prendre en charge le déploiement sans friction des fonctionnalités indépendantes et interdépendantes, des correctifs de bogues et des correctifs d'urgence.

Utilisez des connaissances partagées au sein de l’organisation pour créer votre stratégie de branchement et vos processus de déploiement.
L’utilisation appropriée du contrôle de code source est essentielle pour prendre en charge les modifications simultanées et le contrôle de version.

Conservez un flux de travail reproductible pour libérer des modifications de différentes tailles et risques, effectuer des révisions par les pairs dans le cadre du processus et conserver une piste d’audit.
Disposer de processus d’assurance qualité qui mettent l’accent sur les tests au début du cycle de vie du développement.

Incluez tous les artefacts pour les procédures de test planifiées, notamment les composants d’application, l’infrastructure et les opérations de plan de données qui font partie d’une version ou d’une mise à jour de fonctionnalités.

Traitez les artefacts comme immuables lorsqu’ils sont promus par le biais d’environnements, en obtenant confiance chaque fois qu’ils passent par une porte de qualité.

Là où c’est pratique, automatisez les case activée de routine.
L’assurance qualité garantit que les exigences fonctionnelles et non fonctionnelles ont été satisfaites avec confiance, ce qui entraîne un impact positif sur le client.

Le fait d’avoir des plans de test garantit la qualité et l’exhaustivité et prend en compte les cas d’échec possibles.

Avec des portes de qualité, vous pouvez appliquer les meilleures pratiques pour réduire les risques.

L’immuabilité apporte confiance, car elle garantit que le système que vous testez est exactement ce que vous relâchez.

Les cycles de test bloquent efficacement la progression, sauf si les critères de qualité sont remplis.
Favoriser la cohérence à l’aide de guides de style et d’outils, qui appliquent des conventions et adoptent une chaîne d’outils commune pour le développement, le test et la communication avec les parties prenantes.

Les normes technologiques pour les développeurs doivent nécessiter l’implémentation de modèles, de conception d’API, dejournalisation, de gestion des exceptions et d’autres processus.
La cohérence dans le code permet de lire et de faciliter la maintenance. Elle réduit également la complexité et permet la réutilisation du code.

Les outils et conventions courants aident également les équipes à optimiser les processus sans avoir à répondre aux choix ponctuels.
Insistez systématiquement et délibérément sur la documentation par les développeurs du code au fur et à mesure qu'il est écrit. La documentation sur le code clair garantit que la logique et les fonctionnalités sont facilement comprises lorsque l’ancien code doit être revisité ou lorsque les équipes de développement pivotent.
Signaler la progression et les tendances pour mesurer l’efficacité. Les tendances des bogues, des mises à jour ayant échoué, du temps de déploiement, des boucles de commentaires et d’autres métriques sont publiées, et qui entraînent des améliorations.

Faire évoluer les opérations avec observabilité

Icône Objectif Obtenez une visibilité sur le système, dérivez des insights et prenez des décisions pilotées par les données.

Créez une culture qui améliore continuellement la qualité en analysant la charge de travail et en prenant en compte tous les piliers de l’infrastructure Azure Well-Architected Framework. Permettre à l’équipe et aux parties prenantes de prendre des décisions à court et à long terme sur de nombreuses facettes en fournissant les données, les statistiques et les tendances nécessaires. Découvrez vos données et apportez des améliorations.

Les opérations conçues à des fins d’observation sont essentielles à la maintenance proactive de l’application, de la qualité et de la sécurité, de la planification de la capacité et de la gestion des produits.

Un aspect crucial de la supervision est l’application à l’aide de la modélisation de l’intégrité pour vous aider à anticiper les problèmes avant qu’ils ne deviennent des incidents et n’affectent l’expérience client. Une surveillance efficace réduit les cycles réactifs consacrés à la gestion des incidents.

Approche Avantages
Créez un système de surveillance avec son propre ensemble et ses propres flux.

Traitez le système de surveillance comme une dimension de la charge de travail découplée de son utilitaire. La pile doit couvrir toutes les couches, notamment l’infrastructure, l’intégrité des applications et les processus de génération et de mise en production.

La capture ou l’échantillonnage des données métier est hors de portée pour les implémentations d’observabilité.
Dissocier la surveillance et les charges de travail afin de séparer les exigences fonctionnelles et les exigences d’observabilité et permettre une évolution indépendante. Les modifications du code ne doivent pas affecter la surveillance, et inversement.

Étant donné que les exigences d’observabilité sont distinctes des exigences fonctionnelles, les données métierne seront pas perturbées par la surveillance des modifications de configuration ou des pannes.
Assurez la cohérence dans le processus de collecte pour chaque type de source de données.

Normaliser l’instrumentation dans le code à l’aide de normes du secteur pour la télémétrie, la collecte des métriques d’infrastructure et les outils.
La cohérence empêche la variance dans la détection et la mesure, car la familiarité entre les ressources similaires réduit le temps consacré à la corrélation et à l’analyse des données. Vous avez une perspective holistique pour anticiper les problèmes.

Émettez des données de télémétrie à partir du code d’application qui corrèle les points clés du flux d’exécution et fournit une vue de bout en bout à différents niveaux de granularité. Hiérarchisez les actions en fonction du niveau de gravité et comprenez le contexte en raison de sa verbosité. Ces informations sont cruciales à des fins de résolution des problèmes.
Vous êtes propriétaire de l’émission et de la collecte de données, même lorsque les récepteurs de données sont partagés par plusieurs équipes et gérés par des équipes centrales. En localisant les données de surveillance dans l’environnement de charge de travail, l’équipe peut accéder aux journaux et aux métriques pour répondre aux problèmes de charge de travail.
Collectez suffisamment de données et conservez-les pendant suffisamment de temps.

Tenez compte des compromis liés à la journalisation et au stockage des données.
La collecte intentionnelle de données vous permet d’optimiser les coûts financiers et opérationnels associés à la collecte de plus de données que nécessaire.

Réduisez le bruit et évitez un calcul intensif pendant l’analyse et réduisez le coût de stockage des données dont vous n’avez plus besoin.
Faites une distinction entre les différents signaux de surveillance : profils, journaux, métriques et traces. Utilisez chaque signal à des fins appropriées.

Hiérarchiser l’utilisation des métriques pour déclencher des actions qui s’appuient sur des mesures numériques.

Utilisez des profils pour obtenir une visibilité de niveau inférieur, telle que l’allocation de mémoire, dans le système.

Réservez l’utilisation des journaux et des traces pour fournir un contexte pour les flux et les dépendances.
En utilisant les signaux à des fins appropriées, vous pouvez empêcher l’implémentation inefficace du système de surveillance.

Par exemple, l’utilisation de logs pour les actions nécessite l’analyse. Vous pouvez peut-être atteindre les mêmes objectifs plus rapidement avec les métriques.
Agréger et visualiser des données dans des tableaux de bord pour présenter des données de surveillance adaptées aux audiences et garder à l’esprit le contexte métier.

Utilisez des tableaux de bord situationnels pour afficher les données et sensibiliser les parties prenantes.

Utilisez des tableaux de bord opérationnels et des classeurs avec des fonctionnalités d’exploration pour les activités d’opérateur telles que la réponse aux incidents. Actualisez fréquemment les tableaux de bord et fournissez des données granulaires.
Avec des visualisations, vous pouvez analyser les tendances, effectuer le suivi des cibles métier et gérer les incidents.

Les tableaux de bord adaptés à l’intérêt du client rendent l’interprétation pertinente et accélèrent la détection et l’action.
Rendez les alertes exploitables en informant les rôles responsables avec des descriptions standardisées et des niveaux de gravité. Fournissez des informations compilées à partir de différentes sources et suivez les écarts des cibles métier.

Déclenchez des alertes uniquement pour les incidents nécessitant une action.

S’efforcez d’obtenir des alertes proactives et provocantes qui lancent des actions avant qu’un état dégradé ne devienne une défaillance.
Les alertes mettent l’attention sur des événements importants tels que définis par l’organisation.

Un bon système d’alerte identifie les actions et la gravité et fournit juste suffisamment de données pour améliorer la clarté et l’objectif. Les opérateurs peuvent commencer à corriger sans délai.

Automatiser pour l'efficacité

Icône Objectif Remplacer les tâches manuelles répétitives par l’automatisation logicielle qui les termine plus rapidement, avec une plus grande cohérence et précision, et réduit les risques.

La charge de travail peut avoir des workflows avec des processus qui impliquent des membres de l’équipe qui effectuent des tâches banales, répétitives et fastidieuses qui n’ont pas réellement besoin de l’intelligence humaine. Selon la fréquence, vous pouvez consacrer beaucoup de temps à ces efforts, en investissant plus de temps à mesure que la charge de travail augmente. En outre, ces processus sont souvent sujettes aux erreurs en raison d’une entrée humaine.

Grâce à l’automatisation, vous économisez du temps, de l’effort et de l’argent, et vous évitez les erreurs.

Approche Avantages
Évaluez tous les flux de travail par rapport aux critères qui sont au bon niveau de complexité, d’effort, de fréquence, de précision, de chronologie et de durée de vie.

Automatisez les flux de travail en fonction de cette évaluation et hiérarchisez les flux de travail avec les retours attendus les plus élevés.

Supprimez les flux de travail redondants ou ajoutez une valeur pour justifier l’effort humain.
Vous pouvez réinvestir la capacité d’équipe dans un travail de valeur plus élevée et augmenter la productivité et la cohérence.

La création d’un inventaire des flux de travail vous permet d’automatiser les tâches appropriées. La suppression de tâches redondantes réduit la complexité et les erreurs.
Soyez explicite sur votre décision lorsque vous évaluez s’il faut créer des outils personnalisés ou acheter des logiciels.

Réservez l’automatisation des bâtiments pour des travaux hautement spécialisés et à valeur élevée.
En achetant des logiciels hors service et en tirant parti du contrat de support, vous économisez sur les coûts de maintenance.

En créant des logiciels, vous avez plus de contrôle et pouvez répondre aux cas d’usage uniques à votre équipe et à votre charge de travail. Toutefois, il y a un impact sur les coûts.

Le choix d’outils apporte un niveau de normalisation à vos opérations. Avec la formation, vous pouvez obtenir un niveau uniforme de préparation à l’adoption.
Concevez vos composants de charge de travail pour prendre en charge les fonctionnalités d’automatisation. Évitez la situation où l’absence d’automatisation dans la conception de votre système favorise l’anti-modèle des tâches répétitives, ralentit la croissance et commence à accumuler la dette technique.
Traitez toutes les automatisations comme une dépendance critique de votre charge de travail. Adaptez-vous à la croissance attendue de la charge de travail.

Vos outils d’automatisation font partie intégrante de votre charge de travail et doivent respecter les cinq piliers de l’infrastructure bien architecte.
Concevez votre composant d’automatisation pour résister aux risques, tels que les menaces de sécurité. Avec les meilleures pratiques appliquées, vous pouvez éviter l’extension de l’implémentation.

La charge de travail continuera à fonctionner avec une garantie de haut niveau si cette dépendance est maintenue fonctionnelle et sécurisée.
Automatisez à grande échelle en explorant des options au-delà de votre charge de travail.

Privilégiez un modèle de « conception une fois, exécuté partout » en fournissant des modèles et des frameworks pour intégrer de nouveaux projets et promouvoir la réutilisation des conceptions et implémentations existantes.
Utilisez des méthodes éprouvées et réduisez les probabilités d’échec.

Adopter des pratiques de déploiement sécurisées

Icône Objectif Obtenez une cohérence dans les déploiements à l’aide de garde-fous qui réduisent l’effet des erreurs et des conditions inattendues.

Créez une chaîne d’approvisionnement de charge de travail automatisée et modulaire pour garantir des déploiements cohérents, prévisibles et reproductibles dans tous les environnements. L’application précoce de pratiques sécurisées garantit la confiance en production et permet une récupération rapide si les problèmes atteignent les clients.

Toutes les modifications, que ce soit le code, la configuration ou les artefacts, doivent être déployées avec le même niveau de rigueur. Les tests, la surveillance et le contrôle de version sont des pratiques courantes pour assurer la cohérence.

Approche Avantages
Utilisez l’infrastructure en tant que code (IaC) pour définir l’état souhaité de toutes les infrastructures.

Utilisez une approche modulaire et en couches, mais évitez les abstractions inutiles.

Alignez les couches avec les besoins du cycle de vie, ce qui maintient les couches fondamentales stables.
IaC permet l’automatisation et la cohérence du déploiement et sert de documentation autonome qui peut être utilisée pour le suivi. Les artefacts IaC font partie de votre cycle de vie de développement logiciel, ce qui permet de tester et de vérifier la qualité des processus.

IaC permet également de détecter et d’atténuer la dérive de configuration.
Préférez les petites mises à jour incrémentielles déployées fréquemment. Les mises à jour plus petites simplifient la validation en réduisant le nombre d’erreurs simultanées. Lorsque plusieurs changements défectueux sont libérés simultanément, ils peuvent augmenter considérablement le rayon d’explosion.
Déployez chaque changement de code et d’infrastructure à l’aide de pipelines automatisés dans tous les environnements. Les méthodes de déploiement cohérentes réduisent les erreurs et la variance rendant les déploiements fiables et reproductibles. Le processus de déploiement se documente lui-même et chaque exécution crée un enregistrement d’activités.
Testez les mises à jour rigoureusement tout au long du cycle de vie du développement, dans les environnements de préproduction et de production. Les tests précoces interceptent les problèmes plus tôt, permettent des correctifs itératifs et réduisent les problèmes au moment où la mise à jour est prête pour la production.

La présence de plusieurs environnements de préproduction permet différents types de tests, ce qui renforce la confiance dans une version de production réussie.
Déployez de nouvelles fonctionnalités à l’aide de modèles de déploiement qui permettent une exposition progressive et une adoption progressive par les utilisateurs.

Testez la compatibilité descendante et ascendante.
Le déploiement contrôlé des mises à jour réduit le risque de problèmes généralisés liés aux défauts. L’augmentation progressive de l’exposition permet de garantir la compatibilité et la stabilité, ce qui renforce la confiance dans la version.
Soyez prêt avec des actions de compensation pour récupérer des déploiements défectueux ou des défauts critiques en production.

Utilisez l’automatisation soutenue par les tests pour déployer des correctifs.

Pour les mises à jour d’urgence, vous disposez d’un processus accéléré pré-approuvé par les parties prenantes.
Le fait d’avoir un plan d’atténuation réduit la durée de l’impact potentiel.

Vous pouvez rapidement déployer des correctifs urgents, tels que des correctifs de sécurité, pour accélérer l’accès des utilisateurs à une version sécurisée.

Étapes suivantes

Nous vous recommandons de consulter la liste de contrôle d’excellence opérationnelle pour explorer d’autres concepts.