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.