Partager via


Principes de conception d’une charge de travail stratégique

La méthodologie de conception critique est sous-jacente par cinq principes de conception clés qui servent de boussole pour les décisions de conception suivantes dans les domaines de conception critiques. Nous vous recommandons vivement de vous familiariser avec ces principes pour mieux comprendre leur impact et les compromis associés à la non-adhésion.

Diagramme montrant cinq principes de conception stratégiques : fiabilité, efficacité des performances, excellence opérationnelle, sécurité et optimisation des coûts organisées dans un modèle circulaire avec des relations interconnectées.

Fiabilité

Principe de conception Considérations
Conception Actif/Actif Pour optimiser la disponibilité et obtenir une tolérance de panne régionale, les composants de solution doivent être distribués entre plusieurs zones de disponibilité et régions Azure à l’aide d’un modèle de déploiement actif/actif dans la mesure du possible.
Réduction du rayon d’explosion et isolation des pannes L’échec est impossible à éviter dans un environnement cloud hyperscale hautement distribué comme Azure. En prévision des défaillances et de l’impact corrélé, des composants individuels à l’ensemble des régions Azure, une solution peut être conçue et développée de manière résiliente.
Observer la santé de l’application Avant que les problèmes ayant un impact sur la fiabilité de l’application puissent être atténués, ils doivent d’abord être détectés et compris. En surveillant l’opération d’une application par rapport à un état sain connu, il devient possible de détecter ou même de prédire les problèmes de fiabilité, ce qui permet d’effectuer des mesures correctives rapides.
Automatisation de la conduite L’une des principales causes du temps d’arrêt de l’application est une erreur humaine, qu’elle soit due au déploiement d’un logiciel ou d’une configuration incorrectement testé. Pour réduire la possibilité et l’impact des erreurs humaines, il est essentiel de s’efforcer d’automatiser tous les aspects d’une solution cloud afin d’améliorer la fiabilité ; tests, déploiements et gestion automatisés.
Conception pour la réparation automatique La réparation automatique décrit la capacité d’un système à traiter automatiquement les défaillances par le biais de protocoles de correction prédéfinis connectés aux modes d’échec dans la solution. Il s’agit d’un concept avancé qui nécessite un niveau élevé de maturité du système avec la surveillance et l’automatisation, mais doit être une aspiration de la création pour optimiser la fiabilité.
Évitement de complexité Évitez toute complexité inutile lors de la conception de la solution et de tous les processus opérationnels pour améliorer la fiabilité et l’efficacité de la gestion, ce qui réduit la probabilité de défaillances.

Efficacité des performances

Principe de conception Considérations
Concevoir en vue d’un scale-out Le scale-out est un concept qui se concentre sur la capacité d’un système à répondre à la demande par le biais d’une croissance horizontale. Cela signifie que, à mesure que le trafic augmente, plus d’unités de ressources sont ajoutées en parallèle au lieu d’augmenter la taille des ressources existantes. Une capacité de système à gérer les augmentations de trafic attendues et inattendues par le biais d’unités d’échelle est essentielle à l’ensemble des performances et de la fiabilité en réduisant davantage l’impact d’une défaillance de ressource unique.
Automatisation de l'hyperscale Les opérations de mise à l’échelle dans toute la solution doivent être entièrement automatisées pour réduire l’impact sur les performances et la disponibilité des augmentations inattendues ou attendues du trafic, ce qui garantit que le temps nécessaire pour effectuer des opérations de mise à l’échelle est compris et aligné sur un modèle pour l’intégrité de l’application.
Validation et test continus Les tests automatisés doivent être effectués dans les processus CI/CD pour générer une validation continue pour chaque modification de l’application. Les tests de charge sur une base de référence de performances avec l’expérimentation de chaos synchronisé doivent être inclus pour valider les seuils, les cibles et les hypothèses existants, ainsi que pour identifier rapidement les risques de résilience et de disponibilité. Ces tests doivent être effectués dans des environnements intermédiaires et de test, mais également dans des environnements de développement. Il peut également être utile d’exécuter un sous-ensemble de tests sur l’environnement de production, en particulier conjointement avec un modèle de déploiement bleu/vert pour valider les nouveaux tampons de déploiement avant de recevoir le trafic de production.
Réduire la surcharge avec les services de calcul managés L’utilisation de services de calcul managés et d’architectures conteneurisées réduit considérablement la surcharge administrative et opérationnelle en cours de conception, d’exploitation et de mise à l’échelle d’applications en déplaçant le déploiement et la maintenance de l’infrastructure vers le fournisseur de services managés.
Établir les performances de référence et identifier les goulots d’étranglement Les tests de performances avec des données de télémétrie détaillées de chaque composant système permettent d’identifier les goulots d’étranglement au sein du système, y compris les composants qui doivent être mis à l’échelle par rapport à d’autres composants, et ces informations doivent être incorporées dans un modèle de capacité.
Capacité du modèle Un modèle de capacité permet la planification des niveaux d’échelle des ressources pour un profil de charge donné, et expose également la façon dont les composants système s’exécutent les uns par rapport aux autres, ce qui permet une planification de l’allocation de capacité à l’échelle du système.

Excellence opérationnelle

