Les premiers pas
Au début des années 2000, la façon dont un développeur tel que vous apportait un nouveau site Web ou une nouvelle application sur le Web consistait à acheter un nouveau serveur, à le configurer et à trouver un centre de données hébergeant le serveur dans un rack. Ce centre de données fournirait à votre serveur le support vital dont il avait besoin pour mener à bien sa tâche : bande passante, alimentation, refroidissement, et la liste continue. Ce n'est qu'une fois tous ces éléments alignés que les utilisateurs du Web pourraient taper votre URL et se retrouver en train de regarder votre site Web.
Avance rapide de quelques années. Les développeurs ont de plus en plus l'option de la virtualisation. La virtualisation consiste à louer un serveur "virtuel" à un tiers (qu'il s'agisse d'une autre entreprise ou d'une équipe informatique interne) et à l'utiliser à la place de votre propre machine physique. Un serveur virtuel apparaîtrait au monde extérieur comme un serveur physique ordinaire ; cependant, il n'existe qu'avec les processus d'un serveur parent, partageant les ressources et réduisant les coûts.
Comme un serveur physique peut contenir plusieurs serveurs virtuels, une industrie a vu le jour où les entreprises créaient des centres de données remplis de machines étant découpées en tranches et louées aux développeurs pour les utiliser pour leurs applications. Cela a apporté de grands gains au développeur : il n'était plus nécessaire d'immobiliser du capital pour acheter un serveur physique; il n'y avait pas besoin de s'inquiéter de l'entretien de la machine si les choses tournaient mal; et de plus, il était disponible en quelques heures plutôt qu'en quelques jours qu'il aurait fallu pour se procurer et installer un serveur physique.
Entrez dans l'infonuagique
La première décennie de ce siècle a apporté le concept d'infonuagique. Au fur et à mesure que la demande d'hébergement augmentait et que les applications devenaient de plus en plus volumineuses, une nouvelle forme d'hébergement est apparue : l'infonuagique. Lancé à grande échelle par Elastic Compute Cloud (EC2) d'Amazon, l'infonuagique a permis aux développeurs de "faire tourner" des instances virtuelles de serveurs sur le Web et d'interagir avec eux de la même manière que des machines normales. La principale différence entre ces serveurs et la virtualisation traditionnelle est qu'ils sont généralement facturés à l'utilisation (généralement à l'heure), et à aucun moment le développeur n'a une idée réelle de l'emplacement physique du serveur.
Les fournisseurs d'infonuagique tels qu'Amazon avec AWS ne louent pas de serveurs virtuels; ils louent plutôt une certaine capacité de calcul. Il appartient au fournisseur d'où cette capacité est fournie, et il appartient au fournisseur de fournir et de gérer tous les services auxiliaires l'entourant.
Parce que le vendeur contrôle totalement la capacité et les services auxiliaires, de nouvelles possibilités s'ouvrent. Par exemple, supposons que votre site Web soit mentionné sur la page d'accueil d'un site très populaire et que vous ayez 10 fois le trafic normal sur votre site. Au bon vieux temps des serveurs physiques, votre site tombait sous la charge et vous seriez impuissant à l'arrêter, car vous dépendriez de la possibilité d'acheter du nouveau matériel, de le configurer et de l'installer dans votre centre de données. Avec la virtualisation, vous feriez mieux : vous seriez en mesure d'acheter plus de serveurs auprès de votre fournisseur et de les faire fonctionner en quelques heures, mais jusque-là, votre site serait en panne. Avec les hôtes modernes basés sur l'infonuagique, vous ajouteriez simplement plus de capacité à votre application et vous adapteriez instantanément pour répondre à la demande. De plus, vous ne seriez pas enfermé dans cette infrastructure plus vaste, comme vous le feriez avec les autres options - vous augmentez ou réduisez simplement l'échelle selon les besoins et ne payez que pour les ressources que vous avez utilisées.
Vous n'avez jamais utilisé Heroku auparavant ? Allez sur https://www.heroku.com et essayez-le. Nous ne dupliquerons pas tout le matériel de démarrage du site. Au lieu de cela, nous nous efforcerons de vous donner un aperçu approfondi du fonctionnement d'Heroku et de la manière de tirer le meilleur parti de la plate-forme.
Si vous avez déployé ou partagé des serveurs VPS, il existe quelques différences, mais voici une liste rapide à consulter avant de commencer :
- Système de fichiers Ephemeral : Vous pouvez écrire et lire sur le disque, mais dès que votre serveur redémarre - et il le fera - tout est parti. Utilisez plutôt un système d'entreposage de fichiers partagé tel qu'Amazon Simple Storage Service (Amazon S3). Cela facilite également l'exécution sur plusieurs machines.
- État partagé : Si vous souhaitez stocker des données de session sur votre serveur, vous devrez trouver un moyen de les conserver sur plusieurs machines si vous souhaitez évoluer. Pour ce faire, vous pouvez utiliser des cookies sécurisés et un magasin distribué tel que Memcached.
- Gestion des dépendances : Si vous souhaitez installer des bibliothèques de code externes pour votre application, vous devrez le faire à l'aide d'un outil de gestion des dépendances comme Bundler pour Ruby ou Ivy pour Java.
- Évoluer, pas augmenter : Heroku ne propose actuellement qu'une seule taille de serveur (appelée Dyno) ; si vous avez besoin de plus de puissance, utilisez plus de Dyno. Si un Dyno n'est pas assez grand pour faire fonctionner votre application, vous devriez envisager de diviser votre application en services plus petits, tous parlant via HTTP. Cela fonctionne pour des entreprises comme Google, Facebook et même Heroku - peut-être que cela peut fonctionner pour vous.
- Journal de bord : Une fois que vous obtenez votre application sur Heroku, vous devrez peut-être déboguer votre code d'application en consultant les journaux. Parce que Heroku est différent d'un VPS ou d'un hôte partagé, vous ne pouvez pas SSH ou FTP dans votre boîte pour voir vos journaux. Utilisez plutôt l'interface de ligne de commande Heroku pour exécuter ce qui suit :
heroku logs --tail |
Cela vous évite d'avoir à vous connecter en SSH à plusieurs machines en même temps. Voir le Logplex pour plus d'informations.
Démarrage rapide
Donc, à ce stade, si vous ne l'avez pas déjà fait, cela vaut probablement la peine de jouer rapidement avec Heroku afin que vous puissiez obtenir une application opérationnelle. En procédant ainsi, vous pouvez obtenir un aperçu rapide du processus de déploiement et de construction, et obtenir une application sur le Web en un rien de temps !
La première étape, si vous ne l'avez pas déjà fait, consiste à créer un compte Heroku (il réclame par contre une authentification MFA, ou authentification à deux facteurs). Notez que rien de ce que nous allons faire ici ne vous coûtera quoi que ce soit, vous n'avez donc pas à vous soucier des cartes de crédit ou des frais pour cet exercice.
Une fois que vous avez un compte, assurez-vous que l'outil Heroku CLI (anciennement Heroku Toolbelt) est installée. L'outil Heroku CLI (est une ligne de commande développé en Node.js) s'assurera que vous avez installé tout le nécessaire pour faire fonctionner une application sur Heroku.
Une fois installé, connectez-vous via votre Heroku CLI en ligne de commande :
heroku login |
on obtiendra un résultat ressemblant à ceci :
heroku: Press any key to open up the browser to login or q to exit: Enter your Heroku credentials. Email: moncourriel@courriel.com Password: Could not find an existing public key. Would you like to generate one? [Yn] Generating new SSH public key. Uploading ssh public key /Users/adam/.ssh/id_rsa.pub |