Conception d’applications de charges de travail durables sur Azure

Lors de la création d’applications nouvelles ou de la mise à jour d’applications existantes, il est essentiel de prendre en compte l’impact de la solution sur le climat et s’il existe des moyens d’améliorer et d’optimiser. Découvrez les considérations et les recommandations pour optimiser votre code et vos applications pour une conception d’application plus durable.

Important

Cet article fait partie de la série de charges de travail durables Azure Well-Architected . Si vous n’êtes pas familiarisé avec cette série, nous vous recommandons de commencer par qu’est-ce qu’une charge de travail durable ?

Efficacité du code

Les demandes sur les applications peuvent varier et il est essentiel d’envisager des moyens de stabiliser l’utilisation afin d’éviter une surutilisation ou une sous-utilisation des ressources, ce qui peut entraîner des déversements d’énergie inutiles.

Évaluer le déplacement de monolithes vers une architecture de microservices

Les applications monolithiques sont généralement mises à l’échelle comme une unité, ce qui laisse peu d’espace pour mettre à l’échelle uniquement les composants individuels qui peuvent en avoir besoin.

Alignement de Green Software Foundation : efficacité énergétique, efficacité matérielle

Recommandation :

  • Évaluez les conseils d’architecture des microservices .
  • Une architecture de microservices permet de mettre à l’échelle uniquement les composants nécessaires pendant le pic de charge ; s’assurer que les composants inactifs sont réduits ou inactifs. En outre, cela peut réduire la surcharge et les ressources requises pour le déploiement d’applications monolithiques.
  • Considérez ce compromis : tout en réduisant les ressources de calcul requises, vous pouvez augmenter la quantité de trafic sur le réseau et la complexité de l’application peut augmenter considérablement.
  • Considérez cet autre compromis : le passage à des microservices peut entraîner une surcharge de déploiement supplémentaire avec de nombreuses similitudes dans les pipelines de déploiement. Examinez attentivement les ressources de déploiement requises pour les architectures monolithiques et les architectures de microservices.
  • En outre, découvrez comment conteneuriser des applications monolithiques.

Améliorer l’efficacité des API

De nombreuses applications cloud modernes sont conçues pour traiter de nombreux messages entre les services et les composants de manière asynchrone. Considérez le format utilisé pour encoder les données de charge utile. De quelle quantité d’informations votre application a-t-elle besoin pour communiquer et y a-t-il de la place pour réduire la conversation ?

Alignement de Green Software Foundation : Efficacité énergétique

Recommandation :

Garantir la compatibilité logicielle descendante pour s’assurer qu’il fonctionne sur du matériel hérité

Réfléchissez à la façon dont les applications affichent les informations. L’application doit-elle répondre de manière critique à tout ce qui est de la plus haute qualité, ce qui entraîne une bande passante et un traitement plus élevés ? Y a-t-il de la place pour réduire la qualité des composants dans l’interface utilisateur afin de mieux répondre aux objectifs de durabilité ?

Alignement de Green Software Foundation : efficacité matérielle

Recommandation :

  • Prendre en charge davantage d’appareils consommateurs d’utilisateurs finaux, tels que les navigateurs et les systèmes d’exploitation plus anciens. Cette compatibilité descendante améliore l’efficacité du matériel en réutilisant le matériel existant au lieu d’exiger une mise à niveau matérielle pour que la solution fonctionne.
  • Considérez ce compromis : si les mises à jour logicielles les plus récentes présentent des améliorations significatives des performances, l’utilisation d’anciennes versions de logiciels peut ne pas être plus efficace.

Tirer parti des modèles de conception natifs cloud

L’apprentissage des modèles de conception natifs cloud est utile pour créer des applications, qu’elles soient hébergées sur Azure ou exécutées ailleurs. L’optimisation des performances et des coûts de votre application cloud réduira également son utilisation des ressources, d’où ses émissions de carbone.

Alignement de Green Software Foundation : efficacité énergétique, efficacité matérielle

Recommandation :

Envisagez d’utiliser des modèles de disjoncteur

Envisagez d’évaluer et d’empêcher les applications d’effectuer des opérations susceptibles d’échouer. Les échecs répétés peuvent entraîner une surcharge et un traitement inutile que vous pouvez éviter avec des modèles de conception appropriés.

Alignement de Green Software Foundation : Efficacité énergétique

Recommandation :

  • Un disjoncteur peut servir de proxy pour les opérations susceptibles d’échouer et doit surveiller le nombre de défaillances récentes qui se sont produites et utiliser ces informations pour décider s’il faut continuer.
  • Étudiez le modèle Disjoncteur, puis réfléchissez à la façon dont vous pouvez implémenter les modèles Disjoncteur dans vos applications.
  • Envisagez d’utiliser Azure Monitor pour surveiller les défaillances et configurer des alertes.

Optimiser le code pour une utilisation efficace des ressources

Les applications déployées à l’aide d’un code inefficace peuvent avoir un impact inhérent sur la durabilité.

