Partager via


Pratiques de génie logiciel durable dans Azure Kubernetes service (AKS)

Les principes du génie logiciel durable sont un ensemble de compétences visant à vous aider à définir, créer et exécuter des applications durables. L’objectif global est de réduire l’empreinte carbone de tous les aspects de votre application. Les conseils de Azure Well-Architected Framework pour le développement durable s’alignent sur les principes de l’ingénierie logicielle durable de la Green Software Foundation et fournissent une vue d’ensemble des principes de l’ingénierie logicielle durable.

Le génie logiciel durable est un déplacement de priorités et de focalisations. Dans de nombreux cas, la façon dont la plupart des logiciels sont conçus et exécutés met en évidence des performances rapides et une faible latence. Le génie logiciel durable vise à réduire autant que possible les émissions de carbone.

  • L’application de principes de génie logiciel durable peut offrir des performances plus rapides ou une latence plus faible. Par exemple, en réduisant le nombre total de déplacements sur le réseau.
  • La réduction des émissions de carbone peut entraîner un ralentissement des performances ou une latence accrue. Par exemple, en retardant des charges de travail de faible priorité.

Les conseils suivants se concentrent sur les services que vous créez ou exploitez sur Azure avec Azure Kubernetes Service (AKS). Cet article inclut des listes de contrôle de conception et de configuration, des pratiques de conception recommandées et des options de configuration. Avant l’application de principes de génie logiciel durable à votre application, vérifiez les priorités, les besoins et les compromis de votre application.

Prérequis

  • Comprendre les conseils de durabilité Well-Architected Framework peut vous aider à produire une architecture cloud de haute qualité, stable et efficace. Nous vous recommandons d’en apprendre plus sur les charges de travail durables et d’examiner votre charge de travail à l’aide de l’évaluation Microsoft Azure Well-Architected Review.
  • Il est essentiel de disposer d’exigences métier clairement définies lors de la création d’applications, car elles peuvent avoir un impact direct sur les architectures et les configurations de cluster et de charge de travail. Lors de la création ou de la mise à jour d’applications existantes, passez en revue les domaines de conception de durabilité Well-Architected Framework, ainsi que le cycle de vie holistique de votre application.

Comprendre le modèle de responsabilité partagée

La durabilité, est une responsabilité partagée entre le fournisseur de cloud et le client ou le partenaire qui conçoit et déploie des clusters AKS sur la plateforme. Le déploiement d’AKS ne le rend pas automatiquement durable, même si les centres de données sont optimisés pour la durabilité. Les applications qui ne sont pas optimisées correctement risquent toujours d’émettre plus de carbone que nécessaire.

En savoir plus sur le modèle de responsabilité partagée pour la durabilité.

Principes de conception

  • Efficacité carbone : Émettre la plus petite quantité de carbone possible.

    Une application cloud économe en carbone doit être optimisée, et le point de départ en la matière est l’optimisation des coûts.

  • Efficacité énergétique : Utiliser la plus petite quantité d’énergie possible.

    Une façon d’augmenter l’efficacité énergétique consiste à exécuter l’application sur le moins de serveurs possible, les serveurs s’exécutant au taux d’utilisation le plus élevé ; ce qui augmente l’efficacité du matériel.

  • Efficacité matérielle : Utiliser la plus petite quantité possible de carbone incorporé.

    Il existe deux approches principales en matière d’efficacité matérielle :

    • Pour les appareils des utilisateurs finaux, cela prolonge la durée de vie matérielle.
    • Pour le cloud computing, cela augmente l’utilisation des ressources.
  • Conscience du carbone : Faire plus quand l’électricité est plus propre et moins quand l’électricité est plus sale.

    Être conscient du carbone signifie répondre aux changements d’intensité carbone en augmentant ou en diminuant votre demande.

Modèles et pratiques de conception

Avant de passer en revue les recommandations détaillées dans chacun des domaines de conception, nous vous recommandons d’examiner attentivement les modèles de conception suivants pour créer des charges de travail durables sur AKS :

Modèle de conception S’applique à la charge de travail S’applique au cluster
Conception pour une mise à l’échelle indépendante des composants logiques ✔️
Conception pour la mise à l’échelle pilotée par les événements ✔️
Viser une conception sans état ✔️
Activer les mises à jour automatiques de cluster et de nœud ✔️
Installer les extensions et modules complémentaires pris en charge ✔️ ✔️
Conteneuriser votre charge de travail, le cas échéant ✔️
Utiliser du matériel écoénergétique ✔️
Répondre aux besoins de scalabilité et utiliser des fonctionnalités de mise à l’échelle automatique et de bursting ✔️
Désactiver les charges de travail et les pools de nœuds en dehors des heures d’ouverture ✔️ ✔️
Supprimer les ressources inutilisées ✔️ ✔️
Étiqueter vos ressources ✔️ ✔️
Optimiser l’utilisation du stockage ✔️ ✔️
Choisir la région la plus proche des utilisateurs ✔️
Réduire la traversée réseau entre les nœuds ✔️
Évaluer à l’aide d’un maillage de service ✔️
Optimiser la collecte de journaux ✔️ ✔️
Mettre en cache les données statiques ✔️ ✔️
Évaluer s’il convient d’utiliser la terminaison TLS ✔️ ✔️
Utiliser des outils et des contrôles de sécurité réseau natifs cloud ✔️ ✔️
Analyser les vulnérabilités ✔️ ✔️

