web-dev-qa-db-fra.com

Que signifie "évolutivité"?

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

Il y a un mot qui vient souvent: évolutivité. En fait, j'ai essayé de chercher une explication simple et claire, mais je n'ai rien trouvé.

Pouvez-vous expliquer ce que signifie le terme évolutivité?

61
Patto

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 1 000 enregistrements), un programme hautement évolutif fonctionnerait bien sur un petit ensemble et sur un grand ensemble (disons des millions ou des milliards d'enregistrements). ).

Comme dit gap, les besoins en ressources augmenteraient de manière linéaire. Recherchez la notation Big-O pour plus de détails sur la façon dont les programmes peuvent nécessiter plus de calcul à mesure que la saisie de données est volumineuse. 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).

53
Furbeenator

L'évolutivité est le trait par rapport auquel une solution logicielle peut gérer des charges de travail accrues. Cela peut être des ensembles de données plus volumineux, des taux de demande plus élevés, une combinaison de taille et de vitesse, etc.

Quand on parle d’évolutivité des systèmes, on distingue généralement entre

  • "Scale up" - la capacité 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 qui peut évoluer peut généralement devenir une charge plus rentable. Une chose importante à savoir ici est loi d'Amdahl qui stipule que la capacité de montée en puissance est limitée par la partie séquentielle du logiciel

27
Arnon Rotem-Gal-Oz

Déjà d'excellentes réponses ici, je voulais juste ajouter quelques choses ici.

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

  1. Vertical - De cette manière, vous ajoutez plus de matériel, comme plus de RAM, de processeur ou plus de nœuds. Vous introduisez également l'équilibreur de charge, qui vous aidera à acheminer les appels entrants vers différents serveurs en fonction de l'algorithme de routage utilisé. L'application est maintenant en mesure de gérer davantage de charge, car celle-ci est partagée entre les serveurs.

  2. Horizontal - En mise à l'échelle horizontale, vous concevez/concevez l'application de manière à ce qu'elle puisse bien se comporter en cas de trafic plus parallèle. Vous vérifiez comment vous gérez la mémoire, les sessions, le cache et l'état, etc. Si vous utilisez la session pour conserver les informations utilisateur, un serveur unique peut être plus occupé à gérer les serveurs. Dans ce cas, vous pouvez vérifier la possibilité de aller apatride. Il peut également répondre aux demandes entrantes du même utilisateur en parallèle au lieu des réponses en série, ce qui se produit si des sessions sont en cours d'utilisation.

11
Satinder Sidhu

D'après ce que je comprends, cela signifie qu'un augmentation linéaire de la production demandée n'exige qu'une augmentation linéaire des ressources.

9
gap