Avant-propos sur SharePoint

Celles et ceux qui ont été confrontés aux problématiques de maîtrise des performances d’un système informatique savent qu’il s’agit là d’un réel challenge et que ce sujet requiert des compétences avancées dans des domaines multiples, tels que l’analyse, le diagnostic, la métrologie ou encore les stratégies de tests.

Car maîtriser pleinement ces problématiques sur un système dont le contexte fonctionnel est clairement défini est par nature déjà complexe, de par la multiplicité des composants, couches d’abstraction, dépendances et interactions qui entrent en ligne de compte.

Comme nous allons le constater, la richesse fonctionnelle et la diversité des typologies de projets SharePoint ne font que complexifier les éventuelles problématiques de performance.

Les particularités de SharePoint

SharePoint est, selon la terminologie Microsoft, “la plateforme pour l’entreprise et le web”. Cette définition, pour le moins large, révèle son rôle de couteau suisse dans les projets d’entreprise :

Afin de supporter un tel périmètre fonctionnel, et donc des problématiques techniques très variées (Intranet, archivage, Internet…), l’architecture interne d’une plateforme SharePoint est extrêmement modulable. D’un point de vue macroscopique, une architecture SharePoint est constituée par :

  • Des serveurs d’annuaires et authentification, tels Active Directory ou LDAP
  • Des serveurs de base de données SQL Server
  • Des serveurs fournissant des services tiers (SMTP, applications métiers…)
  • Des serveurs de management (Administration, Audit…)
  • Les serveurs de la ferme SharePoint proprement dits, décomposés en deux grands rôles, les serveurs applicatifs et les Serveurs Web

De plus, les plateformes ne sont pas statiques et sont prévues pour évoluer dans la durée, selon deux axes :

  • Horizontalement, c’est à dire en multipliant le nombre de serveurs dévolus à un rôle donné, afin d’apporter au système scalabilité, stabilité et redondance.
  • Verticalement, c’est à dire en spécialisant des serveurs sur des fonctions précises, par exemple en dédiant des serveurs aux fonctions d’indexation ou de recherche.

Les catégories de facteurs

En cas de problème de performance constaté sur un système, et dans le cadre d’une approche de résolution par dichotomie, il sera intéressant de catégoriser les facteurs impliqués dans la performance globale du système en 6 catégories :

  • Matériel
  • Communications réseau
  • Bases de données et stockage
  • Topologie des rôles et services de la ferme
  • Architecture logicielle des applications
  • Poste Client

Ce regroupement est je dois le reconnaitre assez arbitraire, et on pourra le contester, mais par expérience, il a le mérite de refléter les grandes typologies de problèmes rencontrés dans la réalité.

Par ailleurs, cette liste n’est pas exhaustive. Elle sera affinée dans la suite de nos publications sur le sujet, mais permets déjà d’identifier les points clés à contrôler en premier en cas de problèmes et de tentatives de diagnostic.

Les facteurs liés au matériel

Il s’agit ici essentiellement des composants physiques des serveurs :

  • Technologie et vitesse des disques durs
  • Topologie des disques logiques et des contrôleurs RAID
  • Contexte de virtualisation ou non (La virtualisation implique en effet des optimisations différentes de la topologie des disques durs)
  • Nombre et vitesse du / des CPU, Nombre de cœurs
  • Quantité et type de RAM

Les facteurs liés aux communications réseau

Les communications au sein de la ferme et entre les différentes couches de l’architecture logicielle, notamment :

  • Vitesse des cartes réseau sur les serveurs
  • Périphériques réseau, routeurs, firewall hardware, load balancers
  • Logiciels réseau, firewall, proxies et reverse proxies
  • Capacité des liaisons physiques
  • Distance physique entre les serveurs dans le cas d’une ferme géographiquement dispersée  (stretched farm)
  • Communication entre les serveurs d’un même Cluster

Les facteurs liés aux bases de données et au stockage

Le stockage est souvent un point faible dans les architectures SharePoint, par la difficulté à anticiper les capacités nécessaires.

Nous trouverons notamment dans cette catégorie :

  • Le nombre de requêtes et procédures stockées exécutées
  • Le volume de données en jeu et la complexité des requêtes
  • Les plans de maintenance et de sauvegarde
  • La construction des Indexes et Full-Text Search
  • Les liaisons éventuelles avec le SAN / NAS
  • Les règles de gestion du Cluster
  • Les bases de données propres aux services applicatifs (BCS, …)

Les facteurs liés à la topologie des rôles et services de la ferme

Cette catégorie de facteurs est généralement délicate à traiter lorsque les problèmes surviennent, puisqu’ils impliquent directement la conception même de l’architecture de la ferme :

  • La mutualisation de plusieurs rôles sur un même serveur
  • L’utilisation d’une ferme de services dédiés
  • Les problématiques d’infrastructure dans les fermes géographiquement dispersés dans de multiples centres d’hébergement

Les facteurs liés aux architectures logicielles des applications déployées et aux méthodes de développement

Les applications spécifiques sont souvent concernées par des problèmes de performance, souvent par un manque de maîtrise de la plateforme et de ses contraintes par des développeurs débutants :

  • Optimisation des développements spécifiques
  • Gestion de grands volumes de données dans des listes
  • Respect des best practices, libérations d’objets, etc…

Les facteurs liés au poste Client

Souvent négligés, car mal maîtrisés et mal outillés, la part de la performance du poste Client et du navigateur dans la perception globale de l’application est grandissante. Ce phénomène est lié à l’utilisation massive des technologies Ajax, qui déportent une part grandissante des traitements sur le poste Client :

  • Le nombre d’échanges (PostBack complets ou asynchrones en Javascript avec par exemple JQuery)
  • Poids global des pages (contenus et viewstates)
  • Le format et la compression des images
  • La compression des scripts
  • L’optimisation du code Client

Perspectives

Il s’agit ici de donner un bref aperçu des composants d’une plateforme SharePoint à prendre en compte dans les phases de diagnostic, et des principaux facteurs de performances impactant.

Malgré tout, un sujet aussi vaste ne peut être couvert dans un seul article, je vous propose donc de constituer un dossier complet sur ce sujet passionnant.

Par ce dossier, je tenterai d’apporter une démarche globale de gestion des performances, en détaillant chacune des catégories abordées dans cet article. Voici les chapitres de ce dossier spécial sur les performances des plateformes SharePoint :

  • Chapitre 1 : Facteurs de performance des plateformes SharePoint (Cet article)
  • Chapitre 2 : Planification et optimisation de l’infrastructure
  • Chapitre 3 : Diagnostic, métrologie, outillage et optimisation des applications
  • Chapitre 4 : Stratégie de tests et audits préventifs
  • Chapitre 5 : La gestion des performances en production