Table des matières
Ouvrir table des matières
Déployer vos applications web avec Heroku
Connaissez-vous l’une des plus grandes satisfactions d’un développeur web ? Voir son travail en ligne et utilisé par des utilisateurs. Car coder une application ou un site web pour au final qu’elle ne soit pas utilisée c’est juste blasant et peu gratifiant.
Mais comment mettre en ligne son travail très facilement et rapidement sans se soucier du déploiement et de l’infrastructure qui va héberger votre code ?
Suivez le guide, je vous montre une solution que j’utilise quasiment tous les jours depuis 1 an et demi.
Les différentes façons de déployer une application web
Techniquement, il est possible d’utiliser votre PC, celui que vous utilisez pour coder, pour rendre que votre application web soit en ligne. Ce serait en fait le plus simple en termes de déploiement.
Vous n’avez rien à faire. Seulement, votre PC n’est du tout dédié à ça ni même votre connexion Internet à cela sans parler de toutes les mesures de sécurité que vous devriez mettre en place pour ne pas courir à la catastrophe.
Non pour cela, vous avez besoin d’une infrastructure réseau très sécurisée et une haute disponibilité Internet pour pouvoir l’héberger dans de bonnes conditions.
Il existe plusieurs façons d’héberger son travail, je vais vous en expliquer les 2 plus répandus.
Les hébergements mutualisés
Le plus répandu est bien entendu les hébergements dits mutualisés. C’est-à-dire que vous partagez avec d’autres applications les mêmes ressources sur le serveur. Ces hébergements sont en général du PHP/MySQL car même si ce dernier est un peu en perte de vitesse, les sites Internet sont en PHP et pour 20% d’entre eux sous WordPress.
Ce blog est actuellement sur un hébergement mutualisé chez Infomaniak ce qui me suffit amplement compte tenu de ce que je fais avec mon blog et du trafic que j’ai sur celui-ci.
C’est d’ailleurs le type d’hébergement le plus économique et le plus simple à utiliser quand on a une application web ou un site Internet en PHP/MySQL. Malheureusement, le déploiement est assez archaïque et limité étant donné que vous n’avez pas la main sur le serveur.
En général, vous avez un accès à votre base de données via un PHPMyAdmin + un accès FTP à votre hébergement. Votre déploiement est donc manuel : vous utilisez un client FTP pour uploader vos fichiers qui composent votre site Internet ou votre application web et vous utilisez le PHPMyAdmin pour monter et manager votre base de données.
Même s’il est possible de déployer plus simplement et de manière semi-automatique en FTP grâce à votre IDE par exemple (dans la suite d’IDE de Jetbrain, il est possible de déployer des fichiers d’un projet à partir d’une branche ou un commit GIt sur votre hébergement par FTP), c’est ce qui est en local sur votre machine que vous déployez.
Vous l’aurez donc compris, vous serez limité au niveau des ressources du serveur et pour vos déploiements même si c’est juste un upload simple par FTP, si vous faites bien entendu du PHP.
Les serveurs dédiés
L’autre possibilité est d’avoir un serveur dédié et c’est déjà nettement mieux pour une application web.
Il y a 2 possibilités dans les serveurs dédiés : managé ou non managé 🔗. Dans les 2 cas, vous aurez des ressources serveur complètement dédié et vous aurez le contrôle total de votre serveur en mode non managé. Cela implique de savoir ce que l’on fait et de configurer totalement votre serveur.
Vous allez aussi devoir installer toute la stack nécessaire pour que votre application puisse tourner. Installation des langages et outils, configuration du firewall pour ouvrir les ports nécessaires pour faire tourner votre application, faire des mises à jour, mettre en place un système de backup, etc…
Dans notre cas par exemple où je travaille, nous utilisons des serveurs dédiés non managés chez OVH car nos clients sont souvent situés autour de Roubaix et la métropole lilloise et qu’ils ont la culture de vouloir héberger leur informatique dans un cloud France (et qui plus est locale).
Vous avez alors une plus grande liberté pour votre déploiement. Vous pouvez toujours utiliser le bon vieux FTP (à condition d’avoir installé et configurer un FTP sur votre serveur) ou faire un déploiement un peu plus automatisé.
Vous pouvez par exemple très bien effectuer un déploiement de votre application avec installation depuis votre dépôt GitHub si vous créez un nouveau tag de version sur votre branche master par exemple.
Même si le déploiement peut être automatisé, on peut y trouver 3 inconvénients quand on choisit un serveur :
- ça prend du temps à configurer la première fois
- ça prend du temps à maintenir l’architecture du serveur que vous avez mis en place
- vous devez avoir des connaissances techniques pour la configuration d’un serveur.
PaaS, quatre lettres qui peuvent changer votre façon d’héberger des applications web
Pour résumer, l’hébergement mutualisé c’est très bien pour un bête site vitrine ou un blog modeste comme le mien ou encore pour vos projets personnels. Il est donc recommandé d’utiliser un serveur dédié managé ou non pour héberger et déployer les applications web que vous avez réalisé surtout si cela doit être en production et pour l’un de vos clients.
Mais est-ce que vous vous sentez le courage d’assumer l’installation, le paramétrage et la maintenance de vos serveurs ? Avez-vous les connaissances techniques ? L’envie et le temps ?
Car après tout vous êtes développeur, pas un Administrateur Réseau et Système. Les PaaS sont peut-être la solution qui vont balayer toutes les questions précédentes. Mais avant tout, il faut savoir ce qu’est un PaaS.
C’est l’abréviation de « Platform as a Service » ou encore en français « Plate-forme en tant que service ». Bon, ça peut ne pas vous aider à comprendre réellement ce que c’est alors je vais vous expliquer de manière simple.
On ne parle plus d’hébergement ou de serveur, on parle de payer un service pour utiliser des logiciels et des outils en ligne bien souvent à destination des développeurs. Alors vous vous dîtes sûrement : « D’accord, c’est cool, mais en quoi cela peut aider pour héberger et déployer mon application ? ».
Les PaaS vous permettent de faire abstraction de toute la partie serveur et logiciel qui le compose.
C’est le fournisseur du PaaS qui prend tout cela à sa charge. Vous avez juste besoin de lui communiquer ce dont vous avez besoin pour faire tourner votre application web et il s’occupe de faire le job pour vous.
Magique quoi !
Heroku, un PaaS parmi tant d’autres
Si je ne dis pas de bêtise, c’est l’un des premiers à faire du PaaS pour les applications web. Il y a maintenant beaucoup de fournisseurs qui font du PaaS aujourd’hui. OVH, Infomaniak ou encore Ionos et j’en passe. La plupart des fournisseurs d’hébergement web font maintenant du PaaS.
Heroku, c’est celui que j’utilise depuis un an et demi et je l’ai découvert où je travaille actuellement. En constante évolution, supportant 8 langages de programmation et avec une documentation très complétés, il fait un très bon PaaS.
Heroku possède également un système d’Addons qui vous permet de greffer quasiment tous ce que vous souhaitez et ce dont vous avez besoin pour faire tourner votre application. Par exemple, si vous avez besoin d’une base de données en MySQL, SQL Server, MongoDB ou encore du Redis, Heroku peut vous la fournir au moment du déploiement de votre application.
Certains d’entre eux sont gratuits et d’autres sont payants. Vous pouvez voir le catalogue ici 🔗 pour savoir tout ce qu’il est possible de faire.
Même si pour bénéficier de toute la puissance et la force Heroku, il faudra payer vos instances (ce qui semble logique pour un Paas), vous avez quand même la possibilité de créer un compte gratuitement. L’offre gratuite est assez limitée, mais c’est juste ce qu’il vous faut pour tester la plateforme à titre expérimental ou déployer rapidement à la volée une version de staging de votre application web.
Comment ça se passe ?
Le fonctionnement est relativement simple : vous créez une application dans Heroku (qui correspondra à l’application que vous souhaitez déployer) pour ensuite configurer la pipeline dont vous avez besoin. C’est la pipeline qui va vous permettre de définir la façon dont vous allez déployer votre application.
Il y a d’ailleurs 2 méthodes de déploiement à savoir :
- Heroku CLI (oui heroku a un petit utilitaire CLI que vous pouvez utiliser localement sur votre machine)
- GIthub
Et une pipeline dans Heroku peut être composé de 3 étapes à savoir :
- Les Review Apps
- La staging
- La production
Notez que j’ai écrit « peut être composé », car la partie Review Apps de la pipeline n’est accessible que si vous avez votre code sur GitHub et que vous autorisez Heroku de se connecter à vos repositories sur GitHub.
Imaginons une configuration idéale : vous avez une application web où le code est hébergé sur votre compte Github. Vous décidez de connecter votre compte Github sur votre compte Heroku pour configurer votre pipeline de cette manière :
- Les reviews app : lorsque vous créez une Pull Request (PR) sur votre repository GitHub, Heroku détecte votre PR et fais un déploiement automatique de votre app pour cette PR (en plus de cela, comme il est gentil il vous donne directement le lien URL de votre app déployé sur Heroku
- La staging : elle est connecté directement à votre branche develop et lorsque celle-ci subit une mise à jour (des commits ou le merge automatique d’une branche si vous utilisez Git Flow par exemple), Heroku déploiera automatiquement une application de staging
- La production : la finalité de la pipeline, elle est connectée directement à votre branche develop et c’est le même combat que pour la staging, Heroku déploiera automatiquement votre application en production
Vous l’aurez donc compris, une fois que votre pipeline est configuré et que dîtes à Heroku ce dont vous avez besoin et ce que vous voulez obtenir, tout se fera automatiquement par rapport à ce que vous codez au final.
Vous n’avez plus à vous préoccuper de l’environnement où cela est hébergé et l’infrastructure qu’il y a derrière. Vous vous consacrez uniquement votre temps sur votre code et c’est tout !
Bien entendu, c’est difficile de se projeter et visualiser le concept avec juste ces quelques lignes, d’autant qu’Heroku ce n’est pas juste ça ! On peut quasiment tout orchestrer et presque tout faire. Le mieux est de parcourir leur documentation ici 🔗.
Mais je vous ai préparé une petite vidéo pour vous montrer le fonctionnement et vous donner des explications/informations supplémentaires à la volée. L’exemple dans la vidéo est assez simple : je vais déployer une application web en mode statique dans Heroku.
Voici la vidéo complète comprenant les explications + l’exemple :
Si vous ne voulez pas entendre les explications, vous pouvez regarder celle-ci qui démarre directement avec l’exemple: