Tribunes

2012, l’année du « coming out » de la propriété intellectuelle dans la gestion des systèmes d’information
par Tru Dô-Khac, consultant en innovation et gouvernance numérique d’entreprise

Qu’est-ce qui fixe la valeur des choses à l’ère numérique ?
Par Par Sabine Bohnké, fondatrice du cabinet Sapientis

Colloque Computing
Par Jean-Marie Chauvet

Numérique = SI 2.0 + PI 2.0
Par Tru Dô-Khac, consultant en innovation et gouvernance numérique

L'Identitaire numérique
Par Jean-Marie Chauvet

Toute les tribunes

La vidéo du moment
Actualité marchés verticaux

Apple détrône HP de sa place de leader sur le marché du PC

par Frederic
le 31/01/2012 à 04:56

Les réactions au démantèlement de Megaupload

par jluc
le 29/01/2012 à 11:23

Bouygues Telecom s'aligne sur Free Mobile

par Bolzano
le 16/01/2012 à 12:00

Vers une pénurie de spécialistes en Business Intelligence

par Opteamis
le 20/12/2011 à 05:59

Amazon vend plus d'un million de Kindles par semaine

par yt75
le 20/12/2011 à 01:29

Rechercher
Services
Logo_abonn Job Les derniers communiqués de presse Proposer un communiqué de presse MSDAYS
Fils RSS : Top 10 quotidien

Green IT : quel impact sur le design des architectures logicielles ?
Par Eric Fauquemberge, architecte .NET chez Novedia Solutions et référent de la communauté .NET

jeudi 23 juillet 2009

20090723_01Effectuer deux recherches sur Google consomme l'énergie équivalente à celle nécessaire pour faire chauffer 2 tasses d'eau dans une bouilloire (soit 7g de CO2, pour les fans de chiffres). C'est le résultat d'une étude scientifique intitulée Google and you'll damage the planet et citée par le journal anglais Times le 11 Janvier 2009.

 

Ainsi on voit que les activités informatiques sont bien énergivores... Cela rend plus concret et compréhensible le besoin de prendre en compte les considérations environnementales dans la mise en place des systèmes d'information.

 

Nous allons ici essayer de mettre en évidence l'impact que devrait avoir cette approche sur le design des architectures logicielles, et comment les acteurs du développement informatique peuvent y contribuer. Vous pourrez constater un biais orienté vers les technologies .Net dans les exemples cités, mais les principes s'appliquent facilement dans tous les environnements technologiques.

 

Green IT : qu'est-ce donc ?

 

Il s'agit de l'effort réalisé par l'ensemble de l'écosystème informatique (fournisseurs de matériels, gestionnaires de centre de données, départements IT des entreprises, éditeurs logiciels) pour réduire l'impact environnemental de cette activité.

 

On peut y voir plusieurs motivations :

 

Etre Green, c'est réduire sa consommation électrique en jouant sur le levier de la consommation de ses centres de données (alimentation des serveurs, climatisation...) mais aussi réduire la quantité de matériaux à recycler (serveurs en fin de vie ...).

 

Cela regarde-t-il l'architecture logicielle ?

 

Tout cela est bien joli et n'est donc pas qu'un concept fumeux, me direz-vous, mais...

La réponse est négative : l'architecture et la conception des solutions logicielles peuvent et doivent participer à cette démarche.

 

Voici quelques pistes et bonnes pratiques d'architecture qui vont nous permettre d'apporter notre pierre à l'édifice...

 

Que peut-on faire dans le cadre de l'architecture logicielle ?

 

1. Utiliser chaque serveur au maximum de sa capacité

 

Traditionnellement, on s'occupe peu d'utiliser au maximum les capacités processeur d'un serveur. L'arrivée des processeurs multi-cœurs amène de réelles capacités de traitements parallèles auparavant uniquement accessibles aux machines multi-processeurs.

 

