A l’occasion de ce premier billet de l’équipe MCS SQL BI sur le blog, nous avons choisi d’évoquer un sujet technique récurrent sur les projets SQL Server pour lesquels nous intervenons : les tests de charge.

Nous recommandons régulièrement à nos clients, notamment dans le cas d’applications critiques avec de fortes exigences en termes de performances de prévoir dans le plan projet une phase de tests de montée en charge. Ceci notamment pour les applications de Business Intelligence, mais également dans le cas d’applications métiers transactionnelles.

Problématique

  • Garantir la capacité de montée en charge d’une plateforme décisionnelle pour des applications critiques.
  • Garantir l’alignement de la plateforme avec les exigences de performance et de disponibilité de l’application.
  • Comparer différentes configurations matérielles, logicielles et applicatives dans des conditions de charge adaptées.

Bénéfices

  • Une plateforme décisionnelle SQL Server en adéquation avec les exigences de performance et de montée en charge, et offrant des perspectives d’évolution.
  • Des tests de montée en charge adaptés aux caractéristiques de chaque application.
  • Une réelle valeur ajoutée dans l’analyse des données de tests pour des résultats concrets.

 

Une étape incontournable pour les applications critiques

La validation technique d’une plateforme, notamment à travers la vérification de son dimensionnement est un point important, qui permettra :

  • d’évaluer la capacité de montée en charge de la plateforme, de faire du « Capacity Planning »
  • de s’assurer de la qualité des temps de réponse et de l’expérience utilisateur
  • de garantir la pérennité de l’usage de la plateforme dans le futur
  • de détecter d’éventuels points de contention
  • de démontrer aux décideurs et sponsors du projet la stabilité et la qualité de cette plateforme.

Dans certains cas, les tests de charge peuvent également être utilisés pour comparer différentes configurations matérielles ou applicatives : Scale Up, Scale Out, montée de version logicielle, configuration BI temps réel…

L’intérêt est ici de mesurer concrètement les gains de performances dans des situations de charge cohérentes avec la réalité opérationnelle. 

 

L’intégration de la dimension métier, un gage de cohérence

La réussite et la pertinence d’un test de charge d’une application décisionnelle passent par une intégration de la logique métier, en impliquant des interlocuteurs de référence dans cette phase de préparation :

  • Utilisation de la solution applicative cible (bases SQL Server, cubes décisionnels, rapports, tableaux de bord…)
  • Evaluation, catégorisation et répartition des utilisateurs en fonction des cas d’usages, et des requêtes/analyses type
  • Intégration des règles métiers d’accès aux données (profils utilisateurs, juridictions…)
  • Variation du paramétrage des requêtes et des identités des utilisateurs simulés (maitrise des effets de cache)
  • Intégration des scénarios liés aux chargements de données pendant les périodes d’activités (notamment dans le cas de solutions BI temps réel)

 

Visual Studio associé à SQL Server, une plateforme de tests complète

En complément des solutions de tests unitaires, Visual Studio (2010, 2012) permet de d’exécuter des tests de charge configurés à travers différents scénarios qui regroupent un ensemble de tests à réaliser.

Visual Studio permet d’intégrer de nombreux types de tests à réaliser, soit de manière native, soit à travers l’intégration de scripts.

Voici quelques exemples de types de tests pour reproduire de la charge de travail BI :

  • Reproduire une charge d’analyse Ad hoc sous Excel (type tableau croisé dynamique) vers un cube
  • Simuler une charge T-SQL
  • Exécuter un package SSIS
  • Solliciter un web service SSRS…

Le niveau de charge du test est paramétré à partir d’un pool d’utilisateurs virtuels qui seront gérés par Visual Studio :

  • Nombre constant d’utilisateurs durant toute la phase de tests
  • Augmentation progressive du nombre d’utilisateurs pour atteindre un nombre maximum
  • Augmentation progressive du nombre d’utilisateurs jusqu’à atteindre une valeur seuil sur un compteur prédéfini (idéal pour mesurer les capacités maximales d’une plateforme)

Chaque utilisateur virtuel exécutera de manière continue, en respectant une plage de réflexion définie (le « think time »), le scénario de test qui lui aura été affecté.

 

Configuration d’un scénario de test de charge

 

La fonctionnalité de tests de charge disponible dans Visual Studio est basée sur une architecture composée d’un contrôleur de tests et de N agents (en option), afin de pouvoir simuler si nécessaire un grand nombre d’utilisateurs en simultané, et de pouvoir collecter en parallèle des informations sur les environnements testes (activité CPU, mémoire, disque …).

 

Exemple d’infrastructure de tests et de plateforme cible

 

La mise en œuvre de cette infrastructure est compatible avec des scénarios de type Windows Azure, en utilisant notamment le « Worker » rôle Azure afin d’exécuter ces services de tests de charge.

L’ensemble des informations récupérées durant le test (paramétrage, résultats des exécutions, compteurs de performances…) est enregistré dans une base SQL Server, afin de pouvoir être exploité par la suite durant la phase d’analyse des résultats.

 

Test de charge en cours d’exécution

 

Une vision à 360 degrés des résultats

Une collection de rapports Reporting Services ainsi qu’un add-in Excel sont disponibles pour fournir une vision orientée IT des résultats.

Les outils de Business Intelligence agile de SQL Server (Excel, Power Pivot, Power View…) offrent  de larges possibilités analytiques, en combinant les données récupérées à partir de l’infrastructure de tests de charges Visual Studio  avec d’autres sources d’informations (DMV, X Event, Traces, Logs, paramétrage métier des tests…) afin de tirer le maximum d’enseignements du test.

Il est tout à fait possible de construire des tableaux de bord en juxtaposant des informations techniques telles que l’état des ressources des serveurs, croisées avec des statistiques de tests comme la moyenne d’exécution de chaque cas, ainsi qu’avec les effets de situations opérationnelles telles qu’un rafraîchissement de cube en même temps qu’une charge de requêtes utilisateurs.

 

Tableaux de bord de résultats

 

L’expertise Microsoft Consulting Services au service de ses clients

MCS propose une offre de service packagée pour la mise en œuvre et la réalisation de tests de charge sur des plateformes et solutions SQL Server & MSBI.

Cette méthodologie a été éprouvée à travers de nombreuses réalisations sur des applications critiques chez des clients grands comptes dont voici quelques exemples :

- Grande banque française d'investissement

- Leader mondial de l'industrie cosmétique

- Acteur majeur du transport d'énergie

 

Cette méthodologie peut aussi bien être mise en œuvre dans le cadre d’un projet géré par Microsoft Services, que dans le cadre d’une assistance technique sur certains aspects du projet (architecture, validation…).

Les tests de charge peuvent être réalisés suivant les cas :

- Directement sur l’infrastructure cible ou équivalente si celle-ci est disponible

- Au sein du Microsoft Technology Center (MTC) situé sur le campus d’Issy les Moulineaux, qui mettra à disposition les ressources techniques et logistiques nécessaires

 

Pour plus d’informations sur les offres packagées Microsoft Consulting Services, rendez-vous sur http://www.microsoft.com/france/services

Plus d’informations sur les blogs « SQL Server chez les clients ».

 

Mathias Ekizian, Consultant BI/SQL, Microsoft Consulting Services

J’interviens dans le cadre de projets décisionnels chez des clients, en tant que leader technique, et également en assistance pour une validation d’architecture, de l’audit, ou une optimisation de solutions basées sur la gamme de produits Microsoft Business Intelligence.  Je suis également spécialisé dans les problématiques de gestion de données maîtres (MDM) construites à partir de SQL Server Master Data Services (MDS).