Alignement de Green Software Foundation : efficacité énergétique, efficacité matérielle

Recommandation :

  • Réduisez les cycles du processeur et le nombre de ressources dont vous avez besoin pour votre application.
  • Utilisez des algorithmes et des modèles de conception optimisés et efficaces.
  • Considérez le principe Ne pas vous répéter (DRY).

Optimiser pour les modèles d’accès asynchrones

Les demandes sur les applications peuvent varier et il est essentiel d’envisager des moyens de stabiliser l’utilisation afin d’éviter une surutilisation ou une sous-utilisation des ressources, ce qui peut entraîner des déversements d’énergie inutiles.

Alignement de Green Software Foundation : Efficacité énergétique

Recommandation :

  • Les demandes de mise en file d’attente et de mise en mémoire tampon qui ne nécessitent pas de traitement immédiat, puis traitées par lots. La conception de vos applications de cette façon permet d’obtenir une utilisation stable et d’aplatir la consommation afin d’éviter les requêtes pointées.
  • En savoir plus sur l’optimisation des modèles d’accès asynchrones.

Évaluer le rendu côté serveur et côté client

Déterminez s’il faut effectuer un rendu côté serveur ou côté client lors de la création d’applications avec une interface utilisateur.

Alignement de Green Software Foundation : efficacité énergétique, efficacité matérielle

Recommandation :

  • Tenez compte des avantages suivants du rendu côté serveur :

    • Lorsque l’alimentation du serveur provient d’alternatives moins polluantes que les paramètres régionaux du client.
    • Lorsque le matériel sur le serveur présente de meilleurs ratios d’énergie de traitement.
    • Peut utiliser la mise en cache centralisée pour réduire plusieurs rendus inutiles.
    • La réduction du nombre d’allers-retours de navigateur à serveur peut être particulièrement importante lorsque l’appareil du client a un lien avec perte.
    • Lorsque les appareils clients sont plus anciens et ont des processeurs plus lents. Les utilisateurs n’ont pas besoin de mettre à niveau leurs appareils pour prendre en charge un navigateur moderne.
  • Tenez compte des avantages suivants du rendu côté client :

    • Lorsque les appareils de l’utilisateur final sont plus appropriés, poussez la responsabilité du rendu aux clients.
    • Il est plus efficace uniquement de restituer ce qui est nécessaire et tel que demandé, plutôt que de tout restituer au moins une fois.
    • Vous n’avez pas besoin d’un serveur, car vous pouvez vous appuyer sur le stockage statique.
    • La mise en cache du navigateur est utilisée sur les clients.

Soyez conscient de la conception de l’expérience utilisateur pour la durabilité

Réfléchissez à l’impact de la conception de l’expérience utilisateur d’une charge de travail sur la durabilité et déterminez les options qui existent pour améliorer l’efficacité énergétique et réduire la charge réseau, le traitement des données et les ressources de calcul inutiles.

Alignement de Green Software Foundation : Efficacité énergétique

Recommandation :

  • Envisagez de réduire le nombre de composants à charger et à afficher sur les pages.
  • Déterminez si l’application peut afficher des images et des vidéos de résolution inférieure.
    • Ne restituez pas les images de taille réelle sous forme de miniatures dans lesquelles le navigateur effectue le redimensionnement.
    • L’utilisation d’images de taille réelle sous forme de miniatures ou d’images redimensionnées transfère davantage de données, le trafic réseau inutile et l’utilisation supplémentaire du processeur côté client en raison du redimensionnement et du pré-rendu des images.
  • S’assurer qu’il n’y a pas de pages inutilisées permet de réduire la conception de l’expérience utilisateur.
  • Envisagez la recherche et la possibilité de trouver. Permettre aux utilisateurs de trouver plus facilement ce qu’ils recherchent permet de réduire la quantité de données stockées et récupérées.
  • Envisagez de fournir une interface utilisateur plus légère, en utilisant moins de ressources et avec un impact moindre sur la durabilité, et offrir aux utilisateurs un choix éclairé.
  • Économisez de l’énergie en proposant vos applications et sites web en mode sombre, avec des arrière-plans sombres.
  • Optez pour l’utilisation des polices système lorsque cela est possible pour éviter d’obliger les clients à télécharger des polices supplémentaires, ce qui entraîne une charge réseau plus importante.

Mettre à jour le code hérité

Envisagez de mettre à niveau ou de déprécier le code hérité s’il ne s’exécute pas sur une infrastructure cloud moderne ou avec les dernières mises à jour.

Alignement de Green Software Foundation : efficacité matérielle

Recommandation :

  • Identifiez le code hérité inefficace adapté à la modernisation.
  • Vérifiez s’il existe des options pour passer à serverless ou à l’une des options PaaS optimisées.
  • Considérez ce compromis : la mise à jour de l’ancien code qui peut finir par être déprécié peut prendre un temps précieux.

Étape suivante

Passez en revue les considérations relatives à la conception de la plateforme d’application.