Recommandations pour optimiser les coûts de l’environnement

S’applique à cette recommandation de liste de contrôle d’optimisation des coûts d’Azure Well-Architected Framework :

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

Ce guide décrit les recommandations relatives aux environnements de charge de travail d’optimisation des coûts. Chaque environnement doit être adapté à son objectif spécifique et optimisé pour la rentabilité. Il est important de faire des compromis stratégiques et d’allouer des ressources là où elles sont les plus importantes, sans compromettre les composants critiques. En traitant les environnements différemment et en les optimisant en conséquence, vous pouvez atteindre 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) Un accord contractuel entre le fournisseur de services et le client du service. L’accord définit les objectifs de niveau de service (SLO). 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 les risques pour chaque environnement, y compris les environnements de production, de préproduction et de récupération d’urgence (DR). Personnalisez chaque environnement pour son utilisation particulière afin d’économiser de l’argent et d’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) de l’environnement, même s’il ne génère pas de profit direct. Dépensez plus d’argent dans des 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

Évaluer 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 généraux de l’organisation. 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. Lorsque vous évaluez la valeur d’un environnement, vous devez hiérarchiser les dépenses d’une manière qui correspond aux objectifs de la charge de travail. Pour évaluer la valeur de chaque environnement, tenez compte des facteurs suivants :

  • Tenez compte de l’utilisateur : déterminez 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 la durée de fonctionnement.

    D’autre part, 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 respecter les contrats SLA destinés aux clients, mais il doit disposer des outils et des 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 garantir que chaque environnement est fonctionnel et rentable.

  • Aligner sur les mesures de valeur de l’organisation : Alignez vos efforts de réduction des coûts sur les priorités de votre organization, comme le profit ou la satisfaction des employés. Pour chaque environnement, comprenez comment la réussite est définie, afin que vous puissiez maintenir vos actions sur la cible. Par exemple, si votre organization se concentre sur l’optimisation des bénéfices ou la satisfaction des employés, alignez vos décisions de dépense sur ces métriques.

Déterminer les coûts de l’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 informations sur les modèles de dépenses et les tendances dans les environnements. Pour déterminer les coûts de l’environnement, envisagez les stratégies suivantes :

  • Identifier les moteurs de coûts : identifiez les facteurs clés qui déterminent 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 impact potentiel sur l’environnement et les opérations de l’entreprise. Tenez compte de facteurs tels que la sécurité des données, la conformité, les performances, les audits et les exigences sla.

  • Surveiller et ajuster vos dépenses : surveillez et analysez en permanence les modèles de dépenses, la distribution de la valeur et les facteurs de risque. Examinez et ajustez régulièrement 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 la mise en œuvre 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 la répondre 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 plus dans une région qui dessert 90 % de vos utilisateurs que dans une région qui dessert 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 horizontales et verticales. Mettez les ressources à l’échelle efficacement 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 à l’extensibilité requises. Tenez compte de facteurs tels que les performances, le coût, la fiabilité et la scalabilité.

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

Optimiser l’environnement 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 perturbateur. Les événements perturbateurs incluent les catastrophes naturelles, les cyberattaques et les défaillances matérielles. Équilibrez le coût de la maintenance d’un environnement de récupération d’urgence et les effets potentiels d’un événement perturbateur. Tenez compte des stratégies suivantes :

  • Évaluer 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 RTO et les RPO : pour 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 a peu ou pas d’infrastructure ou 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 RTO 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 pouvez avoir de longs temps de récupération.

  • Optimiser un environnement de récupération d’urgence à chaud : l’ensemble de l’infrastructure et des 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 intermédiaire 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 à froid ou à chaud pour optimiser les coûts.

Optimiser les environnements de préproduction

L’optimisation des environnements de préproduction implique une gestion stratégique des ressources dans les zones de développement, de test et de préproduction afin de 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 et la disponibilité complètes 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 offertes pour l’utilisation de la préproduction. Envisagez les stratégies suivantes pour optimiser les environnements de préproduction :

Évaluer les environnements de préproduction

Une allocation insuffisante ou incorrecte des environnements de préproduction peut entraîner un surapprovisionnement 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.

  • Alignez-vous 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 afin d’éviter les dépenses inutiles liées aux fonctionnalités ou aux 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 instance, 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 ou ne compromettez pas les 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 pour permettre aux développeurs d’expérimenter, de générer et d’intégrer des modifications de code.
