Recommandations pour optimiser les coûts de l’environnement

S’applique à cette recommandation de liste de contrôle Azure Well-Architected Framework Cost Optimization :

CO :08 Optimisez les coûts de l’environnement. Alignez les dépenses pour hiérarchiser les environnements de préproduction, de production, d’exploitation et de récupération d’urgence. Pour chaque environnement, tenez compte de la disponibilité, des licences, des heures d’exploitation et des conditions requises et de la sécurité. Les environnements hors production doivent émuler l’environnement de production. Implémenter des compromis stratégiques dans des environnements hors production.

Ce guide décrit les recommandations relatives à l’optimisation des coûts des environnements de charge de travail. Chaque environnement doit être adapté à son objectif spécifique et optimisé pour l’efficacité des coûts. Il est important de faire des compromis stratégiques et d’allouer des ressources où elles comptent le plus, sans compromettre les composants critiques. En traitant les environnements différemment et en les optimisant en conséquence, vous pouvez obtenir un équilibre entre l’optimisation des coûts et la réalisation des objectifs requis.

Définitions

Terme Définition
Objectif de point de récupération (RPO) Durée maximale acceptable de la perte de données pendant un incident.
Objectif de délai de récupération (RTO) Il s’agit de la durée maximale acceptable pendant laquelle une application peut être indisponible après un incident.
Contrat de niveau de service (SLA) Accord contractuel entre le fournisseur de services et le client de service. Le contrat définit les objectifs de niveau de service (SLA). Le non-respect de l’accord peut avoir des conséquences financières pour le fournisseur de services.

Stratégies de conception

L’objectif de l’optimisation des coûts de l’environnement est de trouver le bon équilibre entre la valeur, le coût et le risque pour chaque environnement, notamment les environnements de production, de préproduction et de récupération d’urgence (DR). Personnalisez chaque environnement pour son utilisation particulière pour économiser de l’argent et utiliser efficacement les ressources. Déterminez les avantages de chaque environnement, comme l’efficacité ou la satisfaction des clients. Vous souhaitez évaluer le retour sur investissement (ROI) pour l’environnement, même s’il ne fait pas de profit direct. Dépensez plus d’argent sur les environnements à haut risque pour réduire les problèmes et économiser de l’argent sur les environnements à faible risque. Visez à équilibrer la valeur, le coût et le risque dans chaque environnement.

Évaluer la valeur de l’environnement

L’évaluation de la valeur de chaque environnement signifie comprendre son effet plus large sur l’entreprise, évaluer la satisfaction des utilisateurs et déterminer comment il s’aligne sur les objectifs organisationnels globaux. Cette évaluation vous aide à prendre des décisions éclairées sur l’allocation des ressources et à aligner les coûts sur les priorités environnementales. L’essence de la valeur s’étend au-delà du chiffre d’affaires généré par un environnement. Lors de l’évaluation de la valeur d’un environnement, vous devez hiérarchiser les dépenses d’une manière qui résonne avec les objectifs de la charge de travail. Pour évaluer la valeur de chaque environnement, tenez compte des facteurs suivants :

  • Considérez l’utilisateur : envisagez qui utilise chaque environnement et ce dont il a besoin. Par exemple, les clients utilisent l’environnement de production, qui doit être fiable et répondre à des contrats SLA spécifiques pour les performances et le temps d’activité.

    En revanche, l’environnement de développement est principalement destiné à l’équipe de charge de travail, comme les développeurs et les testeurs. Cet environnement n’a pas besoin de répondre aux contrats SLA côté client, mais il doit disposer des outils et ressources nécessaires pour que l’équipe fonctionne efficacement.

    Lorsque vous comprenez les besoins uniques des utilisateurs dans chaque environnement, vous pouvez mieux allouer des ressources et éviter des coûts supplémentaires. Cette évitement permet de s’assurer que chaque environnement est fonctionnel et rentable.

  • Aligner sur les mesures organisationnelles de valeur : alignez vos efforts de réduction des coûts avec les priorités de votre organisation, telles que le profit ou la satisfaction des employés. Pour chaque environnement, comprenez la façon dont la réussite est définie, de sorte que vous pouvez conserver vos actions sur la cible. Par exemple, si votre organisation se concentre sur l’optimisation des bénéfices ou la satisfaction des employés, alignez vos décisions de dépense avec ces métriques.

