Performance...


Qu'est-ce que la performance ?

Dans les systèmes informatiques, la performance est en général mesurée de deux façons: le temps réponse et le débit. Le temps réponse mesure le temps qu'un utilisateur doit attendre avant d'obtenir une réponse suite à une opération qu'il a demandée au système. Quant au débit, il mesure le nombre d'opérations qu'un système informatique peut effectuer par unité de temps. Le temps réponse mesure donc la performance perçue par l'utilisateur alors que le débit rend compte du nombre d'utilisateurs concurrents qu'un système est en mesure de supporter.

La performance est une mesure relative. Un temps réponse et un débit peuvent être jugés adéquats dans un contexte donné alors que les mêmes valeurs peuvent être inacceptables dans un contexte différent.

Le défi consiste donc à obtenir le niveau de performance adéquat selon le contexte dans lequel un système évolue.

Un système performant par construction

Les systèmes informatiques sur lesquels nous intervenons sont en général constitués de 3 parties (appelées aussi couches ou "tiers" en anglais):

  • la couche d'interface utilisateur, qui correspond aux écrans et aux pages web avec lesquels l'utilisateur interagit. Dans le cas d'applications web, cette couche inclut également le serveur web;
  • la couche de logique d'affaires, qui contient les programmes qui effectuent les traitements requis;
  • la couche des données, qui contient la base de données et les requêtes d'accès aux données.

Idéalement, lorsque le système est en construction, l'aspect de la performance est pris en compte dans chacun de ces trois niveaux. Ainsi, on s'assurera que la manière dont l'interface utilisateur est organisée favorise une performance adéquate. De la même manière, on s'assurera également que l'architecture de la logique d'affaires ne soit pas un handicap pour la performance, en portant une attention particulière aux aux accès concurrents aux données ainsi qu'aux aspects transactionnels qu'ils impliquent. Enfin, nous porterons une attention particulière à l'architecture des données et aux requêtes, en s'assurant, entre autres, que les bons index sont présents et utilisés lors des traitements. Bien que les actions que nous venons de décrire sont réalisées dans le cadre des activités d'architecture du système, il est tout aussi important de se préoccuper de performance lors des activités de programmation.

Il y a toutefois un piège à éviter: l'optimisation prématurée. En effet, optimiser un système prématurément a souvent comme effet de réaliser des travaux inutiles. C'est là que l'expérience et le savoir-faire de l'équipe de développement prend une importance capitale, car elle saura les reconnaitre les optimisations nécessaires.

Améliorer la performance d'un système existant

Si le système est déjà construit et que la performance n'est pas satisfaisante, il faut commencer par s'interroger sur la raison de cette non-performance. Le nombre d'usagers a-t-il augmenté ? Ou est-ce la quantité de données ? Dans ces deux cas, il s'agit d'un problème d'extensibilité du système.

Une première solution consiste à rehausser le matériel utilisé: augmenter la mémoire, changer les disques, changer les processeurs et augmenter leur nombre ou encore, changer carrément de serveur, avec, comme implications possibles, des modifications aux coûts des licences des logiciels ainsi qu'un impact sur les coûts d'exploitation récurrents. Malheureusement, ce rehaussement n'est pas une garantie d'amélioration des performances et peut se traduire par des dépenses totalement inutiles! En effet, lorsque des problèmes d'extensibilité se présentent, il arrive souvent que la dégradation des performances augmente exponentiellement par rapport à la cause (augmentation des données ou des usagers). Le rehaussement effectué devra alors être suivi, de plus en plus fréquemment, par de nouveaux rehaussements et on se butera assez rapidement aux limites techniques et financières. Manifestement, la solution est ailleurs.

En effet, avant de rehausser l'infrastructure technologique, il faut s'assurer que l'utilisation de cette infrastructure par le système est optimale. Pour ce faire, on recherchera en premier les "fruits faciles à cueillir" (traduction littérale de "low hanging fruit"). Pour cela, il est avisé, en général, de commencer par examiner la couche des données, avant de s'attaquer aux couches de logique d'affaires et, en dernier lieu, à la couche d'interface utilisateur.

Mesurer et prévoir la performance

La performance est une grandeur mesurable et prévisible. La mesure de la performance peut être réalisée sur un système en cours de fonctionnement. Elle consiste principalement à recueillir des compteurs de performance disponibles dans les systèmes d'exploitation. Ces informations doivent ensuite être interprétées pour en faire ressortir un diagnostic cohérent et signifiant.

La prévision de la performance, quant à elle, nécessite un certain effort. Les activités qui lui sont liées sont donc réservées aux systèmes qui sont considérés critiques par leur propriétaire. La prévision de performance peut se réaliser de deux manières:

  • par calcul: on utilise dans ce cas des méthodes de calcul qui permettent d'estimer le temps-réponse et le débit à partir d'informations de volumétrie du système et de performances connues. Ces calculs utilisent la théorie des files d'attentes.
  • par simulation: on utilise des simulateurs de charge qui simulent l'accès simultané au système de plusieurs utilisateurs et recueillent des informations de performance.

Comment pourrions-nous vous aider ?

Au fil des années, nous avons développé une solide expertise en performance des systèmes informatiques, et en particulier des systèmes basés sur une interaction entre serveurs web, serveurs applicatifs et serveurs de données SQL. Nous pouvons mettre cette expertise à votre service de deux manières:

  • durant la conception et la réalisation des systèmes, sous forme d'un accompagnement professionnel pour toute la durée du projet ou sous la forme d'une révision des biens livrables d'architecture et de réalisation;
  • lorsque des problèmes de performance sont anticipés ou avérés, afin de réaliser un diagnostic et proposer un plan d'action.

Si vous souhaitez en avoir le coeur net à propos de la performance, contactez-nous! Nous vous présenterons notre méthode de travail de manière plus détaillée et nous verrons avec vous comment l'appliquer dans votre contexte particulier.