Microservices

Recommandations issues des principes du génie logiciel durable appliqués aux micro-services

Microservices L’architecture des microservices consiste en un ensemble de petits services autonomes. Chaque service est autonome et doit implémenter une seule capacité métier. En appliquant les principes de l’ingénierie logicielle durable, voici des exemples de changements que vous pouvez apporter à votre architecture de microservices pour l’optimiser pour la durabilité.

Optimisez votre trafic réseau permalink

Réduisez la quantité de trafic que votre architecture crée par opération ainsi que la distance parcourue par chaque demande et réponse.

  • Pensez Ă  utiliser des en-tĂŞtes de mise en cache, qui permettent aux caches de navigateur et aux caches proxy d’avoir suffisamment d’informations pour mettre en cache les assets web statiques en toute confiance. La mise en cache des assets statiques au niveau du navigateur ou du proxy permet aux futures demandes de ces assets d’être traitĂ©es par ces caches et de rĂ©duire ainsi le trafic rĂ©seau vers votre application.
  • Envisagez d’utiliser un CDN pour distribuer les ressources statiques de votre application au plus près de la source d’une demande. Cette rĂ©partition des assets web rĂ©duit la distance que toutes les demandes d’assets statiques doivent parcourir sur le rĂ©seau.
  • Dans la mesure du possible, rĂ©duisez la taille et optimisez vos web bundles et vos assets web statiques.
    • Pensez Ă  utiliser la compression et la dĂ©compression pour les donnĂ©es que vous transmettez sur le rĂ©seau. La compression et la dĂ©compression nĂ©cessitent gĂ©nĂ©ralement moins d’énergie globale que la transmission de donnĂ©es non compressĂ©es sur le rĂ©seau.

Augmentez votre utilisation des calculs permalink

Mettez à jour la distribution de votre charge de travail et des ressources de calcul afin d’utiliser moins de ressources mais avec un taux d’utilisation plus élevé. Cela réduit la quantité d’énergie dépensée par vos ressources de calcul dans un état inactif ou qui gaspillent de l’énergie sans effectuer de travail.

  • Si vous utilisez des machines virtuelles pour les ressources de calcul et qu’elles sont peu utilisĂ©es, envisagez de rĂ©duire la taille de ces machines virtuelles pour augmenter ler utilisation. Les machines virtuelles plus petites avec une utilisation plus Ă©levĂ©e consomment gĂ©nĂ©ralement moins d’énergie que les machines virtuelles plus grandes avec une utilisation infĂ©rieure pour la mĂŞme charge de travail.
  • Évaluez la migration de votre charge de travail vers un PaaS lorsque cela est possible. En règle gĂ©nĂ©rale, les solutions PaaS sont dimensionnĂ©es de manière plus appropriĂ©e pour leur charge de travail et peuvent exĂ©cuter ces charges de travail avec une utilisation Ă©levĂ©e sur leurs ressources de calcul sous-jacentes.
  • Envisagez d’utiliser des capacitĂ©s de mise Ă  l’échelle automatique ou de rafale pour vos ressources de calcul plutĂ´t que d’allouer statiquement des ressources de calcul pour une capacitĂ© maximale Ă  tout moment. Ces fonctionnalitĂ©s vous permettent d’augmenter et de rĂ©duire vos ressources de calcul en fonction de la demande tout en maintenant une utilisation Ă©levĂ©e de ces ressources de calcul.
  • Si vous avez de nombreuses couches logiques au sein d’un niveau physique, envisagez d’augmenter vos niveaux physiques et de rĂ©organiser l’emplacement d’exĂ©cution de vos couches logiques. Augmenter le nombre de niveaux physiques avec une organisation plus granulaire des couches logiques vous offrent plus de flexibilitĂ© pour mettre Ă  l’échelle les couches logiques indĂ©pendamment. Cette flexibilitĂ© vous permet de maintenir une utilisation Ă©levĂ©e de vos ressources de calcul et d’éviter les couches logiques inactives.

RĂ©duisez votre nombre de microservices permalink