Déterminer les coûts d’environnement

La détermination des coûts d’environnement consiste à connaître les coûts d’infrastructure, de services, de licences et de dépenses opérationnelles dans chaque environnement de charge de travail. Les outils de gestion des coûts sont essentiels pour obtenir des insights sur les modèles de dépense et les tendances entre les environnements. Pour déterminer les coûts de l’environnement, tenez compte de ces stratégies :

  • Identifier les facteurs clés qui favorisent les coûts dans chaque environnement. Ces facteurs peuvent inclure l’utilisation des ressources, l’utilisation du stockage, la rétention des données, le transfert de données et des services spécifiques.

  • Évaluer les risques : évaluez les risques associés aux décisions de dépense et à leur effet potentiel sur l’environnement et les opérations commerciales. Tenez compte des facteurs tels que la sécurité des données, la conformité, les performances, les audits et les exigences du contrat SLA.

  • Surveillez et ajustez vos dépenses : surveillez et analysez en continu les modèles de dépense, la livraison de valeur et les facteurs de risque. Passez régulièrement en revue et ajustez vos stratégies d’optimisation des dépenses à mesure que les besoins de l’environnement et de l’entreprise évoluent.

Optimiser l’environnement de production

L’optimisation des coûts dans l’environnement de production implique l’implémentation de stratégies pour réduire les dépenses inutiles et améliorer l’efficacité opérationnelle. Concentrez-vous sur la différenciation des déploiements de production et répondez aux besoins des utilisateurs. Voici des recommandations pour optimiser l’environnement de production :

  • Différencier les régions : dépensez moins sur les régions qui servent moins de clients. Par exemple, vous devez investir davantage dans une région qui sert 90 % de vos utilisateurs que dans une région qui sert 10 % de vos utilisateurs. Ajustez votre stratégie de déploiement pour répondre aux exigences de chaque région et segment d’utilisateur.

  • Différencier la mise à l’échelle : implémentez des stratégies de mise à l’échelle horizontale et verticale. Mettez à l’échelle efficacement les ressources pour répondre à la demande sans surapprovisionnement.

  • Différencier l’infrastructure : choisissez des solutions matérielles et d’infrastructure rentables qui répondent aux performances et à la scalabilité requises. Tenez compte des facteurs tels que les performances, le coût, la fiabilité et l’extensibilité.

  • Ajuster les modèles de locataire : personnalisez l’environnement en fonction du modèle de locataire. Par exemple, dépensez plus de services et de fonctionnalités pour les locataires payants et dépensez moins pour les locataires non payants.

Optimiser les environnements de récupération d’urgence

Un environnement de récupération d’urgence fait référence à l’infrastructure et aux processus qu’une charge de travail utilise pour récupérer après un événement perturbant. Les événements de perturbation incluent les catastrophes naturelles, les cyber-attaques et les défaillances matérielles. Équilibrez le coût de la maintenance d’un environnement de récupération d’urgence et des effets potentiels d’un événement perturbant. Réfléchissez aux stratégies suivantes :

  • Évaluez la criticité des systèmes et des données : évaluez l’importance des systèmes et des données pour déterminer le niveau de protection et de ressources requis pour chaque composant.

  • Déterminer les RPO et les RPO : pour vous aider à déterminer la conception de l’environnement de récupération d’urgence, définissez les limites acceptables de temps d’arrêt et de perte de données pour chaque système ou application.

  • Optimiser un environnement de récupération d’urgence à froid : un environnement de récupération d’urgence à froid n’a que peu ou pas d’infrastructure ni de services en cours d’exécution. Vous pouvez utiliser l’infrastructure en tant que code (IaC) pour déployer rapidement l’infrastructure lors d’un événement perturbant. Vos stratégies de sauvegarde et de stockage doivent répondre aux RPO et aux objets rtos de l’environnement. Assurez-vous que la quantité et la fréquence des sauvegardes de données ne sont pas plus robustes que nécessaire.

    Compromis : Un environnement de récupération d’urgence froid est une option économique, mais vous risquez d’avoir de longues périodes de récupération.

  • Optimiser un environnement de récupération d’urgence chaud : toutes les infrastructures et services s’exécutent dans un environnement de récupération d’urgence chaud. Les données reflètent le site principal en temps réel. Il fournit un basculement quasi instantané et une perte de données minimale en cas de sinistre. Envisagez un déploiement actif-actif pour optimiser les coûts.

  • Optimiser un environnement de récupération d’urgence chaud : une approche de récupération d’urgence chaude est un milieu entre un environnement de récupération d’urgence froid et un environnement de récupération d’urgence chaud. Un environnement chaud est partiellement actif et se synchronise régulièrement avec le site principal. Il offre un équilibre entre le coût et le temps de récupération. Toutefois, il s’agit de l’approche la moins rentable. Envisagez une approche froide ou chaude pour optimiser les coûts.

