Nous revoilà dans une nouvelle semaine avec de nouveaux défis. Et comme à l’accoutumée, un nouvel article sur la table. Cette fois-ci nous parlerons du Zero Downtime Deployment avec notre framework préféré Laravel. Vous ne savez pas ce qu’est le Zero Downtime Deployment ? Ne vous inquiétez pas, vous verrez que c’est un principe assez simple à comprendre. Suivez le guide.
1- Qu’est-ce que le Zero Downtime Deployment ?
Le Zero Downtime Deployment (ZDD), est un pattern qui permet de déployer la nouvelle version d’un sytème sans interrompre le bon fonctionnement du sytème qui est déjà présent. Vous voyez c’est assez simple à comprendre comme principe. Toutefois, sa mise en place n’est pas aussi aisée que cela. Il existe plusieurs façons de faire du ZDD. Ne vous inquiétez pas, comme d’habitude il y a une solution pour ne pas se lancer dans des configurations à ne pas en finir. Nous verrons donc comment faire du Zero Downtime Deployment avec Laravel.
2- Le Zero Downtime Deployment avec Laravel
Pour faire du Zero Downtime Deployment, nous avons à notre disposition quelques packages à savoir:
✅ Envoyer, qui est un produit officiel de Laravel, qui est un service payant
✅ Laravel deployer de Loris Leiva
Pour cet article nous verrons comment faire du ZDD avec le package Laravel deployer.
a- Installation du package
Pour installer le package, nous utiliserons composer:
b- Configuration du package
Pour la configuration du package, nous n’avons qu’à exécuter l’une de ces deux commandes:
Cette commande générera un fichier deploy.php. Toute la configuration du package pour le déploiement se fera dans ce fichier. Nous essayerons de décortiquer ce fichier en voyant les configurations les plus importantes.
b-1- Tâche à exécuter lors du déploiement
- start : Là, il s’agit des tâches qu’il faut exécuter avant que le déploiement ne commence
- build: À ce niveau, on pourra exécuter des tâches comme npm install ou npm buil prod
- ready: À ce niveau le déploiement a été fait, mais n’est pas encore disponible. On pourra ainsi exécuter des commandes par exemple pour la migration en base de données ou pour effacer les configurations qui avaient été persistées.
- done: Le déploiement est fini et disponible en live ;
- success: On indique là des tâches qui pourront s’exécuter si le déploiement réussit
- fail: On indique là des tâches qui pourront s’exécuter si le déploiement échoue
- rollback: On pourra exécuter à ce niveau des tâches lorsqu’on désir effectuer un retour vers une version précédente.
Pour avoir une liste complète des tâches que le package offre par défaut cliquez ici.
b-2- Les options de déploiement
- application: À ce niveau il faut indiquer le nom de l’application
- repository: Vous devez indiquer là l’url de votre dépôt Github ou Gitlab
- bin/php: Ici on indique la CLI PHP qui doit être utilisée si vous en avez plusieurs sur votre serveur.
- bin/composer: Là on indique quelle CLI composer il faut utiliser
- composer_options: Là on indique les options ou paramètres à passer à la commande composer
- writable_mode : Là on indique quel outil de ligne de commande sera utilisé pour les permissions fichier/dossier
- keep_realeases: On indique combien de realeases il faut garder. Cette configuration est utile si vous ne voulez pas garder beaucoup de version de votre application sur votre serveur.
Pour avoir une liste complète des options disponible cliquez ici.
b-3- Configuration des informations d’hôte où se fera le déploiement
Cette partie du fichier de configuration vient avec des informations par défaut ou les informations que vous aviez fournies lors de la création du fichier deploy.php. Il faudra indiquer les informations adéquates pour ne pas avoir de problème lors du déploiement.
Pour plus d’information de configuration de l’hôte cliquez ici.
c- Le déploiement de votre application.
Après avoir bien configuré le fichier de configuration du package, tout ce que vous avez à faire c’est d’exécuter cette commande:
Et voilà!! C’est tout. Il n’y a que cette commande à exécuter pour déployer votre application.
Nous espérons que vous avez appris une nouvelle chose avec cet article. Si vous avez des questions posez-les en commentaire. N’oubliez pas de vous abonner à notre newsletter. À la semaine prochaine pour un nouvel article et bonne semaine de travail.
2 commentaires
Good job
Merci Melissa!