Vous avez peut-être (ou pas du tout) remarqué cet article dans les liens de la semaine #201. Il y est question du déploiement d’une application en mode « Debug » en production. L’argument est bien simple. Le mode « Release » est synonyme d’application d’optimisations par le compilateur C# sur votre code. Ces optimisations sont, bien sûr, une façon très simple de donner un petit coup de turbo à votre application sans trop d’efforts.
À condition, bien évidemment, que vous pensiez à compiler votre application en mode « Release ». C’est aussi le point de l’article. Ce n’est pas tout. Il y a aussi le mode « debug » à désactiver. Cela se fait par l’entremise de l’attribut debug sur l’élément compilation qui doit être paramétré à « false ».
C’est à cet instant que ça m’a frappé. Si vous déployez votre application autrement qu’en mode debug et compilée en « Release », vous commettez un sérieux faux pas. C’est vraiment l’équivalent de passer « Go » sans réclamer son 200$ côté performance.
J’irais même plus loin. Il n’y a plus vraiment de bonnes excuses pour déployer manuellement une application de nos jours. Le déploiement devrait être une opération automatisée pouvant s’exécuter aussi fréquemment que possible. Les gens qui font des projets cloud n’ont, d’ailleurs, pas vraiment le choix de fonctionner ainsi. Bien souvent, l’accès aux environnements est assez limité.
Sommairement, les options qui s’offrent à nous sont :
- Un script (Powershell ou équivalent) qui invoque MSBuild pour compiler votre application et préparer le déploiement. Avec .NET Core et le nouveau CLI, c’est vraiment un jeu d’enfant.
- Utiliser un outillage comme Cake pour automatiser certaines tâches
- Mettre en place un build server comme CCNet pour connecter votre gestionnaire de source à vos environnements de tests et production
Pour être sincère, bien souvent, la solution est à mi-chemin entre les deux. J’en conviens.
Pour les petites équipes/projets, investir du temps à configurer un serveur CCNet peut être difficile à trouver et à justifier. Je suis le premier à comprendre cela. Cependant, pour travailler dans un environnement où cet effort a été réalisé, le jeu en vaut réellement la chandelle.
Devoir repartir l’automatisation d’un projet demain matin, il est certain que je donnerais un sérieux coup d’oeil à Cake. Toutes les conditions de base de succès sont réunies dans cet outil pour permettre d’atteindre ce but. C’est-à-dire l’automatisation de la compilation et du déploiement d’une application en production.
Par le fait même, un processus de déploiement est simple et automatisé et aussi un synonyme de qualité d’environnement de développement. Dans mon équipe, il y a l’expression que « le build server a rarement tort ». Un déploiement réalisé par une machine tierce permet évidemment de mettre en évidence des pépins qui ne surviendraient pas sur un environnement de développement.
Un processus de déploiement bien rodé est celui où tous les développeurs d’une équipe peuvent déployer à leur guise et au moment qu’ils désirent. Pensez-y! Ne laissez rien au hasard côté déploiements. Automatisez le plus possible. Vous verrez, c’est payant à long terme.