Optimiser les environnements de préproduction

L’optimisation des environnements de préproduction implique la gestion stratégique des ressources au sein des zones de développement, de test et de préproduction pour simuler étroitement la production tout en réduisant les coûts inutiles. Les environnements de préproduction ne nécessitent pas la mise à l’échelle complète et la disponibilité des environnements de production. La plupart des opportunités résident dans l’adaptation de ces environnements à des besoins de test et de développement spécifiques sans dupliquer exactement la production. Les domaines de réduction des coûts incluent l’utilisation de ressources à moindre coût, la désactivation des services inutiles et l’application de remises proposées pour l’utilisation de la préproduction. Tenez compte des stratégies suivantes pour optimiser les environnements de préproduction :

Évaluer les environnements de préproduction

Une allocation insuffisante ou incorrecte d’environnements de préproduction peut entraîner un surprovisionnement ou un sous-approvisionnement des ressources. Pour évaluer vos environnements de préproduction pour votre charge de travail, tenez compte des conseils suivants :

  • Comprendre les types d’environnement : identifiez les types d’environnements de préproduction, tels que le développement, le test et la préproduction, dont vous avez besoin pour votre charge de travail. Chaque environnement doit avoir un rôle défini et une fonction spécifique pour garantir une allocation efficace des ressources.

  • Aligner sur les exigences des utilisateurs : avant de configurer des environnements de préproduction, comprenez les exigences et les attentes de vos utilisateurs. Personnalisez les fonctionnalités et les spécifications en fonction de leurs besoins pour éviter les dépenses inutiles des fonctionnalités ou des ressources.

  • Consolider l’environnement : déterminez si vous pouvez combiner des environnements sans compromettre leurs fonctionnalités. Combinez des environnements qui ont des fonctions qui ne se chevauchent pas. Par exemple, vous pouvez fusionner un environnement d’acceptation utilisateur avec un environnement d’assurance qualité. Les fonctions sont distinctes et un environnement est généralement inactif lorsque l’autre est en cours d’utilisation.

    Risque : soyez prudent lorsque vous combinez des environnements pour vous assurer que vous n’introduisez pas de conflits ni de compromission des processus de test ou de développement.

Le tableau suivant fournit des exemples d’environnements de préproduction courants.

Exemple d’environnement de préproduction Description
Environnement de développement Les développeurs utilisent cet environnement pour écrire et tester du code. Il fournit un espace de bac à sable afin que les développeurs puissent expérimenter, générer et intégrer des modifications de code.
Environnement d’assurance qualité Cet environnement est dédié aux activités d’assurance qualité. Il permet de tester pour identifier et résoudre les bogues ou problèmes avant de le déployer dans l’environnement de production.
Environnement de sécurité Cet environnement est destiné aux tests de sécurité. Il s’agit de s’assurer qu’une application est sécurisée contre les menaces et les vulnérabilités.
Environnement de test d’acceptation des utilisateurs Dans cet environnement, les utilisateurs finaux et les parties prenantes testent une application pour valider ses fonctionnalités et s’assurer qu’elle répond aux exigences et aux attentes.
Environnement intermédiaire Cet environnement ressemble étroitement à l’environnement de production. Il s’agit d’un test final et d’une validation avant le déploiement en production.

Appliquer la gouvernance

