Archives du mot-clé Performance

Approche générale des problèmes de performance

Chaque type de problème de performance mérite une démarche adaptée, mais il se dégage néanmoins une approche générale des problèmes de performances qu’il est d’autant plus nécessaire de suivre que le problème est complexe. Voici quelques principes généraux à appliquer pour prévenir, diagnostiquer et résoudre des problèmes de performance.

Des objectifs de niveau de service

Au départ d’une démarche de performances, il doit impérativement il y a avoir des objectifs à atteindre définis en termes mesurables non subjectifs. Par exemple un temps de réponse de transactions clés, un temps d’exécution d’un traitement, une durée pour un plan batch, un délai pour traiter des messages, etc. Cet exercice de formalisation est  nécessaire pour échapper au « tout tout de suite » qui est l’expression naturelle du besoin utilisateur sans contraintes. La définition d’objectifs de niveau de service est avant tout  une analyse du besoin et de la valeur attendue du SI. C’est aussi un premier niveau de  négociation d’un compromis acceptable entre besoin et coûts.

Une implication de toutes les compétences et de tous les acteurs

Pour traiter les trois axes des performances (charge, niveau de service, ressources) il faut faire collaborer efficacement des représentants métier/organisation, des acteurs du  développement de la solution, des experts des technologies et des exploitants qui opèrent la solution au quotidien et en pilote le fonctionnement. Cette collaboration doit s’appuyer sur des processus (ITIL notamment), sur des outils (métrologie, tableaux de bord, outils
d’extrapolation/prévision) et sur des hommes. La collaboration décloisonnée entre organisations est essentielle pour le succès. Les solutions ne sont pas toujours exclusivement dans les technologies ou même le développement. L’analyse des  problèmes peut amener les clients à reconsidérer l’organisation du travail pour un compromis globalement plus efficace.

Un respect des « bonnes pratiques » d’architecture

Ceci permet très en amont de garantir des marges de manœuvre dans la solution pour traiter les problèmes de performances éventuels. Ces bonnes pratiques ne sont hélas pas toujours les plus en vogue, car elles ont tendance à promouvoir des solutions qui ont fait leurs preuves au détriment de solutions prétendument innovantes.

Certains principes d’architecture sont les garants les plus sûrs de certains écueils classiques sur lesquels des générations d’informaticiens se sont déjà cassés les dents. Privilégier la « scalabilité »
des infrastructures, limiter les fonctions centrales uniques surtout dotées d’un stock de données, modulariser les fonctions et les données des systèmes complexes en les découplant au maximum (notamment en termes de ressources), ne pas chercher à réinventer ce que fait très bien une base de données (notamment en termes de cache ou de tri), etc.

Une démarche scientifique

Modèle, mesure et prévisions ! Au cœur de travaux sur la performances d’un SI, il doit il y avoir une démarche scientifique de construction de modèles qui expliquent ce qui est observé et qui doivent permettre de prévoir ce qui se passera plus tard. La confrontation  entre la prévision et la réalité est le moyen le plus efficace d’identifier et de comprendre les anomalies. Par exemple, paralléliser un traitement en deux processus, doit permettre de réduire le temps de traitement par près de deux. Si ce n’est pas le cas, c’est qu’il y a des ressources en contention ou que le traitement n’est pas parallélisé efficacement.

Une démarche pragmatique et hiérarchisée

Modèle ne signifie pas « usine à gaz », cela doit rester un outil pragmatique au service de
la résolution des problèmes et rester au niveau de précision suffisant pour obtenir les résultats attendus. La démarche doit également toujours privilégier les actions simples aux gains très probables, aux actions complexes aux conséquences délicates à
anticiper. De même, la relation étroite avec les clients du service (ou leurs représentants) doit permettre de hiérarchiser les problèmes et de traiter les priorités ; les problèmes
les plus visibles ne sont pas nécessairement les plus prioritaires et les plus dangereux pour l’ensemble de la solution.

Une remise en cause des évidences

