L'élasticité dans le cloud computing est la capacité d'un cloud à s'adapter aux besoins applicatifs le plus rapidement possible. Il existe plusieurs définitions selon les auteurs, certains considérant les notions de Scalability et d'élasticité comme identiques, d'autres comme étant distinctes. L'arrivée de tels systèmes distribués (voir Calcul distribué) entraîne forcément des problèmes techniques qu'il faut régler ou limiter. Au niveau économique, l'arrivée de l'élasticité a eu des impacts chez les clients et les fournisseurs de cloud. Les fournisseurs ont par exemple créé un système de paiement « » permettant de payer les ressources utilisées à la demande. Ainsi, un client peut louer un serveur sur une courte période et à la taille voulue.
De nombreux fournisseurs tels que Amazon Web Services, Microsoft Azure ou encore Google App Engine ont créé des serveurs de cloud à la demande. Mais chaque fournisseur de cloud a ses spécificités en termes de vitesse, d'élasticité, de latence, etc.
Définitions Notions Il est commun de considérer l'élasticité et la scalabilité comme étant des synonymes. L'élasticité dans le cloud peut être comparée à la propriété physique de l'élasticité d'un matériel, qui correspond à sa capacité à revenir à sa forme originale après une déformation qu'il a subi. Ainsi l'élasticité peut être calculée comme le rapport entre la pression que le cloud peut subir sur la pression qu'elle subit.
Pour autant, d'autres comme N. R. Herbst et Doaa M. Shawky en font deux définitions bien distinctes : Scalabilité La scalabilité est la capacité d'un système à subvenir aux besoins en ressources, sans prendre en compte la rapidité, le temps, la fréquence, ni la granularité de ses actions.
Élasticité L'élasticité est le degré auquel un système est capable de s'adapter aux demandes en approvisionnant et désapprovisionnant des ressources de manière automatique, de telle façon à ce que les ressources fournies soient conformes à la demande du système.
La scalabilité est donc un prérequis à l'élasticité. Le temps est un lien important entre l'élasticité et la scalabilité : moins le système prend de temps à se s'adapter, plus il est élastique.
Tout l’intérêt de l'élasticité dans le cloud est d'ailleurs de répondre le plus précisément possible à la demande en ressources d'une application. Pour cela, les systèmes sont capables de s'adapter en quelques minutes.
Ressources Deux approches de l'élasticité existent. La première est dite élasticité horizontale. Cette forme d'élasticité s'effectue en ajoutant ou supprimant des machines virtuelles à l'instance du client. La deuxième approche, dite verticale, s'effectue non plus en ajoutant des serveurs, mais en ajoutant des ressources à la machine, tel que de la RAM, du CPU, etc..
En règle générale, l'élasticité horizontale a un coût en temps plus important que l'élasticité verticale du fait qu'il faille attendre que la machine virtuelle soit créée et bootée. Ainsi pour de meilleures performances, on utilisera l'élasticité verticale. Le problème est que ce type d'approche est bien plus limité que la scalabilité horizontale. En effet, la scalabilité verticale ne peut pas s'étendre sur des ressources en dehors de la machine physique. Ainsi, il convient de bien définir sur quelle machine la machine virtuelle va être démarrée au début, afin de pouvoir scaler de façon verticale le plus longtemps possible.
Dans son article, Chien-Yu Liu définit un algorithme qui, selon lui, est le plus efficace, alliant la scalabilité quasi infinie de l'élasticité horizontale, et la rapidité de l'élasticité verticale: Pour augmenter les ressources de machine virtuelle, quand la machine virtuelle ne suffit plus, il faut en créer de nouvelles sur le même cloud (élasticité horizontale). Si un seul cloud ne peut satisfaire les demandes en ressources, il faut ajouter des machines virtuelles venant d'autres clouds (élasticité horizontale). Quand le cloud ne satisfait plus les demandes, il faut passer à l'application suivante.
Métriques N. R. Herbst, dans son article, nous présente une façon de calculer l'élasticité descendante et ascendante, mais aussi la précision d'un système de cloud en sur-approvisionnement et en sous-approvisionnement. Ainsi, l'élasticité ascendante (respectivement descendante) est inversement proportionnelle au temps moyen passé par un système en sous-approvisionnement (respectivement sur-approvisionnement) à un état optimal (respectivement ) par la moyenne de la quantité accumulée des ressources sous-approvisionnées (respectivement sur-approvisionnement) sur la période de test (respectivement ):
La Précision ascendante (respectivement descendante) est le rapport entre la quantité accumulée des ressources sous-approvisionnées (respectivement sur-approvisionnement) (respectivement ) et la période de test :
Problèmes et limites Problèmes La flexibilité des systèmes de cloud fait naître quelques défis chez les fournisseurs. Le premier est qu'il existe plusieurs configurations de base, il est généralement assez difficile de savoir laquelle choisir. Le but étant d'avoir la meilleure configuration tout en étant la moins chère. Une fois cette étape franchie, l'application va avoir des demandes plus ou moins importantes sur le temps. Comment, et quand approvisionner/désapprovisionner le système ? Dans cette étape, l'objectif est de minimiser les coûts en infrastructure (euros) et en transition (temps).
L'un des plus grands défis dans le cloud est de résoudre les erreurs dans les très grands systèmes distribués. Étant des problèmes liés aux très grands systèmes, il est impossible de les résoudre sur de plus petits, ainsi, les tests sont faits directement sur les environnements de production. Le fait d'utiliser des machines virtuelles peut être une solution. En effet, il est possible de capter des informations précieuses sur une VM, là où c'est impossible sur des machines physiques. Malheureusement, tous les fournisseurs ont développé leur offre sans utiliser de VM, soit parce qu'ils ont débuté avant l'ère de la virtualisation, soit parce qu'ils pensaient qu'ils ne pouvaient pas se l'offrir.
Un autre défi est de gérer la flexibilité du stockage. De nombreuses tentatives ont été faites pour répondre à cette question, variant dans la richesse des requêtes et des API de stockage, les garanties de performance offertes. L'idée, étant de non seulement répondre aux attentes des programmeurs en ce qui concerne la durabilité, la haute disponibilité et la capacité de gérer et d'interroger des données, tout en gardant les avantages de la flexibilité du cloud.
Il existe aussi des défis qui relient élasticité et écologie des clouds. En effet, il est important que les applications hébergées sur le cloud libèrent le plus possible les ressources non utilisées. Premièrement, car un ordinateur en veille ne consomme "que" deux-tiers de ses ressources, ce qui fait un grand gain d'énergie, et ensuite car cela implique un impact plus positif sur l'environnement, alors que la filière est très mal vue par l'opinion publique. Pour cela, les fournisseurs ont créé le système de facturation à grain fin () afin d'inciter les utilisateurs à libérer les ressources dès que possibles.
Les licences de logiciel posent également problème. En effet, certains fournisseurs de logiciels n'ont pas encore d'offres pour le cloud, ce qui implique des coûts de licences logiciels astronomiques. Pour répondre à ce problème, l'open source est une solution très populaire. Heureusement, certains fournisseurs tels qu'Amazon ou Microsoft commencent à faire des offres de licence logiciel « ». Bien que les instances tournent sur une structure logiciel payante, cela reste une alternative très intéressante face aux solutions open source (respectivement /h contre /h).
L'élasticité permettant d'acquérir dynamiquement ou de libérer des ressources informatiques en réponse à la demande, il est important d'avoir une surveillance ainsi qu'un contrôle de celle-ci. Les données à superviser sont classées en trois dimensions : le coût, la qualité et les ressources. Des framework comme MELA permettent de surveiller et d'analyser l'élasticité des services cloud. Pour le contrôle de celle-ci, des outils comme SYSBL (Simple Yet Beautiful Language) , permettent d'avoir un contrôle sur trois niveaux : au niveau de l'application, au niveau du composant et au niveau de la programmation, et aussi de répondre aux exigences de l'élasticité.
Un autre problème à prendre en compte est le temps de démarrage des machines virtuelles. En effet elles doivent être disponible dans le temps et prêtes à l'emploi pour les utilisateurs. Ce temps de démarrage peut prendre en compte différents facteurs: le temps de la journée, la taille de l'image de OS, le type d'instance, l'emplacement des datacenters et le nombre d'instances demandées en même temps.
Limites Chaque système a ses limites. Dans le cas du cloud, l'une des premières identifiables de son élasticité est le nombre de ressources disponibles, d'autres limites ont été trouvées.
D'après des tests effectués par Doaa M. Shawky, plus on alloue de machines à la fois, moins le système est élastique. En effet, lors d'une expérience, il compare deux systèmes avec les mêmes valeurs de stress, l'un incrémentant le nombre de machines par paquets de 10, le second par lots de 20. Il s'est avéré que le temps moyen d'extension des deux expériences est de 4427.2 secondes et 6334.4 secondes respectivement. Dans le même temps, l'élasticité moyenne était respectivement de 0.0036 et 0.0028. Dans le cas où l'élasticité du système se fait de manière horizontale, l'élasticité est également diminuée au fur et à mesure que le nombre de machines allouées augmente. Cela est dû au fait que le temps d'extension augmente.
Économie Du fait de l'élasticité du cloud, les systèmes des fournisseurs ont un taux d'utilisation de leurs systèmes compris entre 5 % et 20 %. De ce fait, il y a toujours des ressources disponibles dans le cas où une forte demande en ressources viendrait à arriver de la part d'un ou plusieurs clients.
Fournisseurs Les fournisseurs se permettent de faire varier leurs prix grâce aux variations des coûts du cloud: ceux-ci comprennent l'approvisionnement et l'entretien du matériel tel que les processeurs, la mémoire, le disque dur, et le réseau. La taille de la mémoire, la taille de l'espace disque utilisé, et le coût de transmission de données sont aussi pris en compte lors de la location par le client.
Amazon EC2 propose deux modèles économiques à ses clients : le premier, nommé "On-demand instances", est le modèle économique le plus commun, le « ». En choisissant cette offre, les clients n'ont pas d'engagement, et sont libres de leur planification. le second est nommé . Cette option permet à Amazon de jouer sur les prix selon l'utilisation de leur cloud. Moins il sera utilisé, plus les prix seront bas, mais l'inverse est vrai aussi. Grâce à l'offre spot instances, Amazon incite ses clients à utiliser leur cloud lors des périodes creuses, à terme la société veut aplanir la courbe d'utilisation de leur cloud, ce qui permettra de baisser les coûts de maintenance.
Clients L'utilisation du cloud peut, de par son élasticité, avoir plusieurs avantages pour un client :
Par exemple, une start-up qui aurait besoin de faire de gros calculs paierait le même prix à utiliser 1000 machines Amazon EC2 pendant une heure que 1 machine pendant 1000h.