Comment l'évolutivité du logiciel est-elle mesurée?

21

On m'a demandé de faire une petite présentation technique sur l'évolutivité d'une application spécifique. L'application est développée en utilisant Java, Spring MVC, Hibernate. J'ai accès au code source de l'application.

Comment puis-je mesurer l'évolutivité du logiciel (à l'aide de sources) et quelles mesures dois-je prendre en compte lors de la mesure de l'évolutivité du logiciel?

artjom
la source

Réponses:

8

Je commencerais par lire un article Wikipédia sur le sujet.

En bref, l'évolutivité est la façon dont les performances du système augmentent avec l'ajout de ressources ou, à l'inverse, la façon dont l'utilisation des ressources augmente avec l'augmentation de la charge . Par exemple, combien d'utilisateurs simultanés votre site peut-il gérer jusqu'à ce que le temps de réponse dépasse 0,3 s? La même question après avoir doublé la RAM / disque / CPU / etc disponible. Vous pouvez probablement utiliser votre connaissance des composants internes de l'application pour décider quels paramètres méritent d'être vérifiés.

Configurez un banc de test avec une machine serveur et une ou plusieurs machines clientes. Utilisez un outil pour limiter la quantité de ressources disponibles pour le serveur (par exemple ulimit) ou exécutez une application interférente sur le serveur. Mesurer la façon dont le serveur traite les demandes des clients. Répétez ce qui précède en augmentant / diminuant progressivement la charge interférente / les ressources disponibles. À la fin, vous obtenez un espace à n dimensions avec des points. Il peut être plus simple de modifier un seul paramètre à la fois tout en fixant tous les autres à une valeur typique (ou quelques valeurs). Dans ce cas, vous pouvez représenter le résultat sous la forme d'un groupe de graphiques 2D avec les performances du serveur (par exemple, le nombre d'utilisateurs / demandes) sur un axe et l'utilisation / la disponibilité des ressources sur l'autre.

Il existe des scénarios plus complexes où votre application utilise plusieurs serveurs pour plusieurs parties de l'application et vous pouvez faire varier leur quantité et leur ratio, mais je suppose que ce n'est pas votre cas. Tout au plus, vous souhaiterez probablement faire varier le nombre de threads / processus, si cela est important.

Si vous mesurez l'ensemble de l'application, vous n'avez généralement pas besoin d'accéder au code source. Cependant, vous pouvez être intéressé par la mesure d'une partie spécifique du code (par exemple uniquement DB ou UI). Ensuite, vous pouvez utiliser le code source pour exposer uniquement ce module pour les mesures et exécuter vos tests. C'est ce qu'on appelle une microbenchmark .

Si vous cherchez des exemples, il y en a beaucoup dans les articles académiques. Recherchez une évaluation des performances auprès de Google Scholar + vos termes préférés.

Ilia K.
la source
1

L'évolutivité n'est pas vraiment une propriété quantifiable pour les applications réelles.

En termes pratiques, l'évolutivité consiste à pouvoir prendre en charge des charges de travail qui augmentent dans diverses dimensions.

Pour commencer, l'application prendra en charge les charges de travail croissantes avec les ressources matérielles existantes. Mais il y a différents points où vous atteignez des limites; par exemple la quantité de mémoire, le nombre de cœurs, les conflits sur les structures de données, le débit de la base de données, etc. Chaque fois que vous atteignez l'une de ces limites, vous devez adopter une approche différente pour prendre en charge des charges de travail croissantes. L'évolutivité est la durée pendant laquelle vous pouvez continuer à augmenter la charge de travail avant d'atteindre une limite insurmontable, ou vous devez entreprendre une refonte majeure.

Stephen C
la source