Il s’avère quelque fois que les solutions mises en œuvre sont inadaptées pour traiter les besoins exprimés. Il faut savoir remettre en cause les besoins ou les solutions pour échapper à de telles impasses. Par exemple, certains usages peuvent solliciter une
solution applicative d’une manière suffisamment particulière pour justifier des développements spécifiques (par exemple : des factures avec un nombre de lignes très élevé par rapport à la moyenne, des volumes de données très asymétriques selon les
entités clientes, etc). La solution peut également être inadaptée parce qu’elle propose une architecture qui structurellement ne peut pas assurer le service demandé. Il est par exemple vain d’attendre d’une architecture asynchrone de garantir un temps de traitement très court et très constant ou à l’inverse d’attendre d’un service synchrone unitaire de traiter efficacement un grand volume d’événements.

Une valorisation objective des gains et des coûts

Pour les opérations lourdes, il est important de peser les coûts, les bénéfices attendus et  les risques encourus avant de les lancer. Il faut s’assurer en outre de la faisabilité et de la portée des gains au plus tôt. Cet exercice peut aider à prioriser les travaux et à favoriser les actions les plus efficaces. Le risque est important, notamment en présence d’experts chevronnés et soucieux de bien faire, de traiter d’abord ce qui valorise l’expertise au  détriment de ce qui est essentiel.

Un suivi dans le temps

Les problèmes de performance complexes ne se font ni ne se défont en un jour. La maîtrise des performances est un travail qui s’inscrit dans la durée et doit être porté par des processus pérennes des équipes de la DSI. Les problèmes sont souvent décelables par une analyse continue et un suivi dans le temps, avant de devenir des risques véritables pour les utilisateurs. Ce suivi dans le temps, commence en amont du projet, dès la conception, en phase de recette notamment avec des tests de performance, en phase de déploiement en anticipant chaque étape du déploiement, et en fonctionnement récurrent pour surveiller et détecter toute dérive inexpliquée (pour aligner les ressources ou mener les travaux d’amélioration et d’optimisation).

Une communication efficace

Pour mobiliser toutes les compétences et tous les acteurs, pour ne pas démobiliser les clients et leur (re)donner confiance dans la solution, il est indispensable de communiquer efficacement. Cette communication doit à la fois être la plus objective (en s’appuyant sur des mesures incontestables) et la plus transparente possible (en identifiant les problèmes et en rendant public le processus de leur résolution). Elle doit également donner de la visibilité sur le plan d’amélioration pour permettre à chacun de percevoir la démarche et d’aider de son mieux en attendant la résolution cible. Par exemple, des utilisateurs peuvent mieux supporter des mesures transitoires même contraignantes si la cible est bien identifiée.

Modèle des performances d’un SI

Dans le cadre de cette problématique des performances du SI, comme dans d’autres où la complexité du SI pose en soit problème, enioka a la conviction qu’il est nécessaire de modéliser le SI pour mieux le comprendre, raisonner sur les questions ou problèmes rencontrés, et décider d’actions. Modéliser ne veut pas nécessairement établir un modèle
informatisé cathédrale du SI, mais d’abord d’avoir à travers un ou plusieurs modèles, des vues de synthèse d’un objet complexe permettant de l’analyser plus efficacement.

La performance est un domaine où la modélisation est une nécessité pour ne pas travailler au hasard, obtenir des résultats durables et bénéficier de bonnes pratiques.
Plusieurs points de vue de la modélisation sont à prendre en compte :

Modèle d’architecture

Pour étudier les performances d’un système, il faut avant toute chose en connaître l’architecture. On ne répare pas un appareil sans en avoir les plans. L’approche enioka sur ce point s’appuie sur deux grandes fondations : le modèle général des architectures et le modèle des services d’infrastructures (SOI : Service Oriented Infrastructure).

Le modèle général des architectures, structurés autour de quatre points de vue :

  • Modèle fonctionnel des services offerts par la solution, l’objectif de ce point de vue est de cerner de manière synthétique les services (avec les exigences associées)
    que rend l’architecture à ses différents utilisateurs/clients/administrateurs.
  • Modèle logique du fonctionnement : l’objectif de ce point de vue est de détailler le fonctionnement de la solution, et de comprendre comment chaque composant est
    sollicité pour rendre chaque service. C’est ce modèle qui permet d’assurer le lien entre l’usage des services et l’usage des ressources.
  • Modèle physique des ressources affectées aux fonctions : l’objectif de ce point de vue est de décrire précisément les ressources allouées et les éléments clés de
    leur configuration (en termes quantitatifs). C’est ce modèle qui porte les « capacités » des ressources de la solution en termes de puissance et de rapidité de traitement notamment.
  • Modèle des opérations destiné à décrire comment est opéré la solution. Dans certains sujets de performances, la clé réside en partie dans les capacités de
    pilotage données aux opérations et/ou à la délégation de certains travaux à l’ « usine » des opérations en lieu et place des utilisateurs finaux.