L’application de la gouvernance consiste à limiter les options de déploiement dans les environnements de préproduction pour contrôler les dépenses et atténuer les risques. Dans la préproduction, vous avez la possibilité de personnaliser les configurations et de déployer des ressources. Plus l’environnement de préproduction s’écarte de l’environnement de production, plus le risque potentiel est élevé. Utilisez la gouvernance pour limiter les environnements de préproduction. Tenez compte des recommandations suivantes :

  • Limiter les niveaux de performances : évaluez les exigences de performances de vos environnements de préproduction. Choisissez des niveaux de performances qui équilibrent les coûts et les performances. Un service dispose souvent de différents niveaux de performances, et certains de ces niveaux sont plus adaptés aux tests. Certains services ont des niveaux qui offrent des fonctionnalités similaires à la production, mais qui ne sont pas fournis avec un contrat SLA. Ces services réduisent les coûts, mais fournissent toujours les fonctionnalités nécessaires pour les tests et le développement.

  • Comprendre les références SKU de préproduction : certaines références SKU sont conçues pour les environnements de développement. Pour optimiser les coûts, évaluez les services et les niveaux. Optez pour les niveaux de faible performance si la charge de travail ne nécessite pas de performances élevées.

  • Contrôler le nombre d’instances et de processeurs : déterminez le nombre optimal d’instances et de ressources processeur dont votre environnement de préproduction a besoin en fonction des demandes de charge de travail. Évitez de surprovisionner les ressources pour réduire les coûts.

  • Limitez la rétention et la journalisation : définissez des stratégies de rétention pour les journaux et les données dans les environnements de préproduction. Tenez compte de la durée nécessaire pour conserver les journaux et les données en fonction des exigences de conformité et des considérations relatives aux coûts. Évitez la journalisation et la rétention excessives pour réduire les coûts de stockage.

  • Utilisez une architecture de processeur cohérente : utilisez la même architecture d’UC dans la préproduction et la production. Par exemple, les applications x86 ne s’exécutent pas en mode natif sur Azure Resource Manager, et inversement. Utilisez la même architecture d’UC que votre environnement de production pour garantir la compatibilité et réduire les problèmes potentiels.

  • Utilisez le même système d’exploitation : évitez de modifier le système d’exploitation (par exemple de Windows vers Linux) ou le noyau dans les environnements de préproduction. Les logiciels créés pour Windows ne s’exécutent souvent pas en mode natif sur Linux sans couche de compatibilité, et inversement. Les systèmes de fichiers et les structures de répertoire sont différents, ce qui peut entraîner des problèmes de mise à jour corrective des applications. Les environnements cohérents permettent de réduire le risque de problèmes de compatibilité et de garantir des déploiements lisses.

  • Limiter la mise à l’échelle : pour optimiser le coût, vous pouvez limiter l’automatisation pour atténuer l’automatisation de l’exécution. Par exemple, définissez une limite de mise à l’échelle maximale à trois dans l’environnement de développement et définissez-la sur 10 dans l’environnement de production. Limitez la mise à l’échelle pour vous aider à contrôler l’utilisation des ressources et le coût d’automatisation.

  • Désactiver les ressources inutiles : désactivez les ressources lorsqu’elles ne sont pas utilisées activement, comme pendant les heures creuses et les week-ends. Vous pouvez utiliser des outils ou des scripts d’automatisation pour planifier l’arrêt et le démarrage des ressources. Certains fournisseurs fournissent des API que vous pouvez utiliser pour arrêter et démarrer les ressources par programmation. Envisagez d’utiliser IaC pour créer des environnements éphémères que vous pouvez supprimer lorsque vous n’en avez plus besoin.

  • Restreindre les régions disponibles : envisagez l’avantage potentiel de l’exécution d’environnements de préproduction dans différentes régions où les ressources Azure peuvent être moins coûteuses. Limitez les déploiements de préproduction à ces régions pour optimiser le coût de ces environnements.

Équilibrer la similarité avec la production

