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?

7voto

Rahul Saxena Points 161

La scalabilité gère l'augmentation et la diminution des ressources en fonction des demandes de charge de travail du système. Ainsi, la scalabilité n'a pas besoin d'être effectuée automatiquement.

L'élasticité est la capacité d'augmenter ou de diminuer automatiquement ou dynamiquement les ressources selon les besoins. Les ressources élastiques correspondent aux besoins actuels et les ressources sont ajoutées ou supprimées automatiquement pour répondre aux demandes futures lorsque cela est nécessaire.

En résumé, la capacité d'un système à gérer automatiquement la scalabilité est l'élasticité.

4voto

Aboozar Rajabi Points 875

L'élasticité est liée aux besoins à court terme d'un service ou d'une application et à leur variation, tandis que la scalabilité prend en charge les besoins à long terme.

1voto

Behrang Points 13471

Élasticité est la capacité d'un système à augmenter (ou diminuer) sa capacité de calcul, de stockage, de réseau, etc. en fonction de critères spécifiés tels que la charge totale sur le système.

Par exemple, vous pouvez mettre en place un système backend qui a initialement 1 serveur dans son cluster mais le configurer pour ajouter une instance supplémentaire au cluster si l'utilisation moyenne du CPU par minute de tous les serveurs du cluster dépasse un seuil donné (par exemple 70%).

De même, vous pouvez configurer votre système pour supprimer des serveurs du cluster backend si la charge sur le système diminue et que l'utilisation moyenne du CPU par minute passe en dessous d'un seuil défini par vous (par exemple 30%).

Par exemple, vous pouvez configurer votre système pour augmenter l'espace disque total de votre cluster backend par un facteur de 2 si plus de 80% de l'espace de stockage total actuellement disponible est utilisé. Si, pour une raison quelconque, à un moment ultérieur, des données sont supprimées du stockage et que, disons, l'espace de stockage utilisé total passe en dessous de 20%, vous pouvez réduire l'espace disque total disponible à sa valeur originale.

Mais certains systèmes (par exemple des logiciels anciens) ne sont pas distribués et peut-être ne peuvent utiliser qu'un seul cœur de processeur. Ainsi, même si vous pouvez augmenter la capacité de calcul disponible à la demande, le système ne peut pas utiliser cette capacité supplémentaire sous quelque forme que ce soit. De tels systèmes ne sont pas scalables. Mais un système scalable peut utiliser une capacité de calcul accrue et gérer une charge plus importante sans affecter les performances globales du système.

Un système scalable ne dépend cependant pas de l'élasticité. Traditionnellement, les départements informatiques pouvaient remplacer leurs serveurs existants par de nouveaux serveurs dotés de plus de CPU, de RAM et de stockage et migrer le système vers le nouveau matériel pour utiliser la capacité de calcul supplémentaire disponible.

Les environnements cloud (AWS, Azure, Google Cloud, etc.) offrent de l'élasticité et certains de leurs services de base sont également scalables dès le départ. De plus, si vous construisez un logiciel scalable, vous pouvez le déployer dans ces environnements cloud et bénéficier de l'infrastructure élastique qu'ils vous fournissent pour augmenter/diminuer automatiquement les ressources de calcul disponibles à la demande.

0voto

zohar Points 1

De ma compréhension limitée de ces concepts, un exemple :

Disons que nous avons un système de 5 ordinateurs qui effectue 5 unités de travail, si nous avons besoin d'une unité de travail supplémentaire à effectuer, nous devrons utiliser un ordinateur de plus. C'est un système évolutif mais ce n'est pas élastique. Quelqu'un devra aller chercher cet autre ordinateur. De plus, si un nouvel ordinateur est acheté et que l'unité de travail supplémentaire n'est plus nécessaire, le système se retrouve avec une ressource redondante.

Maintenant, disons que le même système utilise, au lieu de ses propres ordinateurs, un service cloud adapté à ses besoins. Idéalement, lorsque la charge de travail est augmentée d'une unité de travail, le cloud fournira au système une autre "unité de calcul", lorsque la charge de travail diminue, le cloud cessera gracieusement de fournir cette unité de calcul. C'est une situation où un système est à la fois évolutif et élastique.

0voto

Henry Ly Points 1119

La scalabilité et l'élasticité font référence à répondre à la demande de trafic mais dans deux situations différentes.

La scalabilité répond à une demande de trafic prévisible tandis que l'élasticité répond à une demande de trafic soudaine.

entrez la description de l'image ici

référence à l'image : https://www.skylinesacademy.com/blog/2020/3/6/az-900-cloud-concepts-scalability-and-elasticity

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