Ce modèle d’architecture s’appuie sur le modèle des services d’infrastructure, le modèle « SOI » (Service Oriented Infrastructure) qui définit les différentes couches de service que l’on retrouve de manière standard dans toutes les solutions. Ce modèle sert d’accélérateur dans l’analyse et la conception des architectures SI (et dans des DSI
industrielles, de rationalisation), et dans le contexte précis à normaliser les éléments clés de contrat de service et de moyens de pilotage associés de ces services. Ce modèle s’appuie notamment sur plusieurs couches de services :

  • couches des infrastructures physiques et des ressources : services de stockage, services de calcul, etc.
  • couches middleware : services base de données, serveur d’application, services d’intégration, etc.
  • couches applicatives génériques : services de portail, de reporting, éditique, services d’annuaire, etc.

Modèle d’activité métier

L’objectif est de caractériser l’usage de la solution et finalement de définir des unités d’œuvre qui permettront de tailler la solution. Le modèle le plus primitif se limite le plus souvent à estimer le nombre d’utilisateurs nommés, voire connectés à l’application. Mais au delà de ce modèle trivial, il convient de modéliser, avec une finesse plus ou moins grande selon les objectifs poursuivis :

  • les données en termes de stocks versus flux. Autrement dit les données accumulées au cours du temps (en fonction de la rétention des données) et les taux d’accroissement par jour ou par mois de ces principaux stocks (nombre de clients ou fournisseurs créés, nombre de factures émises, etc).
  • les utilisateurs, non seulement en termes de  nombre mais en les caractérisant par profils principaux (comme acheteurs, chefs d’affaire, comptables) et en évaluant leur niveau d’activité (habituellement on définit des profils normatifs de type utilisateurs lourds/moyen/léger) qui permet d’estimer leur niveau de sollicitation combiné.
  • l’activité de ces profils d’utilisateurs doit en outre être caractérisée par un profil de charge qui permet de mesurer leur usage des différents services de la solution : usage des différentes transactions, des restitutions ou des traitements qui peuvent être déclenchés par les utilisateurs. Cet usage est caractérisé par un nombre d’exécutions par unité de temps.
  • les principaux traitements à effectuer dans le cadre du plan batch, en identifiant les facteurs principaux dimensionnants de ces traitements (nombre de factures  traitées, nombre de ventes, etc).

Modèle de temps de réponse

Un temps de traitement est la composition de différents temps élémentaires. Cette décomposition découle directement du modèle d’architecture. Dans les architectures n tiers modernes, ce « temps » est en fait décomposé en multiples tronçons qui ne sont pas toujours simples à démêler : temps du navigateur, temps réseau WAN, temps  infrastructures de sécurité, temps frontal web, temps serveur d’application et  d’intégration, temps bases de données, temps stockage, etc. Le temps de réponse vu de l’utilisateur est par ailleurs rarement la simple somme des temps de chacun de ces tiers. La vision claire de cette décomposition et des éléments les prépondérants dans le temps global est indispensable pour guider les travaux d’analyse et d’optimisation.

Modèle d’usage des ressources

Le lien entre l’activité métier et l’usage des ressources (et indirectement du temps de  réponse) est un lien complexe. Il peut heureusement sous réserve d’hypothèses à valider  (notamment de plages d’usage) souvent être considéré comme lié « linéairement » à certaines unités d’œuvre qui caractérisent l’activité métier. Néanmoins les différentes contributions de chaque type d’activité à l’usage des ressources restent souvent délicates à discerner entre elles. Par exemple un utilisateur métier moyen actif consomme par période de référence (par exemple 10 minutes) un certain volume de mémoire sur chaque tiers, un certain nombre de secondes CPU sur chaque tiers, un certain nombre d’IO  logiques et physiques et une certaine quantité de bande passante sur le réseau.
Modèle des coûts SI