Il est souvent inutile et coûteux pour les environnements de préproduction de mettre en miroir exactement l’environnement de production. L’objectif est de s’assurer que chaque environnement de préproduction est correctement différent de celui de la production pour éviter les coûts inutiles. Toutefois, lorsque la préproduction et la production sont différentes, il existe un risque de déploiement d’un bogue en production. Plus ces environnements sont différents, plus il y a de risques. L’adaptation de l’environnement de préproduction pour répondre à vos besoins peut vous aider à gérer les risques tout en optimisant les coûts. Pour équilibrer la similarité avec la production, tenez compte des recommandations suivantes :

  • Évitez les réplicas exacts : évitez de rendre l’environnement de préproduction une copie exacte de la production. Il peut inutilement augmenter les coûts. Créez un environnement de préproduction rentable, mais vous permet de découvrir et de résoudre les risques potentiels avant le déploiement.

  • Évitez les écarts extrêmes : évitez les écarts excessifs de la production, comme l’utilisation de différents services. Différents services peuvent ne pas simuler avec précision les risques réels. Déterminez un seuil de risque et ne dépassez pas le seuil uniquement pour économiser de l’argent.

  • Raccourcir les runtimes : envisagez de raccourcir les runtimes des processus dans la phase de préproduction pour économiser de l’argent. Soyez prudent quant aux nouvelles vulnérabilités qui peuvent survenir, telles que les fuites de mémoire non détectées.

  • Passez en revue les licences : passez en revue les plans de licence de vos outils de sécurité. Si le nombre de nœuds varie considérablement entre vos configurations de production et de préproduction, réévaluez vos besoins pour affiner les coûts sans compromettre la sécurité.

Optimiser les environnements de développement

Les environnements de développement sont conçus à des fins de développement, de test et de débogage. Ils ont des cycles de vie plus courts et sont souvent créés en fonction des besoins et existent pendant une courte période. Les environnements de développement ont généralement des exigences plus faibles en matière de fiabilité, de capacité et de sécurité par rapport à d’autres environnements de préproduction et de production. Ils peuvent avoir moins de fonctionnalités et peuvent accepter une utilisation plus faible des ressources. Pour optimiser votre environnement de développement :

  • Évaluer les outils : évaluez régulièrement l’efficacité de votre configuration d’outils actuelle, y compris les environnements de développement intégrés (IDE), les licences et les outils associés. Envisagez des alternatives gratuites ou open source qui offrent des fonctionnalités similaires sans compromettre la qualité. Réévaluez en permanence la nécessité et l’efficacité de ces outils au fur et à mesure que le paysage du développement évolue.

  • Considérez le matériel : évaluez le coût et les performances de vos configurations matérielles actuelles. Investir dans du matériel plus performant et plus efficace peut améliorer la productivité et réduire les coûts à long terme. Au lieu des remplacements de matériel fréquents, envisagez de mettre à niveau les systèmes existants pour prolonger leur durée de vie et améliorer les performances.

  • Optimisez le nombre d’environnements : analysez les avantages et les inconvénients des environnements de développement individualisés par rapport à un environnement partagé. Les environnements individuels peuvent imiter les configurations de production, empêcher les interférences entre les développeurs et offrir des configurations personnalisées. Toutefois, la mise à l’échelle devient plus coûteuse à mesure que le nombre de développeurs augmente. Les environnements partagés peuvent réduire les coûts, mais les problèmes de fiabilité peuvent survenir si l’ensemble de l’équipe de développement est affectée simultanément. Trouvez le bon équilibre en fonction des coûts, de l’atténuation des risques, de l’efficacité et de la satisfaction des développeurs.

  • Nettoyez régulièrement : nettoyez et optimisez régulièrement votre environnement de développement pour éviter l’accumulation de ressources orphelines, de données inutilisées et d’expériences de preuve de concept. Implémentez des processus de nettoyage ou des outils automatisés pour identifier et supprimer les ressources inutilisées. Conservez uniquement les composants essentiels et actifs. Le nettoyage régulier permet de réduire les coûts de stockage et garantit une utilisation efficace des ressources.

  • Implémenter une mise à l’échelle échantillonné : au lieu de mettre à l’échelle tous les composants vers leur capacité maximale, envisagez une approche échantillonné dans laquelle vous mettez à l’échelle sélectivement les composants essentiels. Cette approche peut être rentable tout en minimisant les risques. Évaluez le ratio risque-à-avantage de ne pas mettre à l’échelle certains éléments et tenez compte de l’effet potentiel sur l’environnement.

  • Optimiser la gestion des données : les environnements de développement peuvent avoir des besoins faibles en matière de rétention des données et de fréquence de sauvegarde.

