68 votes

Que signifie "évolutivité" ?

J'ai lu de nombreux articles comparant les langages de programmation.

Il y a un mot qui revient souvent : évolutivité . J'ai effectivement essayé de chercher une explication simple et claire, mais je n'ai rien trouvé.

Pouvez-vous expliquer ce que le évolutivité signifie-t-il ?

59voto

Furbeenator Points 2602

L'évolutivité est la capacité d'un programme à évoluer. Par exemple, si vous pouvez faire quelque chose sur une petite base de données (disons moins de 1000 enregistrements), un programme très évolutif fonctionnera aussi bien sur un petit ensemble que sur un grand ensemble (disons des millions ou des milliards d'enregistrements).

Comme l'a dit gap, il y aurait une croissance linéaire des besoins en ressources. Cherchez la notation Big-O pour plus de détails sur la façon dont les programmes peuvent nécessiter plus de calculs au fur et à mesure que l'entrée de données augmente. Quelque chose de parabolique comme Big-O(x^2) est beaucoup moins efficace avec de grandes entrées x que quelque chose de linéaire comme Big-O(x).

32voto

Arnon Rotem-Gal-Oz Points 8055

L'évolutivité est la caractéristique qui permet à une solution logicielle de gérer des charges de travail accrues. Il peut s'agir d'ensembles de données plus importants, de taux de demande plus élevés, d'une combinaison de taille et de vitesse, etc.

Lorsqu'on parle de l'évolutivité des systèmes, on fait généralement la différence entre

  • "Scale up" - la possibilité de se développer en utilisant un matériel plus puissant
  • "Scale out" - la possibilité de se développer en ajoutant plus de matériel.

Une solution capable de s'étendre peut généralement s'adapter à des charges plus importantes de manière plus rentable. Une chose importante à savoir ici est Loi d'Amdahl qui stipule que la capacité d'extension est limitée par la partie séquentielle du logiciel.

12voto

Satinder Sidhu Points 353

Déjà de bonnes réponses ici, je voulais juste ajouter quelques choses ici.

L'extensibilité peut être obtenue de deux manières :

  1. Vertical - Dans ce cas, vous ajoutez du matériel supplémentaire, comme plus de RAM, de processeur ou plus de nœuds. Vous introduisez également un équilibreur de charge, qui aidera à acheminer les appels entrants vers différents serveurs en fonction de l'algorithme de routage utilisé. L'application est maintenant capable de gérer une plus grande charge, car la charge est partagée entre les serveurs.

  2. Horizontal - Dans le cas d'une mise à l'échelle horizontale, vous concevez l'application de manière à ce qu'elle puisse se comporter correctement en cas de trafic parallèle plus important. Vous vérifiez comment vous gérez la mémoire, les sessions, le cache et l'état, etc. Si vous utilisez la session pour maintenir les informations de l'utilisateur, sous une charge importante, un seul serveur pourrait être plus occupé à gérer les serveurs, donc dans ce cas, vous pouvez vérifier la possibilité de passer à l'apatridie. Il peut également répondre aux demandes entrantes du même utilisateur en parallèle au lieu de répondre en série, ce qui se produit si des sessions sont utilisées.

10voto

gap Points 918

Si j'ai bien compris, cela signifie qu'un augmentation linéaire du rendement demandé ne demande qu'un augmentation linéaire des ressources .

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