En filigrane de cette réflexion, il y a toujours de manière implicite la notion de coûts. Coût des ressources (et notamment de leur augmentation, avec les effets de seuil éventuels  associés), coût des développements à réaliser pour corriger/améliorer la solution, coût des équipes en charge de détecter et caractériser les problèmes de performance, coût induit sur les utilisateurs du fait de performances insuffisantes.

Ces différents modèles seront abordés dans des articles plus spécifiques à chacun d’entre eux et à leur usage dans le contexte de problématiques de performances.

Le coût des performances

Après une première introduction à la problématique de la performance des SI, il est nécessaire de se préoccuper du coût des performances. La raison pour laquelle il n’y a pas de vérité absolue en matière de performance est que les trois points de vue essentiels à optimiser (le travail à effectuer, le temps imparti et les ressources utilisées) sont à équilibrer par rapport à des critères objectifs. L’un de ces critères essentiel est le coût. Ce n’est sans doute pas le seul critère (il y en a d’autres, comme la qualité de service, qui peuvent influer sur le comportement des utilisateurs ou des clients de manière indirecte), mais c’est en tout cas le plus objectif.

On distingue deux coûts à équilibrer : le coûts des ressources employées et le coût du temps consommé par le SI.

le coût des ressources employées.

Ce volet du coût est le plus simple à mesurer,  même si le plus souvent il ne l’est pas de manière satisfaisante :

  • ni complètement : le coût complet des ressources n’est pas si trivial à évaluer. Amortissement des investissements matériels, coûts de licence des logiciels, maintenance, opérations, coûts indirects de m2 ou de climatisation de  l’hébergement, etc.
  • ni analytiquement : quelle est la contribution de chaque fonction/usage au  coût des ressources ? La difficulté est à ce niveau double : avoir la capacité de tracer l’usage des ressources par les fonctions/utilisateurs et d’autre part discerner ce qui réellement dimensionne les ressources. Par exemple, un système peut être taillé pour supporter une activité transactionnelle de jour très lourde, et du coup, le coût de l’usage des (ou de certaines) ressources pour les traitements batch est sans influence sur le coût total.

le coût du temps consommé par le SI.

Il s’agit du temps pendant lequel les utilisateurs ou l’entreprise  ou les clients attendent ou travaillent à la place du SI. La valorisation de ce coût est très variable selon l’usage :

  • 10 secondes d’attente d’un utilisateur à chaque transaction représente peu si l’utilisateur utilise la fonction une fois par jour, beaucoup plus si l’utilisateur l’utilise
    des centaines de fois. Si très peu d’utilisateurs sont concernés, le compromis peut rester acceptable, surtout si la solution apporte par ailleurs des bénéfices.
  • En deçà d’un certain seuil (< 300 ms pour une fonction interactive par exemple) un gain de temps n’est plus pertinent, et ce surtout si ce gain correspond à une unité
    de travail de l’utilisateur naturellement associée à une rupture de charge (comme le passage à la facture suivante à traiter).
  • Le coût du temps est toujours délicat à valoriser. C’est une notion élastique qui est  souvent liée à l’organisation du travail ou du modèle d’activité de l’entreprise (selon le modèle d’activité, le temps de traitement SI est ou n’est pas un enjeu de compétitivité). Selon les activités il y a ou non des enjeux associés au temps de réponse ou au temps de traitement.
  • Il y a également quelquefois à considérer le coût d’un défaut de service : certains problèmes de performance (notamment lors de pics d’activité) peuvent créer une
    indisponibilité dont les conséquences financières peuvent être très graves.

Pour équilibrer ces coûts, un troisième coût est à prendre en compte : le coût d’optimisation ou d’alignement de la solution pour réduire l’usage des ressources et/ou réduire le temps de traitement. Ce coût est à considérer comme un investissement pour améliorer l’efficacité. L’optimisation suit souvent le principe de Pareto : 80% des
gains sont relativement faciles à obtenir mais les derniers 20% coûtent très chers à obtenir. Il faut donc toujours mesurer la valeur marginale des gains en comparaison des coûts engagés. Et les gains les plus forts ne sont pas toujours à attendre des investissements les plus lourds.