Conception des applications

Explorez cette section pour en savoir plus sur l’optimisation de vos applications pour une conception d’application plus durable.

Conception pour une mise à l’échelle indépendante des composants logiques

Une architecture de micro-services peut réduire les ressources de calcul nécessaires, car elle permet une mise à l’échelle indépendante de ses composants logiques et garantit qu’ils sont mis à l’échelle en fonction de la demande.

  • Envisagez d’utiliser Dapr Framework ou d’autres projets CNCF pour vous aider à séparer les fonctionnalités de votre application en différents micro-services, afin de permettre une mise à l’échelle indépendante de ses composants logiques.

Conception pour la mise à l’échelle pilotée par les événements

Lors de la mise à l’échelle de votre charge de travail en fonction des métriques métier pertinentes telles que les requêtes HTTP, la longueur de la file d’attente et les événements cloud peut aider à réduire son utilisation des ressources, et par conséquent ses émissions de carbone.

  • Utilisez Keda lors de la création d’applications pilotées par les événements pour permettre un scale-down à zéro en l’absence de demande.

Viser une conception sans état

La suppression de l’état de votre conception réduit les données en mémoire ou sur disque requises par la charge de travail pour fonctionner.

  • Envisagez une conception sans état pour réduire la charge réseau, le traitement des données et les ressources de calcul inutiles.

Plateforme d’application

Explorez cette section pour découvrir comment prendre des décisions de plateforme mieux informées en matière de durabilité.

Activer les mises à jour automatiques de cluster et de nœud

Un cluster à jour évite les problèmes de performances inutiles et vous garantit de tirer parti des dernières améliorations des performances et optimisations de calcul.

Installer les extensions et modules complémentaires pris en charge

Les modules complémentaires et extensions couverts par la stratégie de support AKS fournissent des fonctionnalités supplémentaires et prises en charge à votre cluster, tout en vous permettant de bénéficier des dernières améliorations des performances et optimisations énergétiques tout au long du cycle de vie de votre cluster.

  • Installez KEDA en tant que module complémentaire.
  • Installer GitOps et Dapr en tant qu’extensions.

Conteneuriser votre charge de travail, le cas échéant

Les conteneurs permettent de réduire l’allocation inutile de ressources et de mieux utiliser les ressources déployées, car ils permettent l’empaquetage du conteneur et nécessitent moins de ressources de calcul que les machines virtuelles.

  • Utilisez Draft pour simplifier la conteneurisation des applications en générant des fichiers Dockerfile et des manifestes Kubernetes.

Utiliser du matériel écoénergétique

Les processeurs cloud natifs d’Ampere sont conçus de manière unique pour répondre aux besoins en haute performance et en efficacité énergétique du cloud.

Répondre aux besoins de scalabilité et utiliser des fonctionnalités de mise à l’échelle automatique et de bursting

Un cluster surdimensionné n’optimise pas l’utilisation des ressources de calcul et peut entraîner un gaspillage d’énergie. Séparez vos applications en différents pools de nœuds pour permettre un dimensionnement correct du cluster et une mise à l’échelle indépendante en fonction des exigences de l’application. À mesure que vous approchez les limites de capacité de votre cluster AKS, passez d’AKS à ACI pour effectuer un scale-out de pods supplémentaires vers des nœuds serverless et vous assurer que votre charge de travail utilise efficacement toutes les ressources allouées.

Désactiver les charges de travail et les pools de nœuds en dehors des heures d’ouverture

Les charges de travail n’ont peut-être pas besoin de s’exécuter en continu et peuvent être désactivées pour réduire le gaspillage d’énergie, et donc les émissions de carbone. Pour réaliser également des économies sur les coûts, vous pouvez complètement désactiver (arrêter) vos pools de nœuds dans votre cluster AKS.

Procédures opérationnelles

Explorez cette section pour configurer votre environnement afin de mesurer et d’améliorer continuellement le coût et l’efficacité carbone de vos charges de travail.

Supprimer les ressources inutilisées

Vous devez identifier et supprimer toutes les ressources inutilisées, comme les images et les ressources de stockage non référencées, car elles ont un impact direct sur l’efficacité matérielle et énergétique. Pour garantir une optimisation énergétique continue, vous devez traiter l’identification et la suppression des ressources inutilisées doivent être traitées comme un processus constant plutôt qu’une activité ponctuelle.

  • Utilisez Azure Advisor pour identifier les ressources inutilisées.
  • Utilisez ImageCleaner pour nettoyer les images obsolètes et éliminer une zone de risque de votre cluster.

Étiqueter vos ressources

