Comme souvent, l’apparition de nouveaux modèles bouscule nos habitudes et fait évoluer la vision que nous avons de nos métiers. Le Cloud Computing ne fait pas exception à la règle et je vous propose ici quelques réflexions sur l’impact de ce modèle sur notre perception de la qualité et de la performance des logiciels.

Spécialistes de la performance des systèmes d’information, les équipes Neoxia ont réalisé depuis presque 10 ans maintenant de très nombreuses missions d’audit de performance, d’optimisation, de refactoring et de réécriture de systèmes complexes qui nécessitaient d’atteindre des niveaux de performance élevés.

A quelques rares exceptions près, le schéma est toujours le même: 90% des causes des limites de performance des systèmes auraient pu être traitées dès la phase de conception ou de développement, à un coût nul ! En effet, c’est uniquement le manque de sensibilisation des équipes projets sur les enjeux et les bonnes pratiques de performance qui n’ont pas permis, au moment où cela aurait été possible de le faire sans surcoût, de prévenir les futurs problèmes de performance en production.

La solution à un problème de performance ne fait pas plus de mystère. Un audit permet d’identifier les freins de performance réels et de définir un plan d’action à partir d’une matrice des opportunités de gains de performance du système. Selon les cas, les actions qu’il est nécessaire de mettre en oeuvre sont, par ordre croissant d’impacts, de risques et de coûts, le tuning, l’optimisation, le refactoring ou la réécriture du système.

Dans le contexte traditionnel d’un SI hébergé sur une infrastructure privée, externalisée ou pas, les actions d’amélioration des performances d’un système ne sont le plus souvent envisagées que lorsque les premiers problèmes apparaissent. Par exemple, il peut s’agir de tests de charge non-concluants réalisés peu avant la mise en production. Dans certains cas ce sont les utilisateurs eux mêmes qui, en production, expérimentent les problèmes de performance des applications.

Il n’est pas mon propos dans ce billet d’insister sur le fait que ces pratiques sont fort regrettables d’autant plus que les problèmes de performance en question et les coûts induits auraient pu être évités, sans surcoût, par une généralisation en amont des bonnes pratiques de conception, de développement et de test. J’ai souhaité en effet plutôt m’intéresser aux nombreux cas intermédiaires où les systèmes auraient pu être, toujours sans surcoût, plus performants, c’est à dire moins consommateurs de ressources, sans que pour autant de véritables problèmes de performance ne se manifestent. Dans ces cas là, à quelques rares exceptions près, aucune action d’amélioration des performances n’est jamais réalisée.

Dans un modèle Cloud, le coût d’exploitation d’un service est directement lié à son usage et à sa consommation de ressource, donc à sa performance intrinsèque.

   Coûts d'exploitation = Usage x Consommation des ressources

Il apparaît donc que le modèle Cloud permette de révéler un potentiel de gain que les modèles traditionnels d’hébergement masquaient jusqu’alors. Ainsi, il serait possible de calculer exactement le ROI d’une action d’amélioration des performances d’un système en comparant le coût de sa mise en oeuvre et les gains financiers obtenus sur les coûts d’exploitation du service. Cette opportunité de gain est d’autant plus alléchante que les coûts d’amélioration sont majoritairement des coûts fixes, ou pour être exact des coûts bornés, alors que les gains bénéficient eux du facteur multiplicatif de l’usage.

   Gain = Usage x Optimisation des ressource - Cout de l'amélioration

Bien que cette démonstration puisse paraître simple, je dois avouer qu’il y a un biais. En effet, dans l’absolu, ce même raisonnement pourrait se tenir dans un environnement traditionnel non Cloud. Alors où est la nouveauté ? Effectivement, ce raisonnement pourrait s’appliquer à nos SI traditionnels. Mais alors pourquoi ne sommes nous pas dans une démarche continue d’amélioration des performances de nos systèmes et d’optimisation de la consommation de nos ressources IT ? Et bien en fait, nous y sommes ! Effectivement, tous les trois ans, nous modernisons nos infrastructures. Tous les 5 à 10 ans nous modernisons nos applications, etc. Chacun de ces projets, plutôt longs et couteux il faut le rappeler, donnent lieu à un ensemble d’études préalables qui présentent des ROI à 2 ou 5 ans, sans que l’on ne pense d’ailleurs vraiment à les calculer un jour !

Ce que change le modèle Cloud, c’est que les contingences se réduisent tellement, qu’il s’agisse des délais d’amortissement, de mise en oeuvre, ou de déploiement, et que les gains se mesurent tellement simplement au niveau de la facturation du service, qu’il est possible de tirer bénéfice des actions d’amélioration beaucoup plus rapidement. Enfin, je ferais remarquer que ce n’est pas parce qu’une action d’amélioration ne coûte rien, lorsqu’elle est réalisée en amont au moment de la conception ou du développement, qu’elle ne rapporte rien ! C’est bien évidemment le contraire, puisque son retour sur investissement et simplement immédiat !

Ainsi, le Cloud Computing donne à l’amélioration continue un véritable modèle économique, simple, efficace et dont, n’en doutons pas, les utilisateurs vont se saisir très rapidement. C’est une très bonne nouvelle que dans ce nouveau modèle, on puisse associer d’une manière simple et compréhensible par le client, « Qualité » et « Baisse des coûts » !

fig 1 : les opportunités révélées par le modèle Cloud Computing