Cette approche de valorisation des coûts (et des bénéfices) du SI est d’ailleurs une approche d’analyse de la valeur qui va bien au-delà de la performance d’une application. Elle devrait s’appliquer comme dans l’industrie aux fonctions offertes par le SI aux utilisateurs comme moyen d’arbitrage des fonctions à implémenter dans le SI.

Introduction à la performance des systèmes d’information

Cet article a pour objectif de poser quelques définitions de base qui seront reprises dans une suite d’articles à venir sur la gestion des performances des Systèmes d’Information, qui traiteront différents points de vue : pilotage du niveau de service, optimisation du temps de réponse des applications, plan de capacité, déploiement de grands systèmes applicatifs, optimisation des ressources, etc.

La gestion des performances d’un SI est un problème délicat pour deux raisons :
parce que les SI sont de plus en plus complexes d’une part et parce que d’autre part la performance d’un SI ou d’une application est une notion relativement complexe en soit. La performance, à l’image d’autres notions transversales du SI comme l’urbanisme ou la
sécurité, est en effet une notion vaste qui exige différents points de vue pour être correctement traitée.

Beaucoup de SI rencontrent de fait des problèmes de performance qui se traduisent
par des symptômes assez différents comme des écroulements sous des pics de charge (par exemple dans des périodes de solde ou de clôture comptable), des changements d’échelle douloureux voire impossible quand l’activité d’une application ou d’un système s’accroît fortement, des coûts techniques qui dérivent de manière non
proportionnelle avec l’activité, des niveaux de service qui se dégradent et pénalisent les utilisateurs métier, des instabilités techniques récurrentes, etc.

Notre conviction est que certains problèmes de performance sont des problèmes complexes et qu’à ce titre, ils exigent une démarche particulière, et une vision relativement globale et structurée de la problématique. Le développement de la complexité des systèmes d’information ne fait qu’accroître ces cas où de nouvelles approches, ou au moins des approches utilisées dans d’autres domaines que celui de
l’informatique de gestion, deviennent nécessaires.

Quelques exemples de problèmes de performance
complexes

Tous les problèmes de performance ne sont pas complexes, fort heureusement. Quand il s’agit seulement de corriger une anomalie dans un programme, d’optimiser un
traitement ou une requête dans une base de données, d’accroître la puissance d’un serveur, les processus naturels et standards du développement et de l’exploitation des SI sont suffisants pour résoudre les problèmes qui peuvent apparaître et qui sont de fait
plus des incidents que de vrais problèmes au sens ITIL du terme.

Mais il y a certains cas où le problème ne se trouve pas facilement isolé sur un
point d’expertise où la bonne compétence dans la DSI apportera naturellement et facilement une solution. Il y a des cas, où même en « payant » et en ajoutant des
ressources le problème n’est pas résolu pour autant et des cas où, si le problème reste mal posé, il n’a pas de solution.

