/ cloud

Rex solution cloud heroku

Retour d'expérience sur la solution de cloud Heroku

Un peu d'histoire

Heroku a été crée en 2007, c'est une solution de cloud computing de type PaaS (Plateform As A Service).

Racheté en 2010 par salesforce.

La solution est basée sur Amazon Web Service (AWS).

Le contexte de notre projet

Nous avions un petit projet de BOT à mettre en place rapidement en production avec les caractéristiques suivantes :

  • Architecture du projet en nodejs avec une base de donnée de type MongoDb

  • Un projet hébergé sur github

  • Une architecture assez simple avec des interactions avec bien entendu le SI PagesJaunes mais également certains web services cognitives de Microsoft et le bot framework toujours de Microsoft

  • Une équipe très minimaliste de développement

  • Un volume de visites totalement inconnu

  • Une mise en production asap du projet

Notre besoin dans le cadre de ce projet

  • Nous avions besoin de deux environnements, un environnement d'intégration et un de production

  • De pouvoir au fonction du trafic, redimensionner rapidement en manuel ou en automatique l'infra

  • Nous ne souhaitions clairement pas nous occuper des problèmes de maintenance serveur, montée de version du software des machines etc. Juste développer :)

  • Il nous fallait pouvoir déployer en continu depuis github donc une très bonne intégration de github

  • Un minimum d'alerting

  • La compatbilité https. Le bot framework de Microsoft nous impose d'être en https.

Mise en place du projet

Github and heroku

Processus de déploiement

Mise en intégration

  • Un commit directement sur "develop"
  • Une PR (Pull Request) vers "develop"

Mise en production

  • La branche "master" est vérouillée
  • Une PR avec relecture croisée de "develop" vers "master"

Automatic deploy

Https

  • Heroku propose automatiquement un sous domaine en https
  • Propose un certificat SSL

Heroku ssl

  • Possibilité de mettre son propre domaine et certificat

CLI

  • Pour ceux qui aiment mettre les mains dans un bash, on peut gérer complètement sa plateforme heroku en ligne de commande. Il suffit de télécharger via homebrew l'outil heroku.
$ brew install heroku/brew/heroku

Tests unitaires

Heroku supporte TAP qui permet de réaliser quelques tests automatisés sur votre projet. Attention il n'est pas encore compatible avec toutes les technos. Nous le testons actuellement sur nodejs encore en beta.

Dimensionnement

Bien entendu comme toute solution cloud qui se respecte, il est possible de redimensionner en quelques clics l'infra en fonction de l'occupation des serveurs. Il y a également dans une des offres (donc payant) la possibilité de redimensionner automatiquement.

Alerting

L'interface de monitoring est assez agréable. Il est possible de configurer deux types d'alertes:

  • Une alerte sur les temps de réponse
  • Une autre sur les requêtes en erreur

Cela nous a suffit pour notre projet. Ensuite nous avons couplé notre projet avec Microsoft Insights pour avoir des données plus précises et pouvoir analyser avec précision.

Conclusion

En conclusion Heroku propose un environnement très complet, facile à prendre en main, très peu onéreux car ne fonctionne pas au volume mais plutôt au temps d'utilisation. Plus proche du développeur. Permet de se monter rapidement un infra complète d'intégration et de production en 15min chrono.