Nodester: Hébergez vos applis NodeJS

J’ai découvert aujourd’hui Nodester: une plateforme d’hébergement d’application NodeJS. J’ai pu m’inscrire et faire les tous premiers tests, donc je vais vous faire part de mes impressions :)
Alors je vous le dis tout de suite: on est très loin des standards d’hébergement du monde PHP auquel je suis plus habitué. Exit le FTP (voire le SSH si on a de la chance), on a une API, avec un outil en ligne de commande, pour s’inscrire, créer, déployer et contrôler ses applications. Avertissement: Si vous testez, faites un peu attention à ce que vous faites, car je n’ai pas trouvé comment on supprimait son compte, ni comment on pouvait supprimer une application initialisée.

Note: J’ai aussi ouvert un compte sur DuoStack, mais je n’ai pas encore pris le temps de tester. On verra ça dans la semaine probablement 😉

Pré-requis

  • node
  • npm
  • une clé SSH (si vous utilisez déjà GitHub, pourquoi ne pas réutiliser celle que vous avez déjà l’habitude d’utiliser pour vos dépôts Git): en effet, le déploiement se fait par git push 😀

Inscription/Installation

L’inscription n’est pas triviale depuis le site, il faut un coupon qu’en fait on ne peut pas obtenir autrement qu’en interrogeant l’API. Le plus simple est donc d’installer directement l’utilitaire en ligne de commande. Ils ont fait ça super bien :)

npm install nodester-cli

Une fois l’outil installé, on demande un coupon, puis on valide son inscription. Tout ça va très vite, no souci !

nodester coupon $EMAIL
# Go consulter tes mails mec, quelqu'un a pensé à toi !
nodester user create $USERNAME $PASSWORD $EMAIL $CLE_PUBLIQUE_SSH $COUPON
# Le compte est créé, maintenant on met à jour notre installation locale
nodester user setup $USERNAME $PASSWORD

Créer et déployer son application

La création d’une application est très simple, mais non réversible, donc lisez bien avant de taper :)
Les étapes à suivre sont assez simples, mais il faut être rigoureux.

D’abord on « déclare » l’application sur Nodester:

# Votre site sera: $APPNAME.nodester.com
# Le script node principal sera $START.js, c'est lui qui devra faire le "listen()" qui va bien
nodester app create $APPNAME $START.js

Le serveur répond:

Name            Port   gitrepo                             Start         Running
$APPNAME        $PORT  ec2-user@nodester.com:/h...a.git    $START.js     false

Cette réponse signifie que l’espace d’hébergement a bien été créé. Il vous donne le dépot Git qui vous servira au déploiement, ainsi que le port $PORT qu’il faudra écouter, même si votre site est bien accessible sur le port 80, il est en fait « natté » vers ce port.

Ensuite on va créer notre application localement:

git init $APPNAME && cd $APPNAME

On crée le fichier $START.js

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen($PORT); // Remplacer ici par le port fourni par Nodester
git add $START.js
git commit -m "Hello, world"

On est prêt à déployer:

# Utile seulement la première fois, pour "lier" notre dépôt local au serveur de déploiement
git remote add nodester "ec2-user@nodester.com:/h...a.git"
# À partir de là le déploiement se fait simplement par un git push:
git push nodester master

Démarrez l’application:

nodester app start $APPNAME

et allez voir sur $APPNAME.nodester.com. Admirez votre magnifique première application publiquement accessible écrite avec NodeJS.

Ressource disponibles

L’utilisation de npm est possible via la commande nodester appnpm. L’utilisation de son propre nom de domaine est aussi possible avec nodester appdomain.

Je n’ai pas testé les accès fichiers, je ne sais pas comment ça se passe au niveau des permissions, mais j’imagine qu’on a les accès en écriture (forcément). Du coup SQLite est tout-à-fait adapté si vous avez besoin d’une base de données. En effet, aucun serveur de données n’est disponible par défaut: pas de memcache, de Redis, de MongoDB, de MySQL, de PostgreSQL. Non, rien, que dalle. Du coup on va lorgner du côté des hébergements dédiés comme Open Redis ou CouchOne.
Je crois très moyennement à ces solutions, je resterais donc sur du SQLite tant qu’à faire.

