Déployer son application en production : les bonnes méthodes à connaître

Le 08/07/2015

Dans Développement

Après mon article sur Ngrok, dans lequel je conseillais d’éviter le plus possible de travailler directement sur les serveurs de production, je me suis rendu compte que je n'avais pas vraiment traité le sujet du déploiement sur le BlogDuWebdesign. Réparons au plus vite cette erreur !

"Déployer" une application, késako ?

Déployer une application ou un site web signifie appliquer un procédé permettant d'installer ou mettre à jour le site web sur un environnement donné.

Prenons un exemple pratique qui devrait parler à tout le monde : vous avez à développer un site web, mais le client n'a pas encore son hébergement. Le développement va donc se faire sur votre machine locale sous Windows pour le développement, puis sera transféré par FTP sur un serveur que vous possédez pour pouvoir tester le site "en conditions réelles", et permettre au client de le tester pour ses derniers retours. Enfin, après validation, tout le dossier sera copié-collé sur l’hébergement du client pour la mise en production.

Dans cet exemple, l’environnement de développement est votre machine locale, l’environnement de test votre serveur, et l’environnement de production l’hébergement du client.

Le processus de déploiement est donc le suivant : se connecter via FTP à un serveur dépendant de l’environnement, puis déplacer les fichiers de l’environnement de développement dans le bon dossier. Enfin, vérifier que le site est en ligne sur une adresse dépendant de l’environnement et n'est pas cassé.

Dans notre exemple, la connexion, le transfert et les tests sont faits à la main, nous appellerons donc ce processus de déploiement "déploiement manuelle via FTP".

Ce processus de déploiement est très simple, mais impose pourtant quelques règles qu'il faut respecter : les fichiers ne peuvent aller que dans un sens, de développement vers l’environnement cible. De plus, seuls les fichiers de l’environnement de développement doivent être modifiés. Les éditions à la ninja sur l’environnement de production sont donc une violation de votre processus de déploiement, il faut arrêter ça tout de suite (je parle bien entendu pour toi, là-bas au fond).

Ninja

Les déploiements automatisés

L'automatisation du déploiement est quelque chose de très pratique. D'une part cela fait gagner du temps, et ensuite cela permet d’être sûr que le processus est respecté 100% du temps. De plus, certains déploiements sont bien plus complexes que notre simple petit transfert FTP !

Prenons un exemple plus complexe : notre application web utilise des préprocesseurs pour le CSS et le JS, il faut donc compiler ces ressources avant la mise en production. De plus notre équipe compte plusieurs personnes, le code est versionné avec git à l’exception des images, qui sont envoyées sur un FTP. Enfin, il existe près de 30 écrans différents et notre application est responsive. Il faut bien entendu tester que rien n'est cassé sur toutes les pages lors des déploiements.

Le déploiement serait donc : cloner le dépôt de l'application, copier les images depuis le FTP, compiler les assets, envoyer les fichiers via FTP sur le bon hébergement, tester toutes les pages sur tous les formats nécessaires.

Cette procédure est vraiment longue à la main, mais tout peut-être automatisé. Même pour les tests, certains outils proposant de faire des captures d’écrans de tout un set de pages sur plusieurs formats et navigateurs et comparer les résultats ! Une fois automatisé, le déploiement ne prendra plus que quelques secondes, le gain en productivité est donc énorme.

Deploiements automatises

Comment automatiser les déploiements ?

Il existe de nombreux outils pour ça et ils ne sont vraiment pas durs à trouver, je ne vais donc pas vous faire une liste extensive. Si aucune des trois ressources que je propose ne vous intéresse, n'abandonnez pas, il existe certainement la ressource de vos rêves quelque part sur internet !

Deploybot, la plateforme Web

Deploybot est une plateforme Web qui vous permettra d'automatiser très simplement vos déploiements, pour peu que votre code soit versionnalisé avec git quelque part. L'interface est jolie, et les options nombreuses. Cette solution est sans conteste la plus simple des trois que je propose, mais payante au-delà du premier dépôt.

Deploybot : déploiement automatisé

 

Samson, la plateforme auto-hébergée

Samson est la plateforme de déploiement de Zendesk. Cet outil vous permettra de suivre l'état du déploiement de tous vos sites, et évidemment simplifier l'automatisation des déploiements. Si vous ne voulez pas payer votre service de déploiement mais voulez une interface web quand même, Samson est une bonne solution très souvent mise à jour.

Samson : plateforme de déploiement

 

Capistrano, l'outil en ligne de commande

Capistrano est une solution en ligne de commande pour vos déploiements. Elle est faite en ruby, mais vous pouvez évidemment l'utiliser pour tout type de projets. Très puissante, cette solution vous permettra aussi d'automatiser vos tests, et beaucoup d'autres choses.

Capistrano