Développeur FullStack & Devops

Heroku est un Paas (service en ligne)  qui nous permet de déployer, gérer et faire tourner des applications (Node.js, Python, Go, Scala, Ruby, Clojure, Java et PHP) sur des containers Linux appelés dynos (infrastructure Heroku) et offre un Dashboard d’administration plutôt bien fait.

Une application au sens Heroku est un ensemble de fichiers source ainsi qu’un fichier de dépendances (package.json pour du Node) et un Procfile (qui défini les commandes pour lancers les différentes instances des composants de votre application).

La méthode de déploiement préconisée sur l’infra Heroku est Git bien qu’il soit possible d’utiliser leurs API ou l’intégration GitHub.

Terminologie

  • les Dynos sont des containers Unix virtualisés isolés, qui fournissent l’environnement requis pour lancer une application
  • un Slug est une archive compressée regroupant les sources, les dépendances, le runtime et les éléments compilés par le système de build

Fonctionnement

Pré requis

Pour déployer une application NodeJs sur Heroku, il faut disposer en local de :

  1. Nodejs et npm
  2. client git
  3. CLI Heroku (installer sous Windows via choco : choco install heroku-cli /y ou sous linux avec snap : sudo snap install heroku –classic )
  4. un compte sur Heroku.com

Déploiement

Exécuter les commandes suivantes une fois un nouveau shell ouvert dans le dossier de votre projet:

heroku login                                # demande les login/pass de votre compte heroku.com
heroku create nomDeVotreAppli --region eu   # cré un projet nomDeVotreAppli sur heroku.com & le git remote associé nommé heroku
git push heroku master                      # déploie les sources et lance le process de Build sur heroku.com

Vie de la dyno

Il est possible de surveiller l’état de nos dynos grâces aux commandes suivantes :

heroku info             # liste toutes les caractéristiques de la dyno
heroku logs --tail      # suit les logs (équivalent à un tail -f en bash)
heroku ps               # affiche le nombre et l'état des dynos (runnig, crash etc)
heroku ps:scale web=3   # augmente le nombre de dynos pour cette instance à 3
heroku open             # ouvre l'URL de votre appli hébergé dans votre Navigateur !
heroku git:clone -a nomDeVotreAppli # récupère les sources du code déployé

Pour lancer l’appli web en local et vérifier notre procfile, heroku nous propose la commande :
heroku local web

Nous avons également la possibilité d’accéder à un shell sur notre instance via la commande :
heroku run bash

RAM

La mémoire étant limitée (surtout pour les plans gratuit et hobbie 512Mo) il faut pouvoir surveiller la consommation mémoire de sa dyno, il est possible d’utiliser une Heroku Lab (fonctionnalité expérimentale) qui est le log-runtime-metrics, qui comme son nom l’indique va logger visible dans PaperTrail ou les logs heroku la consommation mémoire :

heroku labs:enable log-runtime-metrics   # installe la fonctionnalité
heroku labs:disable log-runtime-metrics  # commande pour la désinstaller
heroku restart

Variables d’environnements

Local

En local, heroku nous mets à disposition le fichier .env pour y positionner les variables d’environnement souhaités.

Sur notre dynos

Un set de commandes dédiés aux créations/suppressions de variables d’environnement sont disponibles pour nos instances Heroku :

heroku config:set NODE_ENV="production"   # pour setter la variable d'environnement NODE_ENV 
heroku config                             # visualiser les variables d'environnement de la dyno
#=== monApp Config Vars
#NODE_ENV:             production
#NODE_PORT:            8080
#PAPERTRAIL_API_TOKEN: xxxxxxxxxxxxxxx
heroku config:unset NODE_PORT             # pour supprimer la variable

Addons

Heroku propose un système d’add-ons, permettant d’outiller notre environnement, avec par exemple un PaperTrail :

heroku addons:create papertrail    # ajoute l'addon PaperTrail
heroku addons                      # liste les addons 'installés' sur notre dyno
heroku addons:open papertrail      # ouvre la page web de Papertrail

Les addons installés sont également accessible aussi depuis l’onglet resources de notre dyno.

Addons intéressants

PaperTrail : centralise les logs de nos différentes dynos ou apps et propose une WebUI permettant de filtrer les évenements

Librato : permet de monitorer vos dynos et propose une interface sympa

Liens

rédigé par behrouze le 23/10/2018
Cheat SheetsOutilsVidéosA propos