Performances

À terme je compte héberger une copie de mon projet 301.tl, un réducteur d’URL réalisé avec NodeJS et Redis (pour l’instant, on discutera un peu plus tard ici-même de la pertinence des bases NoSQL).

J’ai donc commencé trèèèès gentiment, avec le bon vieux « Hello, World », envoyé sur 301tl.nodester.com. Comme vous pouvez le voir, entre 2 & 3 secondes d’attente, c’est moche. Mais en même temps, l’intérêt de la solution n’est pas que dans l’hébergement gratuit…

Conclusion

L’accès à l’hébergement est quand-même réservé à du techos bien à l’aise avec son terminal, git, etc. Autant de choses qui cependant ne devraient pas faire peur au développeur Node. Niveau performances c’est très médiocre, et l’impossibilité de disposer d’une base de données limite à mon avis cet hébergement à nos petites expériences autour de Node. Rien de sérieux à y mettre pour l’instant.

Néanmoins, l’intérêt de cette solution est aussi qu’elle est open-source. Tout la stack est donc aisément reproductible par d’autres hébergeurs, et la méthode d’hébergement et de déploiement pourrait donc bien être reproduite par d’autres. Cette méthode est d’ailleurs très satisfaisante: un git push pour déployer et redémarrer son application, ça marche diablement bien.

Un dernier point très positif: Nodester est extrêment réactif sur son compte Twitter.

4 réflexions au sujet de « Nodester: Hébergez vos applis NodeJS »

  1. Ping : Les tweets qui mentionnent Nodester: Hébergez vos applis NodeJS « naholyr -- Topsy.com

  2. Luc

    Hello,
    merci beaucoup pour ton article qui donne une bonne explication du couple node / nodester.
    Je commence une petite application node.js et je souhaiterais lui coupler la base mongoDB (avec l’utilisation de mongoose). Saurais tu quelle est la meilleure solution pour faire cela ? D’après ce que j’ai compris il faut que j’héberge la base sur un autre serveur que nodester ? En ce qui concerne mongoose, est ce qu’il est facile de l’installer sur nodester ?
    Merci,
    Luc

    Répondre
      1. naholyr Auteur de l’article

        Étant malgré tout plutôt old school, ma solution de choix reste tout de même le bon vieux serveur dédié :) On a des offres à ~ 20 € TTC/mois qui sont de très bonne qualité pour du travail amateur ou semi-pro, c’est largement suffisant. On maîtrise les performances, et les coûts sont toujours moindre (au détriment de la simplicité de mise en œuvre). Ayant un passif d’administrateur système & réseau dans une vie antérieure, les contraintes d’un dédié ne me gênent pas.

        En revanche si je devais conseiller une solution, aujourd’hui je conseillerais sans hésiter Heroku : solution mûre, ils ont fait leurs preuves tant niveau perfs que maintenance, la simplicité de mise en œuvre est la même que celle présentée ici (de toutes façons c’est le cas pour quasiment toutes les offres « cloud »), et la quantité de modules est vraiment impressionnante. Côté coûts je pense qu’ils sont dans la moyenne.

        Par contre j’éviterais les solutions bâtardes de « serveur dédié virtuel dans le cloud » à moins d’avoir un vrai besoin de réactivité sur les montées en charge : par exemple un pic avec fréquentation x10 pendant quelques jours, comme les sites marchands peuvent en connaître, là c’est vraiment justifié. Mais sinon ce sont des solutions qui sont au moins aussi complexes qu’un dédié (on a les mêmes problématiques de configuration, avec la complexité du « cloud » à rajouter par dessus) et toujours bien plus chères.

        Voilà mon avis général sur l’offre globale d’hébergement 😉

        Répondre

Laisser un commentaire