Je voudrais développer le récent article de Paul intitulé « Vos tests de préproduction sont-ils efficaces ? ». Paul a abordé l'utilisation du processeur et les chemins d'accès au code, mais il existe un autre aspect très important pour de nombreuses applications : l'utilisation du réseau. De nombreuses applications sont testées dans un environnement LAN avec des latences de l'ordre de la milliseconde et une bande passante d'au moins 100 Mbps. Elles sont ensuite déployées pour être utilisées sur un réseau WAN avec des bandes passantes plus faibles et des latences beaucoup plus élevées. Les résultats peuvent être désastreux.
Si les tests effectués dans un environnement LAN permettent de détecter la plupart des bogues liés au réseau, il peut exister des bogues liés à la perte de paquets ou à une segmentation inattendue (TCP ne conserve PAS les limites de vos messages) que vous êtes moins susceptible de voir dans un environnement LAN. Vous êtes également beaucoup moins susceptible de remarquer une conception moins qu'optimale dans un environnement LAN rapide que dans un environnement WAN lent. Il est donc très important de tester toute application réseau dans les pires conditions réseau prévues, à savoir une faible bande passante, des latences élevées et, surtout, des taux de perte de paquets.
Il existe deux façons de procéder.
La première consiste à utiliser l'environnement réel. Placez le serveur (ou le client) sur un hôte du réseau et observez son fonctionnement. Cette méthode présente l'avantage d'utiliser l'infrastructure réelle. L'inconvénient est que vous n'avez aucun contrôle sur l'environnement, ce qui est essentiel lorsque vous essayez de reproduire un problème ou de tester un correctif.
La deuxième consiste à utiliser un simulateur WAN. Il existe des simulateurs matériels et logiciels, commerciaux et open source (gratuits). L'avantage ici est que vous avez un contrôle total sur la latence, les taux de perte de paquets et d'autres paramètres réseau, et vous n'avez pas à impliquer d'autres groupes (c'est-à-dire installer votre logiciel sur le système de quelqu'un d'autre). L'inconvénient est le coût et la courbe d'apprentissage. Même si vous utilisez un logiciel gratuit, vous devez fournir un système (généralement une variante d'Unix) pour le faire fonctionner et apprendre à l'utiliser. Il y a plusieurs années, j'ai rédigé un tutoriel sur Dummynet. À l'époque, c'était l'un des rares simulateurs gratuits disponibles. Aujourd'hui, il en existe beaucoup d'autres, il suffit de taper « simulateur WAN » dans Google.
D'après mon expérience dans le domaine des problèmes de performances et de défaillance des applications, je pense que ce type de test sera largement rentabilisé par la réduction des interruptions de production dues à des bogues et par l'amélioration des performances tant de l'application que de ses utilisateurs.
