Déploiement d’applications sur Heroku
Objectifs de formation
Une fois cette unité terminée, vous pourrez :
- Décrire les différentes options de déploiement avec Heroku
- Expliquer les avantages et les inconvénients de chaque option
Heroku offre plusieurs options de déploiement. La méthode que vous choisissez dépend de votre processus de déploiement, de vos exigences et de vos applications spécifiques.
Déploiement avec Git
Cette méthode est le mode de déploiement le plus simple. Ajoutez votre application Heroku en tant qu’application distante à un référentiel Git existant, puis utilisez git push
pour envoyer votre code à Heroku. Heroku crée automatiquement votre application et une version.
Déploiement à l’aide de l’intégration avec GitHub
L’intégration avec GitHub vous permet de déployer les modifications d’un référentiel GitHub directement sur Heroku. Cette intégration offre plus de fonctionnalités que toute autre option de déploiement. Après avoir lié votre référentiel, les modifications apportées à celui-ci se déploient automatiquement dans l’application. Vous pouvez configurer des déploiements automatiques pour une branche spécifique ou déclencher manuellement des déploiements à partir de GitHub. Si vous utilisez une intégration continue (CI), comme Heroku CI, vous pouvez empêcher les déploiements sur Heroku si les tests échouent.
L’intégration avec GitHub est également utile pour automatiser les déploiements sur les pipelines. Par exemple, lorsque vous fusionnez une modification dans la branche main, vous pouvez la déployer automatiquement à l’étape de préproduction pour la tester.
Déploiement avec Heroku Review Apps
Review Apps vous permet de déployer n’importe quel pull request (PR) GitHub en tant qu’application isolée et jetable. Vous pouvez présenter et tester le PR sans écraser votre application de production, ce qui vous fait gagner beaucoup de temps pour les tests. La fermeture du PR détruit l’application de contrôle.
Déploiement avec le bouton « Déployer vers Heroku »
Le bouton Déployer vers Heroku vous permet de déployer une application sur Heroku à partir d’un navigateur Web en quelques clics. Vous pouvez paramétrer chaque bouton avec des réglages différents, tels que transmettre des variables d’environnement personnalisées à Heroku, utiliser une branche Git spécifique ou fournir des clés OAuth. Les applications déployées avec ce bouton ne se mettent pas à jour automatiquement lorsque vous ajoutez de nouveaux commits au référentiel GitHub.
Déploiement avec Docker
Docker regroupe vos applications dans des environnements autonomes. Cette isolation garantit qu’elles se comportent de la même manière en développement et en production. Docker offre plus de contrôle sur les langages, les cadres et les bibliothèques utilisés pour exécuter votre application. Pour déployer un conteneur sur Heroku, transférez une image vers le registre de conteneurs Heroku ou déclarez-la dans le fichier heroku.yml
de votre application pour la créer automatiquement.
Déploiement avec Hashicorp Terraform
Hashicorp Terraform est un outil d’infrastructure en tant que code qui aide à gérer une infrastructure complexe. Vous pouvez définir vos applications avec HCL, un langage de configuration déclaratif, pour automatiser le processus de déploiement et de gestion des applications Heroku. Terraform v0.12+ vous permet de stocker l’état distant. Vous pouvez donc exécuter Terraform sur un dyno Heroku et stocker l’état Terraform dans une base de données Heroku Postgres.
Comparaison des options de déploiement
Utilisez le tableau ci-dessous pour choisir la meilleure option de déploiement pour votre cas d’utilisation et votre workflow.
Méthode de déploiement | Exigences | Mieux adaptée pour | Avantages | Inconvénients |
---|---|---|---|---|
Git | - Accès complet au référentiel Git et à l’application Heroku pour envoyer manuellement le code en production | - Projets avec de petites équipes de confiance | - Simple à ajouter à n’importe quel workflow fondé sur Git - Prend en charge les sous-modules Git | - Nécessite le déploiement manuel du code avec git push |
Intégration avec GitHub | - Accès administrateur à un référentiel GitHub | - Déploiements automatisés | - Déploie automatiquement les applications et les maintient à jour - S’intègre à Heroku Pipelines, Review Apps et Heroku CI afin de garantir un workflow continu | - Pas de prise en charge des sous-modules Git |
Heroku Review Apps | - Projets dans GitHub avec des applications déployées dans plusieurs environnements | - Option pour créer et mettre à jour automatiquement Review Apps pour chaque PR - Prend en charge les images Docker - Prend en charge les espaces privés Heroku pour tester les modifications dans un environnement isolé | - Coûts supplémentaires liés aux ressources utilisées dans Review Apps ; reportez-vous aux conseils pour optimiser les coûts sur le Dev Center | |
Bouton « Déployer vers Heroku » | - Un référentiel GitHub - Un fichier app.json valide dans le répertoire racine du projet | - Applications fournies à vos utilisateurs ou clients, telles que des projets open source - Intégration de nouveaux employés | - Idéal pour partager des projets de modèles - Facile à ajouter au fichier README ou à la page Web d’un projet - Fournit un modèle avec des paramètres, des variables d’environnement et des valeurs par défaut préconfigurés | - Pas de prise en charge des sous-modules Git - Pas de mises à jour automatiques lorsque le référentiel change ; vous devez utiliser une autre méthode de déploiement pour les déploiements ultérieurs sur la même application |
Docker | - Une image Docker | - Applications avec des piles personnalisées | - Plus de contrôle sur la pile de votre application - Permet de générer automatiquement des images ou de transférer une image existante vers le registre de conteneurs - Cohérence entre les environnements | - Vous devez maintenir votre propre pile - Pas de prise en charge des promotions de pipeline |
Hashicorp Terraform | - Terraform | - Applications avec des composants d’infrastructure complexes | - Automatise les déploiements d’applications Heroku - Vous permet de déployer des applications Heroku en tant que code - Simplifie la gestion de grands déploiements complexes - Peut configurer des applications, des espaces privés ou des ressources d’autres fournisseurs dans une architecture multi-fournisseur reproductible | Le support Heroku ne peut pas fournir d’aide pour ces déploiements plus complexes |
Récapitulatif
Vous connaissez maintenant les différentes options de déploiement. Continuez ce module pour en savoir plus sur certaines infrastructures utilisées pour exécuter des applications sur Heroku.
Ressources
- Site de développement Heroku Dev Center : Déploiement avec Git
- Site de développement Heroku Dev Center : Intégration avec GitHub
- Site de développement Heroku Dev Center : Review Apps (applications de contrôle)
- Site de développement Heroku Dev Center : Création d’un bouton « Déployer sur Heroku »
- Site de développement Heroku Dev Center : Registre de conteneurs et runtime (déploiements Docker)
- Site de développement Heroku Dev Center : Utilisation de Terraform avec Heroku