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.