J'ai entendu beaucoup de gens utiliser les deux termes de manière interchangeable. Cependant, à mon avis, il y a une différence entre eux:
ÉVOLUTIVITÉ- capacité d'un système à augmenter la charge de travail sur ses ressources matérielles actuelles (scale up);
ÉLASTICITÉ- capacité d'un système à augmenter la charge de travail sur ses ressources matérielles actuelles et supplémentaires (ajoutées dynamiquement à la demande) (scale out);
L'élasticité est fortement liée aux applications déployées sur le cloud.
Ai-je bien compris la différence entre ces deux caractéristiques logicielles non fonctionnelles? .__ Quelqu'un peut-il donner des exemples spécifiques, afin que nous puissions tracer une frontière plus distinctive entre ces deux termes?
L'évolutivité est la capacité du système à prendre en charge des charges plus importantes simplement en ajoutant des ressources, soit en renforçant le matériel (évolution), soit en ajoutant des nœuds (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 la montée en charge. Ainsi, lorsque la charge augmente, vous ajoutez de plus en plus de ressources et lorsque la demande diminue, vous réduisez et supprimez les ressources inutiles. L'élasticité est essentielle dans les environnements Cloud où vous payez à l'utilisation et ne souhaitez pas payer pour des ressources vous n'en avez pas besoin d'une part, et vous voulez répondre à la demande croissante, le cas échéant.
_
Évolutivité: "Augmenter" la capacité de répondre à la charge de travail "croissante".
Élasticité: "Augmenter ou réduire" la capacité de faire face à la charge de travail "croissante ou réductrice".
Évolutivité: Dans un environnement évolutif, les ressources disponibles peuvent dépasser pour répondre aux "demandes futures".
Élasticité: Dans l’environnement élastique, les ressources disponibles correspondent au mieux aux "demandes actuelles".
Évolutivité: L'évolutivité s'adapte uniquement à "l'augmentation de la charge de travail" en "provisionnant" les ressources de manière "incrémentielle".
É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".
Évolutivité: On augmente la charge de travail en augmentant la puissance d'une ressource d'ordinateur unique ou en augmentant la puissance d'un groupe de ressources informatiques.
Élasticité: La charge de travail varie en fonction des variations dynamiques dans l'utilisation des ressources informatiques.
Évolutivité: L’évolutivité permet à une entreprise de répondre aux demandes attendues de services répondant à des "besoins stratégiques à long terme".
Élasticité: L’élasticité permet à une entreprise de faire face à des changements inattendus dans la demande de services présentant des "besoins tactiques à court terme".
Évolutivité: Il "augmente" la capacité de servir un environnement dans lequel la charge de travail augmente.
Cette évolutivité pourrait être "Scaling Up" ou "Scaling Out".
(Exemple:
Scaling Up - Augmente la capacité d'un serveur individuel
Évolutivité - augmentation de la capacité en ajoutant plusieurs serveurs à un serveur individuel.)
Élasticité: C'est la capacité à "augmenter ou réduire" la capacité à servir à volonté.
Évolutivité: Pour utiliser une comparaison, "passer à l’échelle" est une personne qui augmente son pouvoir pour répondre aux demandes croissantes, et "l’extension" consiste à constituer une équipe pour faire face aux demandes croissantes.
Élasticité: Pour utiliser une comparaison, un acteur de cinéma augmente ou réduit son poids de corps pour répondre aux différents besoins de l'industrie du film.
_
Habituellement, lorsque quelqu'un parle d'une plate-forme ou d'une architecture scale, cela signifie que les coûts de matériel augmentent de façon linéaire 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 vous avez besoin de deux fois plus de serveurs par tranche de 1 000 utilisateurs, on peut dire que votre conception évolue pas, car vous manqueriez rapidement d'argent à mesure que votre nombre d'utilisateurs augmentait.
L'élasticité est utilisée pour décrire comment votre architecture peut adapter à la charge de travail en temps réel. Par exemple, si vous avez un utilisateur connecté chaque heure sur votre site, vous n’avez vraiment besoin que d’un seul serveur pour le gérer. Toutefois, si tout à coup 50 000 utilisateurs se connectent tous en même temps, votre architecture peut-elle rapidement (et éventuellement automatiquement) mettre en service de nouveaux serveurs Web à la volée pour gérer cette charge? Si tel est le cas, on pourrait dire que votre conception est élastique.
En termes de AWS :
Évolutivité fait référence à la capacité de vos ressources d’augmenter ou de diminuer en taille ou en quantité.
Il y a beaucoup d'infrastructure impliquée pour faire quelque chose comme ça, alors ce n'est pas une tâche facile.
De nombreux services dans AWS sont évolutifs par défaut, ce qui explique en partie le succès d'AWS.
L’évolutivité est assez simple à définir, c’est pourquoi certains aspects de l’élasticité lui sont souvent attribués.
Elasticity est la possibilité pour vos ressources de s’adapter en fonction des critères énoncés, souvent CloudWatch rules.
C'est ce qui se produit lorsqu'un équilibreur de charge ajoute des instances chaque fois qu'une application Web génère beaucoup de trafic.
Évolutivité est nécessaire pour l'élasticité, mais pas l'inverse.
Tous les services AWS ne prennent pas en charge l'élasticité, et même ceux qui le nécessitent doivent souvent être configurés d'une certaine manière.
Cela peut sembler redondant, mais les services AWS qui commencent par des élastiques prennent souvent en charge l'élasticité.
-
Dans resume, l’évolutivité vous permet d’augmenter ou de diminuer vos ressources, et l’élasticité permet à ces opérations de se dérouler automatiquement en fonction de règles configurées.
De ma compréhension limitée de ces concepts, un exemple:
Supposons que nous avons un système de 5 ordinateurs qui fait 5 unités de travail. Si nous avons besoin d'une unité de travail supplémentaire, nous devrons utiliser un autre ordinateur. 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 reste bloqué avec une ressource redondante.
Supposons maintenant 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 écoulée dans une unité de travail, le nuage fournira au système une autre "unité de calcul". Lorsque la charge de travail redescend dans le nuage, le nuage cessera normalement de fournir cette unité de calcul. C’est une situation où un système est à la fois évolutif et élastique.
L'élasticitéest la capacité d'un système à augmenter (ou à diminuer) sa capacité de calcul, de stockage, de gestion de réseau, etc. en fonction de critères spécifiés, tels que la charge totale du système.
Par exemple, vous pouvez implémenter un système dorsal qui a initialement 1 serveur dans son cluster mais le configurer pour ajouter une instance supplémentaire au cluster si l’utilisation moyenne du processeur 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 qu'il supprime les serveurs du cluster principal si la charge sur le système diminue et que l'utilisation moyenne du processeur par minute passe en dessous d'un seuil que vous avez défini (par exemple, 30%).
Autre exemple, vous pouvez configurer votre système pour qu'il augmente l'espace disque total de votre cluster principal de l'ordre de 2 si plus de 80% de la mémoire totale disponible est utilisée. Si, pour une raison quelconque, les données sont supprimées de la mémoire ultérieurement et que, par exemple, la mémoire totale utilisée tombe en dessous de 20%, vous pouvez réduire l'espace disque total disponible à sa valeur d'origine.
Mais certains systèmes (par exemple, les logiciels hérités) ne sont pas distribués et peuvent peut-être n’utiliser qu’un seul cœur de processeur. Ainsi, même si vous pouvez augmenter la capacité de calcul disponible sur demande, le système ne peut utiliser cette capacité supplémentaire sous aucune forme. De tels systèmes ne sont pas évolutifs. Cependant, un systèmescalablepeut utiliser une capacité de calcul accrue et gérer davantage de charge sans impacter les performances globales du système.
Un système évolutif ne dépend toutefois pas de l'élasticité. Traditionnellement, les services informatiques pouvaient remplacer leurs serveurs existants par des serveurs plus récents dotés de davantage de CPU, de RAM et de stockage, et transférer le système sur le nouveau matériel afin d’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 évolutifs et prêts à l'emploi. En outre, si vous créez un logiciel évolutif, 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.
L'élasticité est liée aux exigences à court terme d'un service ou d'une application et à ses variations, mais l'évolutivité répond aux besoins à long terme.