Voici quelques exemples où une approche plus globale est nécessaire :

  • Améliorer la performance d’une fonction critique complexe : certaines
    fonctionnalités sont difficiles à mettre en œuvre et la tenue des exigences de performances peut être structurellement délicate, par la complexité des traitements, la multiplicité des applications à faire collaborer ou les contraintes de temps pour traiter les volumes. Quelques exemples :

    • Assurer une vision « temps réel » des stocks pour une entreprise
      de distribution multi-canal avec des stocks distribués (fournisseurs, entrepôts, magasins, partenaires logistiques).
    • Assurer les pics de transactions de sites internets pendant des périodes de
      promotion ou des ventes flash, en garantissant la disponibilité
      des stocks.
    • Assurer un calcul d’optimisation logistique ou d’approvisionnement dans un temps limité pour tenir les délais et contraintes des partenaires
      logistiques.
  • Dimensionner une infrastructure pour une cible de déploiement : dans le cadre
    du déploiement d’une solution à l’échelle d’un grand groupe ou d’une montée en charge associée à une évolution forte d’une activité métier, il est souvent nécessaire d’anticiper la capacité de la solution à prendre en charge la montée en charge
    et d’avoir un « coup d’avance ». L’enjeu est de garantir le niveau de service et la capacité à aligner les infrastructures requises, sans « sur-investir » ni mettre en péril
    l’activité métier.
  • Améliorer les performances d’une solution applicative globalement médiocre :
    certaines applications issues de développements lourds et longs sont mises en service sous une forte pression de délais, au détriment d’un temps de qualification et d’optimisation suffisant. En conséquence, les problèmes de performances surgissent au fil du déploiement, avec l’augmentation de l’activité et l’accroissement
    du volume de données d’historique. Traités trop tardivement ces problèmes peuvent bloquer le déploiement, voire créer des incidents opérationnels graves en nuisant à des processus métier critiques pour l’entreprise.
  • Identifier et traiter une contention de ressources qui impacte toutes ou plusieurs
    fonctions : certains problèmes de performances n’ont pas de cause manifeste aisée à cerner. Les contentions peuvent être liées à l’architecture de la solution et à des contentions indirectes ou subtiles entre différentes ressources.
  • Réguler et absorber un pic d’activité : le dimensionnement d’une
    infrastructure pour supporter l’intégralité d’un pic de charge est souvent trop coûteux, surtout s’il n’y a pas d’enjeux incontournables métier à tenir un délai de traitement strict. La mise en place de mécanisme de délestage est pour autant souvent subtile à mettre en place, et en particulier doit favoriser les
    processus ou clients/usagers les plus critiques du service (favoriser les transactions d’achat par rapport aux transactions d’information par exemple). Cette régulation demande une coordination très forte entre vision fonctionnelle (des besoins et
    priorités) et vision technique (des contraintes de ressources).
  • Maîtriser la durée d’un plan batch : garantir qu’un plan batch de nuit ne
    dépassera pas la fenêtre allouée est sans doute l’exemple le plus complexe des problèmes de performances. Beaucoup de facteurs influencent cette performance : la complexité et la structure des traitements, leur capacité ou non à être parallélisés (eux mêmes ou entre eux), les dépendances fonctionnelles qui en
    contraignent l’ordonnancement, les contraintes induites par d’autres applications ou partenaires externes, les grands volumes à traiter, la fluctuation de l’activité au cours du temps, etc.

Quels sont les principaux facteurs de complexité ?

Il est probablement impossible de dresser la liste des facteurs qui peuvent influer sur la complexité des performances d’un SI ou d’une application, mais les suivants sont certainement les principaux :

  • La complexité des solutions et technologies : le premier facteur est clairement celui de la complexité des solutions et technologies. La fragmentation des tiers, l’interdépendance des applications, la complexité des technologies sous-jacentes, la rapidité de leur évolution et de leur obsolescence, la multiplication des progiciels, l’introduction de services en mode SaaS, la virtualisation des ressources… Tous ces éléments rendent la compréhension des problèmes de performance plus délicate. Cette complexité est un fait qui ne changera pas et risque au contraire de continuer à s’accélérer.
  • La multiplication et la dispersion des expertises : cette complexité s’accompagne d’une fragmentation des expertises, tant sur les solutions fonctionnelles, applicatives que techniques. Dans des DSI où ces mêmes experts sont souvent déjà fortement sollicités, il est difficile de les faire travailler efficacement ensemble.
  • Le manque de points de mesures : on pense trop rarement dans ces solutions complexes à les doter de moyens de mesures efficaces (au delà des fondamentaux du socle d’infrastructure de base) permettant d’en comprendre finement le comportement et les dysfonctionnements éventuels.
  • L’absence de repères : cette complexité et ces multiples expertises font perdre les repères sur ce qui est « normal » versus ce qui ne l’est pas. Dans un contexte où le plus souvent, les technologies « masquent » une partie de la complexité, il n’est plus très facile pour un administrateur SAN d’identifier le comportement anormal en IO d’une application, pour un administrateur de base de données d’identifier des requêtes en anomalie ou une mauvaise conception des données, pour un développeur de comprendre les conséquences d’un de ses choix d’architecture logicielle, etc.
  • Les effets d’échelle : le comportement des technologies n’est pas similaire à toutes les échelles, une base de données qui traite un volume de données de quelque Go de données utiles, ne se comporte pas comme une base qui en traite des To. Une application Java pour 50 utilisateurs internes ne se comporte pas comme un site
    internet soumis à des pics d’activité de milliers d’utilisateurs par nature incontrôlables. Pour autant, les technologies, les experts et les développeurs sont souvent les mêmes.
  • La progressivité de la dégradation : les problèmes de performance sont rarement détectés « au bon moment » et apparaissent souvent de manière progressive ou à l’occasion de périodes exceptionnelles où la solution est sollicitée de manière anormale. Cet enlisement progressif dans les sables mouvants de la dégradation des performances endort les acteurs et lorsque le problème se révèle vraiment, il peut être trop tard pour agir…
  • La difficulté d’anticipation et d’extrapolation : il est structurellement difficile de prévoir le comportement d’un système complexe. C’est d’ailleurs un des facteurs de caractérisation d’un système complexe : son comportement ne peut plus se prévoir
    simplement par celui de ses parties.
  • La négociation des solutions : les problèmes de performance réellement complexes s’accordent rarement d’une solution technico/technique « locale » et nécessitent plutôt un compromis entre contraintes technologiques, complexité
    et délai de développement et besoin métier. Cette « négociation » est rarement perçue comme telle par tous les acteurs mais donne souvent au contraire lieu à des affrontements stériles entre études et production, ou DSI et utilisateurs.