Il est important d’obtenir les bonnes informations et les bons insights au bon moment pour produire des rapports sur les performances et l’utilisation des ressources.

Stockage

Explorez cette section pour découvrir comment concevoir une architecture de stockage de données plus durable et optimiser les déploiements existants.

Optimiser l’utilisation du stockage

Les opérations de récupération et de stockage des données peuvent avoir un impact significatif sur l’efficacité énergétique et matérielle. La conception de solutions avec le bon modèle d’accès aux données peut réduire la consommation d’énergie et le carbone émis.

Réseau et connectivité

Explorez cette section pour découvrir comment améliorer et optimiser l’efficacité du réseau afin de réduire les émissions de carbone inutiles.

Choisir la région la plus proche des utilisateurs

La distance entre un centre de données et les utilisateurs a un impact significatif sur la consommation d’énergie et les émissions de carbone. Le raccourcissement de la distance parcourue par un paquet réseau améliore votre efficacité énergétique et carbone.

  • Passez en revue les exigences de votre application et les zones géographiques Azure pour choisir la région qui est la plus proche de la plupart des paquets réseau.

Réduire la traversée réseau entre les nœuds

Le fait de placer des nœuds dans une seule région ou une seule zone de disponibilité réduit la distance physique entre les instances. Toutefois, pour les charges de travail critiques pour l’entreprise, vous devez vous assurer que votre cluster est réparti sur plusieurs zones de disponibilité, ce qui peut entraîner une plus grande traversée réseau et une augmentation de votre empreinte carbone.

Évaluer à l’aide d’un maillage de service

Un maillage de service déploie des conteneurs supplémentaires pour la communication, généralement dans un modèle de side-car, afin de fournir des fonctionnalités plus opérationnelles entraînant une augmentation de l’utilisation du processeur et du trafic réseau. Néanmoins, cela vous permet de dissocier votre application de ces fonctionnalités en les déplaçant hors de la couche application et vers la couche infrastructure.

  • Examinez attentivement l’augmentation de l’utilisation du processeur et du trafic réseau généré par les composants de communication du maillage de service avant de prendre la décision d’en utiliser un.

Optimiser la collecte de journaux

L’envoi et le stockage de tous les journaux à partir de toutes les sources possibles (charges de travail, services, diagnostics et activité de la plateforme) peuvent augmenter le trafic de stockage et de réseau, ce qui aurait un impact avec des coûts et des émissions de carbone supérieures.

Mettre en cache les données statiques

L’utilisation d’un réseau de distribution de contenu (CDN) est une approche durable pour optimiser le trafic réseau, car il réduit le déplacement des données sur un réseau. Un CDN réduit la latence en stockant fréquemment des données statiques lues plus près des utilisateurs, et contribue à réduire le trafic réseau et la charge du serveur.

Sécurité

Explorez cette section pour en savoir plus sur les recommandations qui mènent à une posture de sécurité durable et adaptée.

Évaluer s’il convient d’utiliser la terminaison TLS

TLS garantit que toutes les données transmises entre le serveur web et les navigateurs web restent privées et chiffrées. Toutefois, la terminaison et le rétablissement de TLS augmentent l’utilisation du processeur et peuvent ne pas être nécessaires dans certaines architectures. Un niveau de sécurité équilibré peut offrir une charge de travail plus durable et économe en énergie, tandis qu’un niveau de sécurité plus élevé peut augmenter les besoins en ressources de calcul.

  • Passez en revue les informations sur la terminaison TLS lors de l’utilisation d’Application Gateway ou d’Azure Front Door. Déterminez si vous pouvez terminer TLS au niveau de votre passerelle frontalière et continuer avec un autre protocole TLS pour votre équilibreur de charge de travail et charge de travail.

Utiliser des outils et des contrôles de sécurité réseau natifs cloud

Azure Front Door et Application Gateway aident à gérer le trafic provenant des applications web, tandis que Azure Web Application Firewall fournit une protection contre les 10 attaques OWASP les plus courantes et les bots de perte de charge à la périphérie du réseau. Ces fonctionnalités permet de supprimer la transmission de données inutile et de réduire la charge sur l’infrastructure cloud, avec une bande passante plus faible et moins d’exigences en matière d’infrastructure.

Analyser les vulnérabilités

De nombreuses attaques sur l’infrastructure cloud cherchent à abuser des ressources déployées pour le gain direct de l’attaquant, ce qui entraîne un pic inutile d’utilisation et de coûts. Les outils d’analyse des vulnérabilités permettent de réduire la fenêtre d’opportunité pour les attaquants et d’atténuer toute utilisation malveillante potentielle des ressources.

  • Suivez les recommandations sur les serveurs pour Microsoft Defender pour le Cloud.
  • Exécutez les outils d’analyse de vulnérabilité automatisés, tel que Defender pour les conteneurs, pour éviter l’utilisateur inutile de ressources. Ces outils permettent d’identifier les vulnérabilités dans vos images et de réduire la fenêtre d’opportunité pour les attaquants.

Étapes suivantes