Une architecture de microservices est un moyen efficace de concentrer un service autour d’un domaine métier spécifique et de décentraliser la propriété et les connaissances au sein de l’équipe ou du système. Il est important de garantir le niveau d’abstraction approprié pour limiter la congestion, la latence et la complexité globale du réseau.

  • Envisagez de combiner des services, logiquement ou physiquement, lĂ  oĂą des points de mise Ă  l’échelle similaires existent pour rĂ©duire l’empreinte de l’architecture globale.
  • Si deux microservices ou plus sont fortement couplĂ©s, envisagez la colocalisation pour rĂ©duire la congestion et la latence du rĂ©seau.
  • Utilisez des langages et des piles technologiques qui optimisent l’efficacitĂ© d’une fonction de microservices spĂ©cifique. L’indĂ©pendance et l’abstraction des fonctionnalitĂ©s d’une couche API signifie que vous ĂŞtes libre de prendre les dĂ©cisions techniques qui maximisent l’utlisation dans votre pile technique pour chaque microservice.
  • Envisagez d’exĂ©cuter des microservices gourmands en ressources dans une rĂ©gion Ă  faible intensitĂ© de carbone.

Optimisez votre base de données permalink

L’optimisation de la base de données que vous utilisez ainsi que de la manière dont les données sont stockées peut réduire l’énergie utilisée pour exécuter la base de données ainsi que le temps d’inactivité d’attente pour la fin des requêtes.

  • Assurez-vous d’utiliser la meilleure base de donnĂ©es pour interagir avec votre ensemble de donnĂ©es. Par exemple, si vous exĂ©cutez de nombreuses requĂŞtes relationnelles sur votre ensemble de donnĂ©es, une base de donnĂ©es relationnelle est mieux adaptĂ©e et probablement plus efficace Ă  utiliser qu’une base de donnĂ©es NoSQL.
  • Si aucune base de donnĂ©es n’est conçue pour gĂ©rer toutes les façons dont vous interagissez avec votre ensemble de donnĂ©es, envisagez de conserver des copies redondantes de vos donnĂ©es dans diffĂ©rentes bases de donnĂ©es et d’utiliser chaque base de donnĂ©es pour le sous-ensemble d’interactions le mieux adaptĂ© Ă  cette base de donnĂ©es.
  • Pensez Ă  utiliser index si votre base de donnĂ©es le propose.
  • Envisagez d’évaluer et d’optimiser vos requĂŞtes.
  • Pensez Ă  utiliser un cache de base de donnĂ©es. Dans certains cas, la mise en cache peut rĂ©duire les requĂŞtes redondantes vers la base de donnĂ©es et diminuer la consommation d’énergie de la base de donnĂ©es, en particulier pour les requĂŞtes complexes ou gourmandes en calculs.

Comprenez vos limites en termes de latence permalink

Dans de nombreux cas, les applications Web sont conçues par défaut avec des attentes de latence très faibles, en supposant qu’une réponse à une demande se produise immédiatement ou dès que possible. Cette hypothèse peut limiter vos options de réduction de la consommation d’énergie dans votre application. Envisagez d’évaluer la façon dont votre application est utilisée et, si vous pouvez assouplir les limites de latence dans certaines zones, ce qui peut augmenter vos options de réduction de l’empreinte carbone.

  • Envisagez de placer certaines opĂ©rations en dehors du cycle de demande / rĂ©ponse. Par exemple, s’il y a une demande d’envoi d’un e-mail qui bloque la rĂ©ponse jusqu’à ce que l’e-mail soit envoyĂ©, vous pouvez Ă  la place envoyer l’e-mail de manière asynchrone Ă  l’aide d’un processus de travail et dĂ©bloquer la rĂ©ponse.
  • ConsidĂ©rez que l’exĂ©cution des processus de travail a une prioritĂ© infĂ©rieure Ă  celle des processus Web. Cette hiĂ©rarchisation permet aux processus de travail de s’exĂ©cuter uniquement lorsque les ressources de calcul ne sont pas nĂ©cessaires aux processus Web et maintient une utilisation Ă©levĂ©e.
  • Envisagez d’exĂ©cuter les processus de travail dans une rĂ©gion Ă  faible intensitĂ© de carbone.
  • Envisagez de retarder l’exĂ©cution du processus de travail lorsque l’intensitĂ© en carbone est la plus faible.