Trois points de vue indissociables…

La notion de performance n’a pas de sens dans l’absolu. Il n’est pas pertinent de parler d’une application ou d’un SI performant ou non performant sans mettre en relation trois axes majeurs qui caractérisent vraiment et pleinement la performance. Ces trois axes principaux sont :

  • le travail à effectuer, où en termes informatiques le volume et la complexité des traitements à effectuer sur les informations. Autrement dit : quelle complexité intrinsèque de traitement, indépendamment de l’implémentation qui peut en être faite. Ce travail à effectuer est à mesurer sur plusieurs plans :
    • le volume des données effectivement à traiter, en discernant ce qui doit lu, mis à jour, créé ou supprimé par le traitement,la complexité algorithmique du traitement en termes d’accès aux données, de calculs et de mise à jour de données.
    • le modèle de charge du travail qui définit le profil de la charge : est-il
      étalé ou au contraire astreint à des pics ou périodes particulières ?
  • le temps imparti pour effectuer ce travail : cette dimension temps de
    traitement est déterminante pour caractériser la performance. Ce temps de travail peut selon les cas se mesurer en millisecondes (pour la proposition de mots clés dans un moteur de recherche au fil des saisies), en secondes (pour les temps d’attente d’un utilisateur dans le cadre d’une transaction interactive), en minutes (pour l’attente d’un traitement de restitution) ou en heures (pour des traitements lourds de type batch). La relation au temps est
    éminemment subjective et doit être autant que possible mise en perspective des enjeux opérationnels et du coût associé au temps pour le métier. La mesure du temps pour une solution d’enchère en ligne n’est pas la même que pour un traitement de facturation mensuel.
  • les ressources utilisées pour effectuer ce travail : il s’agit là d’identifier toutes les ressources employées. Les plus évidentes sont les capacités de traitement (secondes CPU) du ou des serveurs assurant le traitement ou le volume des données
    stockées sur disque. Mais il y a d’autres ressources employées qui sont à prendre en compte : comme la mémoire, le nombre et le volume des entrées / sorties (lié en partie à la mémoire), le nombre et le volume d’échanges réseau, etc.

La difficulté de ces trois points de vue est qu’il ne sont pas maîtrisés par les mêmes
acteurs de l’entreprise, ni en termes de causes réelles, ni en termes de conséquences. Et à l’évidence, ils s’opposent. On comprend bien qu’il est plus difficile de traiter vite un travail
plus difficile ou plus volumineux, ou que traiter plus vite est susceptible de consommer plus de ressources. Tant que ces points de vue peuvent être conciliés, il n’y a pas de soucis particuliers : par exemple si les utilisateurs acceptent le « surcoût » de davantage de ressources ou l’impact de temps de traitements allongés. En revanche, si ce n’est pas le cas, il faut arbitrer ces trois points de vue et trouver les meilleurs compromis.

Conclusion

Ce premier article pose les bases de la problématique de la performance des SI. Dans un prochain article, seront abordés le coût de la gestion des performances, les modèles permettant de d’appréhender la performance et la démarche générale proposée par enioka pour gérer la performance des SI.