Cela fait bien longtemps que je souhaite évoquer ici un aspect important du support d'applications Web et qui peut avoir un impact non négligeable dans la résolution rapide de problèmes complexes: l'organisation pour supporter des applications web.
Mon métier d'ingénieur support m'amène quotidiennement à dialoguer avec des interlocuteurs dont le rôle consiste à supporter de grosses applications web en production. Chez ce type de client « grand compte », les personnes en charge de la production sont généralement des ingénieurs de l'équipe infrastructure. Or, la plupart des problématiques soulevées dans le support des applications web sont des problématiques de développement. En effet, il faut voir un serveur web tel qu'IIS comme un environnement d'exécution qui héberge des applications de toute nature. Les applications elles-mêmes utilisent des technologies variées : ASP.NET, ASP, PHP, ISAPI, CGI - pour ne citer que les plus connues. S'il subsiste quelques bugs purement liés à la plateforme, 99% des problématiques soulevées en production sont liées aux applications hébergées. Il est donc capital que l'organisation IT soit adaptée à ce constat et permette de mettre en relation très tôt les développeurs d'applications web et les ingénieurs en charge de la mise en production…
Pratiquement, une bonne organisation passe par la mise en place de plusieurs environnements:
- Un environnement de développement constitué de serveurs IIS qui permet de tester l'application sur la plateforme cible (et pas seulement en utilisant le serveur Web intégré à Visual Studio !). Pendant la phase de développement, les développeurs impliquent l'équipe infrastructure pour que celle-ci puisse comprendre l'architecture et le fonctionnement de l'application. Idéalement, l'équipe de développement intègre à l'application du code permettant de produire des traces applicatives qui pourront être activées en cas de dysfonctionnement de l'application afin de reconstituer l'enchainement des traitements amenant au dysfonctionnement.
- un environnement de test/recette qui peut être géré par l'équipe infrastructure et/ou développement. Cet environnement est le « passage obligé » avant la mise en production d'une application complète ou d'un changement, aussi minime soit-il. L'équipe de développement fournit toutes les indications nécessaires pour la bonne marche de l'application web qui est testée dans des conditions réelles. L'environnement de recette permet de valider les patchs et les mises à jour applicatives… Cet environnement peut aussi être utilisé pour reproduire une problématique observée en production sans perturber cette dernière
- l'environnement de production qui est géré par l'équipe infrastructure. L'équipe infrastructure a une vision claire des applications hébergées ainsi que de tout l'écosystème (firewall, réseau, load balancers …etc.). L'équipe infrastructure doit être capable de déterminer si le fonctionnement est nominal (en utilisant des outils pour mesurer les temps de réponse, analyser les logs IIS ou applicatifs …etc.). En cas de dysfonctionnement, l'équipe infrastructure est capable d'isoler le composant défectueux, de déterminer la nature du problème (problème réseau, fuite mémoire, plantage de l'application) en mettant en place les outils de diagnostics appropriés (ex : DebugDiag). Enfin, l'équipe infrastructure est capable d'impliquer les bons acteurs pour résoudre le problème.
Ce qu'il faut éviter :
- l'équipe de développement réalise une application web en utilisant Visual Studio. A aucun moment l'application est testée dans l'environnement cible
- l'équipe infrastructure installe des serveurs IIS en utilisant le paramétrage par défaut (pour donner quelques exemples : un seul application pool, recyclage par défaut …)
- les applications web sont installées avec pour seul objectif … de fonctionner (sans prendre en compte l'isolation des applications, la sécurisation des données, les besoins en terme de performance, le monitoring…etc.)
Ce qu'il faut favoriser :
- Les échanges entre l'équipe de développement et l'équipe infrastructure très tôt dans le projet
- Le testing des applications avec participation de tous les intervenants
- Un point de contact (« correspondant ») bien identifié dans chaque équipe
Il existe chez Microsoft une population d'ingénieurs PFEs (Premier Field Engineers) qui, dans le cadre du contrat de support Premier, peuvent vous faire bénéficier de leur expérience pour améliorer votre organisation et pour vous aider à diagnostiquer les contentions et les éventuels points faibles de votre infrastructure…
Mes collègues PFEs disposent d'un arsenal de prestations qui va de la formationà la validation d'architecture. En particulier, les PFEs spécialistes d'IIS peuvent délivrer des formations IIS et ils sont habilités à valider votre configuration IIS par un IIS Health Check.
N'hésitez pas à les solliciter en prenant contact avec votre gestionnaire technique de compte !
Emmanuel Boersma