---
title: "Testez vos API en charge !"
date: 2019-02-28
categories: 
  - "plm"
coverImage: "trafficJam.jpg"
---

C'est une observation que je retrouve souvent dans les projets PLM sur lesquels j'interviens : "ça marchait bien sur votre poste, mais maintenant qu'on a lancé 500 users on a des problèmes de performance."

La plupart du temps, il faut le reconnaître, les consultants croisent les doigts et se rapportent aux references clients.

> ça tourne chez le client X et ils sont 5 fois plus nombreux, donc il n'y a pas de souci !
> 
> consultant anonyme

En voulant comparer différentes infrastructures la semaine dernière j'ai utilisé l'outil [LoadTest](https://github.com/alexfernandez/loadtest). C'est un module en javascript (qui tourne donc sur [node.js](https://nodejs.org/en/)) et qui permet de lancer un nombre de requêtes avec la concurrence souhaitée.

Pour réaliser mon test j'utilise Aras puisque l'outil [est disponible librement en téléchargement](https://www.aras.com/en/support/download-innovator). Si d'autres editeurs veulent faire un test comparable je veux bien collaborer :) .

Pour ne pas laisser trop de place au jugement, et surtout parce que je n'ai pas le temps de faire un test de charge plus propre, voilà les caractéristiques vagues du test:

Server Aras sur une instance windows dédiée (mais avec plusieurs serveurs Aras) sur cloud OVH (le serveur est à Roubaix je pense, et mes requêtes sont envoyées de Lyon). _Le serveur a un processeurs Intel 3ghz 8 coeurs et il y a 32 go de RAM._

<figure>

![](images/loadtest-Aras-10-1000.png)

<figcaption>

1000 requètes executées avec 10 clients concurrents

</figcaption>

</figure>

<figure>

![](images/loadtest-Aras-100-1000.png)

<figcaption>

1000 requètes executées avec 100 clients concurrents

</figcaption>

</figure>

<figure>

![](images/loadtest-Aras-500-1000.png)

<figcaption>

1000 requètes executées avec 500 clients concurrents

</figcaption>

</figure>

<script src="//cdn.jsdelivr.net/github-cards/latest/widget.js"></script>

Alors il faut prendre ces résultats avec des pincettes, on ne sait pas ce qui tourne sur le server. Les résultats peuvent varier d'une execution à une autre. Mais c'est un bon indicateur à utiliser en phase projet (potentiellement intégré à de l'intégration continue) afin de vite connaitre les performances auxquelles il faut s'attendre mais aussi pour détecter un écart important entre deux livraisons de fonctionnalités. Cela va permettre aussi de comparer des solutions et de séparer les performances du server et du client (pc de l'utilisateur).

## Conclusion

Les performances d'utilisations sont un point critique lorsque l'on fait des déploiements de logiciels pour un nombre important d'utilisateurs. Il est important de pouvoir prévenir tout problème lors du déploiement d'un solution à grande échelle. Ici j'ai utilisé une solution parmi plein d'autres qui vous permettront de tester votre serveur.