Envisager l’émulation de point de terminaison

Vous pouvez optimiser les coûts dans un environnement de préproduction à l’aide de l’émulation de point de terminaison ou des points de terminaison fictifs, en particulier pour les ressources coûteuses telles que les GPU. Identifiez les composants ou services de votre environnement de préproduction qui sont les plus coûteux ou gourmands en ressources. Utilisez des points de terminaison fictifs pour simuler les réponses de ces composants coûteux sans les appeler. Pour simuler des réponses d’API, vous pouvez utiliser des serveurs commerciaux ou code source ouvert des serveurs fictifs d’API ou des implémentations personnalisées.

L’émulation et les points de terminaison fictifs permettent d’économiser des coûts, mais vous devez vous assurer qu’ils représentent l’environnement de production à un degré suffisant pour les tests. Trouver un équilibre entre la précision et le coût pour éviter les problèmes futurs en production. Par exemple, si les GPU sont un facteur de coût majeur, envisagez l’émulation GPU pour les tâches qui ne nécessitent pas de puissance de traitement GPU réelle dans les phases de préproduction. L’émulation peut ne pas représenter entièrement les performances ou les bizarreries des GPU réels. Par conséquent, utilisez-la lorsque le comportement exact du GPU n’est pas critique pour les tests de préproduction.

Facilitation Azure

Détermination et optimisation des coûts d’environnement : Microsoft Cost Management est une suite d’outils qui aident les organisations à surveiller, allouer et optimiser le coût de leurs charges de travail Microsoft Cloud. Cost Management est disponible pour toute personne ayant accès à une étendue de facturation ou de gestion des ressources.

Azure Advisor est un outil qui fournit des recommandations d’optimisation des coûts, notamment l’identification des zones d’utilisation des machines virtuelles qui nécessitent une optimisation. Utilisez Advisor pour vous aider à prendre des décisions éclairées et à optimiser les coûts dans votre environnement Azure. Azure fournit des outils et fonctionnalités de gestion des coûts qui aident à hiérarchiser les dépenses. Vous pouvez utiliser ces outils pour suivre et analyser les coûts entre les environnements, définir des budgets et recevoir des recommandations d’optimisation des coûts.

Application de la gouvernance : Avec Azure Policy, vous pouvez limiter les types de ressources, les références SKU et les instances en définissant des règles de stratégie qui appliquent des restrictions sur les types de ressources que vous pouvez déployer dans votre environnement Azure. Vous pouvez contrôler les ressources approvisionnées et garantir la conformité aux stratégies et bonnes pratiques de votre organisation.

Pour limiter les types de ressources à l’aide d’Azure Policy, vous pouvez définir des règles de stratégie qui spécifient les types de ressources autorisés. Appliquez ces règles aux abonnements ou groupes de ressources Azure appropriés. Azure Policy empêche les utilisateurs de déployer des ressources qui ne sont pas autorisées.

Utilisez Azure Resource Manager pour définir et gérer des ressources de manière déclarative. Vous pouvez paramétrer les ressources allouées à chaque environnement en fonction de leurs exigences spécifiques. Utilisez des modèles et paramétrez des configurations de ressources pour optimiser les coûts.

Optimisation des environnements de préproduction : Azure offre des options de tarification dev/test qui fournissent des tarifs réduits pour les environnements hors production. Vous pouvez allouer davantage de ressources et de budget à des environnements de production critiques, ce qui optimise les coûts dans les environnements hors production. Vous pouvez également utiliser l’offre de licence Azure, Azure Hybrid Benefit.

Vous pouvez utiliser Azure Gestion des API pour la simulation d’API. Gestion des API agit comme une façade aux services principaux, ce qui permet aux fournisseurs d’API d’extraire les implémentations d’API et d’évoluer l’architecture back-end sans affecter les consommateurs d’API.

Liste de contrôle d’optimisation des coûts

Reportez-vous à l’ensemble complet de recommandations.