Principe de conception Considérations
Composants faiblement couplés Le couplage libre permet des tests, des déploiements et des mises à jour indépendants et à la demande pour les composants de l’application tout en minimisant les dépendances entre équipes pour la prise en charge, les services, les ressources ou les approbations.
Automatiser les processus de génération et de mise en production Les processus de génération et de mise en production entièrement automatisés réduisent les frictions et augmentent la vitesse de déploiement des mises à jour, ce qui apporte la répétabilité et la cohérence entre les environnements. L’automatisation raccourcit la boucle de commentaires des développeurs qui poussent les modifications pour obtenir des insights sur la qualité du code, la couverture des tests, la résilience, la sécurité et les performances, ce qui augmente la productivité des développeurs.
Agilité du développeur L’automatisation de l’intégration continue et du déploiement continu (CI/CD) permet d’utiliser des environnements de développement de courte durée avec des cycles de vie liés à celle d’une branche de fonctionnalités associée, ce qui favorise l’agilité du développeur et favorise la validation dès que possible dans le cycle d’ingénierie afin de réduire le coût d’ingénierie des bogues.
Quantifier l’intégrité opérationnelle L'instrumentation de diagnostic complète de tous les composants et ressources permet l'observabilité continue des journaux d'activité, des mesures et des traces, mais facilite également la modélisation pour quantifier l'intégrité de l'application dans le contexte des exigences en matière de disponibilité et de performances.
Se préparer à la récupération et aux défaillances La planification de la continuité des activités (BC) et de la reprise après sinistre (DR) est essentielle et doit être effectuée fréquemment, car les leçons apprises permettent d'améliorer progressivement les plans et les procédures pour maximiser la résilience en cas de périodes d'interruption imprévues.
Adopter l’amélioration opérationnelle continue Hiérarchiser l’amélioration de routine de l’expérience système et utilisateur, en utilisant un modèle d’intégrité pour comprendre et mesurer l’efficacité opérationnelle avec des mécanismes de commentaires afin de permettre aux équipes d’application de comprendre et de résoudre les lacunes de manière itérative.

Sécurité

Principe de conception Considérations
Surveiller la sécurité de l’ensemble de la solution et planifier les réponses aux incidents Mettre en corrélation les événements de sécurité et d’audit pour modéliser l’intégrité de l’application et identifier les menaces actives. Établissez des procédures automatisées et manuelles pour répondre aux incidents à l’aide d’outils SIEM (Security Information and Event Management) pour le suivi.
Modèle et test contre les menaces potentielles Assurez-vous de renforcer les ressources appropriées et d’établir des procédures pour identifier et atténuer les menaces connues, en utilisant des tests de pénétration pour vérifier l’atténuation des menaces, ainsi que l’analyse statique du code et l’analyse du code.
Identifier et protéger les points de terminaison Surveiller et protéger l’intégrité réseau des points de terminaison internes et externes par le biais de fonctionnalités et d’appliances de sécurité, tels qu’un pare-feu et des pare-feu d’applications web. Utilisez des approches standard du secteur pour vous protéger contre les vecteurs d’attaque courants tels que les attaques par déni distribuéOf-Service (DDoS), telles que SlowLoris.
Protéger contre les vulnérabilités au niveau du code Identifiez et atténuez les vulnérabilités au niveau du code, telles que l’injection de scripts intersites ou SQL, et incorporez des correctifs de sécurité dans des cycles de vie opérationnels pour toutes les parties du codebase, y compris les dépendances.
Automatiser et utiliser les privilèges minimum Dirigez l’automatisation pour réduire le besoin d’interaction humaine et implémenter des privilèges minimum sur l’application et le plan de contrôle pour vous protéger contre l’exfiltration des données et les scénarios d’acteur malveillant.
Classifier et chiffrer des données Classifiez les données en fonction des risques et appliquez le chiffrement standard au repos et en transit, ce qui garantit que les clés et les certificats sont stockés en toute sécurité et gérés correctement.

Optimisation des coûts

Il existe des compromis évidents sur les coûts associés à l’introduction d’une plus grande fiabilité, qui doivent être soigneusement prises en compte dans le contexte des exigences de charge de travail.

L’optimisation de la fiabilité peut avoir un impact sur le coût financier global de la solution. Par exemple, la duplication des ressources et la distribution des ressources entre les régions pour obtenir une haute disponibilité a des implications claires sur les coûts. Pour éviter les coûts excédentaires, ne surconcevez pas ni ne surprovisionnez au-delà des besoins métiers pertinents.

En outre, des coûts supplémentaires sont associés à l’investissement d’ingénierie dans des concepts fondamentaux de fiabilité, tels que l’adoption de l’infrastructure comme le code, l’automatisation du déploiement et l’automatisation des tests. Cela se produit à un coût en termes de temps et d’effort, qui pourrait être investi ailleurs pour fournir de nouvelles fonctionnalités et fonctionnalités d’application.

Étape suivante

Les zones de conception sont interconnectées, de sorte que les changements d’une zone peuvent avoir un impact sur d’autres. Commencez par le domaine le plus critique pour votre entreprise, puis passez en revue les considérations et recommandations pour comprendre comment vos choix créent des compromis entre l’architecture.