Le Post Infeeny

Les articles des consultants et experts Infeeny

Best practices for building your website for scale with SharePoint 2010

Session animée par Ethan Gur-esh (Lead Program Manager)

Le schéma classique de développement d’un projet est décomposé comme suit : Capacity Planning, Architect for scale, Pilot & test, Deploy, Monitor & validate et on recommence.

Un des points importants quand on parle de montée en charge concerne la mise en cache avec l’output caching que gère nativement SharePoint mais qui est souvent méconnu.

D’autres mécanismes doivent être pris en compte pour les performances comme la compression IIS, le déploiement de contenus et les variations.

Différents mécanismes de cache sont utilisables dans SharePoint : ASP.NET output cache, SharePoint Object Cache et BLOB Cache.

Les 2 premiers sont gérés en RAM sur les frontaux web alors que le dernier est écrit sur le disque dur des frontaux (images, vidéos, sons, CSS, javascript…).

La combinaison de ces 3 mécanismes assurera les meilleures performances.

Les questions suivantes doivent permettrent de choisir quels mécanismes implémenter et quand :
– Tous les combien de temps mon site est-il mis à jour ?
– Est-ce mauvais d’attendre 1 minute pour voir apparaitre la nouvelle version d’un contenu ?

L’activation de l’output cache se fait depuis le site SharePoint via l’option disponible dans « Site Settings » et en sélectionnant le profil adéquat.

Différents critères doivent être pris en compte pour déterminer le meilleur profil :
– Durée de mise en cache
– Doit-on vérifier les modifications afin d’invalider le cache automatiquement
– Le cache dépend il des headers, des paramètres en querystring, des droits de l’utilisateur…

Pour vérifier que le cache fonctionne et que les requêtes dans la base de données diminuent, vous pouvez utiliser les informations de debug dans les pages ainsi que le Developer Dashboard.

Le cache d’objet est utilisé pour stocker les résultats des requêtes « Cross-Lists » et est également utilisé par la Content Query WebPart.

Le cache peut être paramètré pour déterminer combien d’objets sont stockés dans le cache (ce qui a un impact sur la mémoire utilisée).

Pour utiliser le cache d’objet, il faut utiliser Publishing.CrossListQueryCache.GetSiteData plutôt que de faire un SPList.GetItems. C’est notamment important dans le cas d’utilisation des sandbox car il peut arriver que le quota de ressources soit alors dépassé et que les composants ne s’affichent plus (dans le cas de non utilisation du cache).

Si l’on souhaite créer une application cliente qui interroge SharePoint, il ne faut pas utiliser l’API cliente SharePoint car celle-ci n’utilise pas le cache. Il faut plutôt créer un service qui fait un wrapper de l’API cache, et que l’application cliente appelle ce service.

Le BLOB cache stocke les fichier sur le système de fichiers des frontaux ce qui évite les requêtes en base de données (très utile pour les fichiers audio et vidéo).

Les fichiers utilisant le BLOB cache sont gérés avec les headers HTTP pour savoir si le fichier doit être rechargé ou pas par le client. Ces headers sont aussi utilisés par les players média tels que Flash/Silverlight pour gérer le téléchargement progressif lors de la lecture de médias.

L’activation du BLOB cache se fait en éditant le web.config et en ajoutant la ligne <BlobCache location= »… » path= »… » maxSize= »… » />

L’utilisation des CDN (Content Delivery Network) peut être une solution dans certains cas mais il faut garder à l’esprit que les données sont considérées comme externes à SharePoint et que par conséquent, li n’y a pas de gestion de la sécurité sur ces fichiers, pas de planification pour les mettre à jour, les publier, etc…

Les fichiers typiques qui peuvent être mis sur les CDN sont les fichiers qui ne changent pas souvent (CSS, Javascript, images…) et qui ne nécessitent pas de gestion particulière de sécurité.

Pour faciliter l’implémentation des CDN au sein des projets, il existe l’ASP.NET AJAX CDN toolkit.

IIS permet nativement de compresser les données qui sont transférées donc il est fortement recommandé d’activé cette option aussi bien pour les contenus statiques que dynamiques.

L’utilisation du déploiement de contenus ajoute de la latence entre le moment ou un contenu est publié et le moment où il est en ligne donc il faut bien prendre en compte ceci dans la mise en oeuvre de son projet.

Afin de palier à certains soucis qui peuvent se produire avec le déploiement de contenus, l’utilisation de SQL Server 2008 Enterprise avec les snapshots de base de données est recommandé Dans ce cas, les snapshots de base de données vont rendre plus stable et rapide le déploiement des contenus. Il suffit pour l’utiliser de demander à SharePoint d’utiliser les snapshots dans les paramètres du déploiement de contenus.

Si du code est exécuté en parallèle du déploiement de contenu (ex: activation d’une feature), il ne faut pas que le code dépende du fait que le déploiement soit terminé ou non. Il est possible de vérifier les opération en cours grâce à SPImportContent.Context.IsRunning.

Concernant les variations, même si un site n’est pas nécessairement multilingue à son lancement mais qu’il y a de fortes chances qu’il le devienne, il faut activer les variations au plus tôt dans le projet car l’activation plus tard aura un impact sur les performances (à cause de la duplication des contenus).

Il faut aussi faire attention à la propagation automatique ou manuelle des contenus avec les variations.

Pour tout ce qui concerne le pilotage et le test de sites, de nombreuses ressources existent sur Technet donc utilisez les (tel est le message transmis par le speaker).

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :