[Setup] Tu reboot ou tu reboot pas?
Quand on fournit une application à déployer, il y a souvent une grave question à laquelle personne n'a pensé :
Après déploiement, l'OS va-t-il avoir besoin de redémarrer?
En fonction des environnements, cette question est plus ou moins importante. Dans un contexte "serveur", elle est critique. Votre application peut être à la base d'un arrêt de production. Il faut donc que vous soyez en mesure d'anticiper cette question et d'avoir une "vraie réponse".
Pourquoi souligner la notion de véritable réponse?
La réponse vient malheureusement d'un constat personnel : dans la majorité des cas, les équipes de développement négligent totalement les "petites coupures de service". Par exemple : les quelques secondes utiles à la mise à jour d'un site dans IIS, durant ce laps de temps, le site n'est pas opérationnel à 100% (même si uniquement 2 ou 3 fichiers ont changés). Une connexion sur le mauvais service, la mauvaise page est toujours possible. Ce qui va inévitablement entrainer une demande d'intervention au service ou au prestataire informatique pour chercher un problème qui n'a existé que durant la mise à jour. Quelle perte de temps!
Comment se préparer et savoir si son déploiement va entrainer un reboot?
La solution la plus évidente est évidemment de reproduire un environnement de test identique à l'environnement de production. Je sais bien que les recettes n'ont plus vraiment la cote, mais si vous avez la chance, d'en faire une, pensez à recette le déploiement et le besoin de reboot de l'OS.
Quand on ne peut pas reproduire un environnement système, il y a cependant quelques pistes de réflexion qui peuvent être utiles. Il existe deux cas pour lesquels un reboot peut être utile:
1. Le déploiement d'une dépendance (Framework . Net, SQL Compact, VSTO… etc. )
Dans la majorité de ces cas, l'installation n'entraine pas de reboot. Celui-ci arrive cependant fréquemment en cas de mise à jour d'une dépendance. Dans le cas du Framework .net le reboot est presque systématique sur les OS type XP / 2003, sur Vista / 2008 et génération supérieure, le reboot est rare et ne concerne presque que les mises à jour de sécurité.
Ex : Dans le cas d'un Framework étant la surcouche d'un autre (ex : .net 3.5 qui dépend de .net 3 qui lui-même dépend de .net 2) il faut souvent s'attendre à une ou plusieurs mises à jour, le reboot est donc presque systématique (hors mis si l'OS était à jour)
2. Un processus doit être arrêté pour prendre, en compte une modification de la configuration.
Ceci est souvent le cas par exemple de l'Explorateur Windows. Si votre application a besoin de relancer un processus ou un service, il est alors possible d'ajouter une classe héritant de "Installer". Cette classe aura pour mission de couper le processus et de le relancer au moment utile. Ceci évitera un reboot superficiel.
Je prévois d'ici peu de poster d'autres articles décrivant quelques travers du déploiement. Si vous avez des besoins précis, n'hésitez pas à me le faire savoir ;)