Cependant, la programmation parallèle est souvent perçue, et à raison, comme une activité relativement complexe à implémenter, à déboguer (ah, la synchro de thread et l'accès concurrent...) et à maintenir (compétences rares). Désormais, les utilisateurs du framework .Net ont à disposition une librairie facilitant grandement la programmation multi thread : les Extensions Parallèles à .NET (PFX).

 

Ce framework additionel permet par exemple d'exécuter les itérations d'une boucle dans un pool de threads sans avoir à se soucier des problématiques de synchronisation, d'allocation de threads etc. Cela peut répondre à des besoins de calculs ou chaque itération est indépendante des autres. On peut aussi utiliser PFX for Linq (PLinq) pour accélérer l'accès et la manipulation des données (Le blog de l'équipe PFX).

 

En utilisant un serveur au maximum de ses capacités processeur par la l'utilisation du multithreading, on réduit le besoin de montée en charge par ajout de serveurs. On est alors un peu plus Green (Un bon article sur le sujet : Les éditeurs de logiciels dépassés par l'évolution des puces multicœurs).

 

2. Instrumenter les applications dans ce but

 

On a l'habitude d'instrumenter nos applications afin de signaler les problèmes aux outils d'exploitation et pour faciliter le déboguage a posteriori (logging, event log ...). Il est intéressant d'ajouter dans cette partie de l'architecture applicative des capacités de reporting de l'état de l'application au monde extérieur : compteurs de performance pour indiquer le flux traité par l'application, etc.

 


Ainsi, on est facilement capable d'analyser les pics de charge constatés par l'application en production et ainsi de procéder au provisioning adéquat de serveurs, ce qui peut notamment permettre de réduire le nombre de serveurs en cas de sur allocation initiale !
En se rendant capable d'estimer plus précisément le nombre de serveurs nécessaires à l'utilisation de l'application, on est Green.

 


Par ailleurs, on s'efforcera de rendre débrayables tous ces mécanismes s'il s'avéraient trop consommateurs de ressources, ce qui pourrait alors s'avérer contre productif par rapport à l'objectif !

 

3. Veiller à la granularité des composants

 

Lorsqu'on est amené à faire croître le nombre d'instances d'une application monolithique pour répondre à des problèmes de charge, l'ensemble des couches de cette application se trouve dupliqué, alors qu'il est fort possible que seule une couche de l'application soit saturée (la couche métier par exemple). C'est alors un gâchis de ressources.

 

En rendant nos applications le plus modulaire possible, on sera d'autant plus flexible dans les possibilités de montée en charge.

 

On s'efforcera donc de découper les applications en modules s'exécutant de manière indépendante. On pourra s'inspirer des pistes ouvertes par l'approche SOA.

 

4. Utiliser asynchronisme et découplage

 

En complément du point précédent, on s'efforcera de rendre les couches de nos applications le moins couplées possibles, pour pouvoir gérer la multiplicité des services implémentant une couche.

 

On tirera partie des mécanismes de queues de messages pour implémenter des patterns de type producteurs/consommateurs.

 

L'asynchronisme sera à prendre en compte, d'autant plus que la réduction des coûts pourra imposer qu'une ressource ne sera pas toujours à disposition au moment où l'on en a besoin.

 

5. Aller sur la voie du Cloud Computing

 

Pour terminer, je voudrais mentionner la piste du Cloud Computing. En déchargeant les entreprises des tâches liés à la gestion physique des serveurs, et en déportant cette gestion dans des data centers à l'empreinte écologique optimisée, cette piste est prometteuse. Au delà de l'optimisation du coût individuel d'un serveur, elle permet aussi de répondre à des problématiques de pics de charge ponctuels (les soldes pour un site de e-commerce), ou de sous charge (juste avant les soldes !) par réallocation du nombre de serveurs affectés à l'application.

Néanmoins, avoir recours à la solution du Cloud Computing n'est pas sans conséquence sur l'architecture logicielle !

 

Je vais prendre ici l'exemple de l'offre Microsoft Windows Azure.

S'exécutant dans des « bacs à sable » (au mieux une machine virtuelle/physique indépendante, au pire dans des application domains séparés mais partageant une machine virtuelle/physique), les applications vont devoir d'adapter:

 

Etant facturés à la consommation des ressources de base CPU/disque/mémoire, ce type d'hébergement d'application sera d'autant plus économique que ces consommations sont optimisées. Gageons donc que l'utilisation de profilers de performance et l'optimisation des algorithmes et structures de stockage sera le nerf de la guerre (économique). En utilisant le Cloud Computing à bon escient, on sera Green.

 

Conclusion

 

On a vu que l'utilisation de techniques et de choix architecturaux pertinents pouvait faire contribuer les applications informatiques à une démarche d'optimisation d'empreinte écologique.

 

On retiendra, en résumé :

 

Et aussi : éteignez la lumière en quittant votre bureau, privilégiez les escaliers à l'ascenseur...

 

___________________
Novedia Group en bref
Novedia, groupe dédié aux technologies de l'information et de la communication, accompagne les entreprises dans les phases de réflexion, de réalisation et d'animation de leurs activités web et mobiles. Le groupe réunit 500 collaborateurs en France et à l'International, compte plus de 150 clients sur tous les secteurs d'activités et fait état d'un CA de 45 millions d'euros sur l'année 2008. Il est présent dans une quinzaine de pays.
http://www.novediagroup.com

 

 

 

 

 

 

Les commentaires

L'argument de départ est faux. On peut en voir une des réactions ici:
http://www.informatiquepourtous.com/forum/index.php?showtopic=25570

Le seul fait de pouvoir croire en une telle exageration, fût elle donnée par le times, me laisse perplexe sur les compétences de l'auteur.

Imaginons une demie seconde la puissance de refroidissement des serveurs google si un clic valait tant d'énergie.
...
avec des éoliennes pour ventilo peut être?

Par plouffy le 25/07/2009 à 11:24

Les 10 derniers articles mis en ligne