103 votes

Quelle est la différence entre la scalabilité et l'élasticité?

J'ai entendu beaucoup de gens utiliser ces deux termes de manière interchangeable. Cependant, à mon avis, il y a une différence entre eux:

SCALABILITÉ - capacité d'un système logiciel à traiter des charges de travail plus élevées avec ses ressources matérielles actuelles (mise à l'échelle verticale) ou avec des ressources matérielles actuelles et supplémentaires (mise à l'échelle horizontale) sans interruption du service d'application;

ÉLASTICITÉ - capacité de la couche matérielle en dessous (généralement l'infrastructure cloud) à augmenter ou réduire le nombre de ressources physiques offertes par cette couche matérielle à la couche logicielle au-dessus. L'augmentation / diminution est déclenchée par des règles métier définies à l'avance (généralement liées aux demandes de l'application). L'augmentation / diminution se fait en temps réel sans interruption physique du service.

Encore une fois, la scalabilité est une caractéristique d'une architecture logicielle liée à la prise en charge d'une charge de travail plus élevée, tandis que l'élasticité est une caractéristique de la couche physique en dessous, entièrement liée aux optimisations du budget matériel.

Ai-je bien saisi la différence entre ces deux caractéristiques architecturales non fonctionnelles? Quelqu'un pourrait-il donner des exemples spécifiques, afin que nous puissions établir une frontière plus distinctive entre ces deux termes?

94voto

Arnon Rotem-Gal-Oz Points 8055

Scalabilité est la capacité du système à accueillir des charges plus importantes en ajoutant simplement des ressources, que ce soit en renforçant le matériel (montée en gamme) ou en ajoutant des nœuds supplémentaires (extension).

L'élasticité est la capacité d'adapter les ressources nécessaires pour faire face aux charges de manière dynamique, généralement en relation avec l'extension. Ainsi, lorsque la charge augmente, vous augmentez en ajoutant plus de ressources et lorsque la demande diminue, vous réduisez et supprimez les ressources inutiles. L'élasticité est principalement importante dans les environnements Cloud où vous payez à l'utilisation et ne voulez pas payer pour des ressources dont vous n'avez pas actuellement besoin d'une part, et souhaitez répondre à une demande croissante en cas de besoin de l'autre.

64voto

AnandG Points 525

_

Scalabilité: "Augmenter" la capacité pour répondre à la "charge de travail croissante".

Élasticité: "Augmenter ou réduire" la capacité pour répondre à la "charge de travail croissante ou décroissante".


Scalabilité: Dans un environnement évolutif, les ressources disponibles peuvent dépasser les "demandes futures".

Élasticité: Dans un environnement élastique, les ressources disponibles correspondent au plus près aux "demandes actuelles".


Scalabilité: La scalabilité s'adapte uniquement à "l'augmentation de la charge de travail" en "provisionnant" les ressources de manière "incrémentale".

Élasticité: L'élasticité s'adapte à la fois à "l'augmentation de la charge de travail" et à "la diminution de la charge de travail" en "provisionnant et déprovisionnant" les ressources de manière "autonome".


Scalabilité: Une charge de travail croissante est traitée en augmentant la puissance d'une ressource informatique unique ou en augmentant la puissance par un groupe de ressources informatiques.

Élasticité: Une charge de travail variable est gérée par des variations dynamiques dans l'utilisation des ressources informatiques.


Scalabilité: La scalabilité permet à une entreprise de répondre aux demandes de services attendues avec des "besoins à long terme, stratégiques".

Élasticité: L'élasticité permet à une entreprise de répondre aux changements inattendus de la demande de services avec des "besoins à court terme, tactiques".


Scalabilité: C'est "augmenter" la capacité pour servir un environnement où la charge de travail augmente.

Cette scalabilité peut être "Expansion verticale" ou "Expansion horizontale".

(Exemple:

Expansion verticale - augmenter la capacité d'un serveur individuel

Expansion horizontale - augmenter la capacité en ajoutant plusieurs serveurs au serveur individuel.)

Élasticité: C'est la capacité de "se développer ou se réduire" en fonction des besoins de service.


Scalabilité: Pour utiliser une comparaison, "l'expansion verticale" est une personne augmentant sa puissance pour répondre aux demandes croissantes, et "l'expansion horizontale" est le fait de constituer une équipe pour répondre aux demandes croissantes.

Élasticité: Pour utiliser une comparaison, un acteur de cinéma augmentant ou réduisant son poids corporel pour répondre aux besoins variés de l'industrie cinématographique.

_

27voto

Mike Christensen Points 29735

En général, lorsque quelqu'un parle de l'évolutivité d'une plateforme ou d'une architecture, ils veulent dire que les coûts matériels augmentent linéairement avec la demande. Par exemple, si un serveur peut gérer 50 utilisateurs, 2 serveurs peuvent gérer 100 utilisateurs et 10 serveurs peuvent gérer 500 utilisateurs. Si pour chaque tranche de 1 000 utilisateurs supplémentaires, vous avez besoin de 2 fois plus de serveurs, alors on peut dire que votre conception ne mettrait pas à l'échelle, car vous finiriez rapidement par manquer d'argent à mesure que le nombre d'utilisateurs augmenterait.

L'élasticité est utilisée pour décrire la capacité de votre architecture à s'adapter à la charge de travail en temps réel. Par exemple, si un utilisateur se connecte à votre site chaque heure, vous n'auriez vraiment besoin que d'un seul serveur pour gérer cela. Cependant, si soudainement, 50 000 utilisateurs se connectaient tous en même temps, votre architecture peut-elle rapidement (et éventuellement automatiquement) provisionner de nouveaux serveurs web pour gérer cette charge? Si c'est le cas, on pourrait dire que votre conception est élastique.

19voto

coderade Points 2856

La scalabilité fait référence à la capacité de vos ressources à augmenter ou diminuer en taille ou en quantité.

Il y a beaucoup d'infrastructures impliquées pour que quelque chose comme cela se produise, donc ce n'est pas une tâche facile.

De nombreux services dans AWS sont par défaut évolutifs, ce qui est l'une des raisons pour lesquelles AWS est si réussi.

La scalabilité est assez simple à définir, c'est pourquoi certains des aspects de l'élasticité lui sont souvent attribués.


L'élasticité est la capacité de vos ressources à évoluer en réponse à des critères définis, souvent des règles de CloudWatch.

C'est ce qui se produit lorsque l'équilibreur de charge ajoute des instances chaque fois qu'une application web reçoit beaucoup de trafic.

La scalabilité est requise pour l'élasticité, mais pas l'inverse.

Tous les services AWS ne supportent pas l'élasticité, et même ceux qui le font doivent souvent être configurés de certaine manière.

--

En résumé, la scalabilité vous donne la possibilité d'augmenter ou de diminuer vos ressources, et l'élasticité permet à ces opérations de se produire automatiquement selon des règles configurées.

9voto

CoyBit Points 98

Une image vaut mille mots. Je l'ai trouvé dans Fundamentals of Software Architecture: An Engineering Approach de Mark Richards et Neal Ford.

entrez la description de l'image ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X