Environnement d’assurance qualité Cet environnement est dédié aux activités d’assurance qualité. Il permet d’identifier et de résoudre les bogues ou les problèmes avant le déploiement dans l’environnement de production.
Environnement de sécurité Cet environnement est destiné aux tests de sécurité. Il s’agit de garantir la sécurité d’une application contre les menaces et les vulnérabilités.
Environnement de test d’acceptation par l’utilisateur 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 du test final et de la 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. En préproduction, vous disposez de la flexibilité nécessaire pour personnaliser les configurations et déployer des ressources. Plus l’environnement de préproduction s’écarte de l’environnement de production, plus le risque potentiel est grand. 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 le coût et les performances. Un service a souvent différents niveaux de performances, et certains de ces niveaux sont plus appropriés pour les tests. Certains services ont des niveaux qui offrent des fonctionnalités de type production, mais qui ne sont pas fournis avec un contrat SLA. Ces services réduisent les coûts tout en fournissant les fonctionnalités nécessaires pour le test 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 des niveaux de performances faibles 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 le surprovisionnement des ressources pour réduire les coûts.

  • Limiter 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 à la conservation des journaux et des données en fonction des exigences de conformité et des considérations de coût. Évitez une journalisation et une rétention excessives pour réduire les coûts de stockage.

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

  • Utiliser le même système d’exploitation : évitez de changer 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 vice versa. Les systèmes de fichiers et les structures de répertoires sont différents, ce qui peut entraîner des problèmes de mise à jour corrective des applications. Des environnements cohérents permettent de réduire le risque de problèmes de compatibilité et de garantir des déploiements fluides.

  • Limiter la mise à l’échelle : pour optimiser les coûts, vous pouvez limiter l’automatisation pour atténuer l’automatisation de l’emballement. 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 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, par exemple pendant les heures creuses et les week-ends. Vous pouvez utiliser des outils d’automatisation ou des scripts 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 programme. 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 : tenez compte de l’avantage potentiel de l’exécution d’environnements de préproduction dans différentes régions où les ressources Azure peuvent être moins chères. Limitez les déploiements de préproduction dans 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 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 afin d’éviter des 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. Adapter 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 :

  • Éviter les réplicas exacts : évitez de faire de l’environnement de préproduction une copie exacte de la production. Cela peut augmenter inutilement les coûts. Créez un environnement de préproduction économique, mais qui vous permet de détecter et de traiter les risques potentiels avant le déploiement.

  • Éviter les écarts extrêmes : évitez les écarts excessifs par rapport à 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.

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

  • Passer en revue les licences : passez en revue les plans de licence pour 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 inférieures 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 accepter une utilisation moindre des ressources. Pour optimiser votre environnement de développement :

  • Évaluer les outils : évaluez régulièrement la rentabilité de votre configuration d’outils actuelle, y compris les environnements de développement intégré (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éévaluer en permanence la nécessité et l’efficacité de ces outils à 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 de meilleure qualité et plus efficace permet d’améliorer la productivité et de réduire les coûts à long terme. Au lieu de remplacer fréquemment du matériel, envisagez de mettre à niveau les systèmes existants pour prolonger leur durée de vie et améliorer les performances.

  • Optimiser 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 proposer 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 des problèmes de fiabilité peuvent se poser si des problèmes affectent l’ensemble de l’équipe de développement simultanément. Trouvez le bon équilibre en fonction du coût, de l’atténuation des risques, de l’efficacité et de la satisfaction des développeurs.

  • Propre régulièrement : propre et optimiser votre environnement de développement afin d’éviter l’accumulation de ressources orphelines, de données inutilisées et d’expériences de preuve de concept. Implémentez des processus propre ou des outils automatisés pour identifier et supprimer les ressources inutilisées. Conservez uniquement les composants essentiels et actifs. Une propre régulière permet de réduire les coûts de stockage et d’assurer une utilisation efficace des ressources.

  • Implémenter une mise à l’échelle échantillonné : au lieu de mettre à l’échelle tous les composants à leur capacité maximale, envisagez une approche échantillonné dans laquelle vous mettez à l’échelle de manière sélective les composants essentiels. Cette approche peut être rentable tout en minimisant les risques. Évaluez le rapport 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 de faibles besoins 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 en utilisant l’émulation de point de terminaison ou des points de terminaison fictifs, en particulier pour les ressources coûteuses comme les GPU. Identifiez les composants ou services de votre environnement de préproduction qui sont les plus coûteux ou les plus 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 outils tels que WireMock, le serveur fictif de Postman ou des implémentations personnalisées.

L’émulation et les points de terminaison fictifs permettent de réduire les coûts, mais vous devez vous assurer qu’ils représentent suffisamment l’environnement de production pour les tests. Trouvez un équilibre entre précision et 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. Utilisez-la donc lorsque le comportement exact du GPU n’est pas critique pour les tests de préproduction.

Animation Azure

Détermination et optimisation des coûts de l’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 domaines 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 des fonctionnalités de gestion des coûts qui permettent de hiérarchiser les dépenses. Vous pouvez utiliser ces outils pour suivre et analyser les coûts dans différents 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 garder le contrôle sur les ressources approvisionnées et garantir la conformité aux stratégies et bonnes pratiques de votre organization.

Pour limiter les types de ressources à l’aide de 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 les 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 les configurations de ressources pour optimiser les coûts.

Optimisation des environnements de préproduction : Azure propose 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 aux 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 sert de façade aux services back-end, ce qui permet aux fournisseurs d’API d’abstraction des implémentations d’API et de faire évoluer l’architecture back-end sans affecter les consommateurs d’API.

Alignement organisationnel

Cloud Adoption Framework fournit des conseils pour souligner l’importance d’optimiser les coûts de l’environnement dans l’ensemble des organization.

Pour plus d’informations, consultez Meilleures pratiques pour le coût et le dimensionnement des ressources Azure.

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

Reportez-vous à l’ensemble complet de recommandations.