Proviamo Cloud Foundry con node.js

[da qui i post sono molto vecchi e contengono informazioni potenzialmente obsolete]

Cloud Foundry è il nuovo prodotto PaaS di VMware. In rete si trovano diversi tutorial su come costruire semplici applicazioni su vcap (la piattaforma) utilizzando il linguaggio Ruby e il framework Sinatra; in questo post invece vi mostrerò come creare sull’ambiente di hosting cloudfoundry.com una semplice applicazione con il runtime node, quindi con JavaScript e node.js (attualmente la v0.4.5).

Non vuole essere un tutorial completo, lo scopo è solo quello di fornire alcuni spunti.

Innanzitutto dobbiamo installare (ruby, gem e) vmc. Per la prova userò un Mac con Snow Leopard e seguirò vagamente le indicazioni che si possono trovare nel pdf linkato alla pagina Getting Started Guide.

Il principale prerequisito è essere iscritti a Cloud Foundry.

Aggiorniamo gem e installiamo vmc (VMware Cloud CLI).

sudo gem update --system
sudo gem install vmc

A questo punto possiamo procedere con il setting del target e con il login.

vmc target api.cloudfoundry.com
vmc login

Inseriamo le nostre credenziali. Se stiamo effettuando il primo login dobbiamo ricordarci di modificare la password.

vmc passwd

Ora possiamo dedicarci al codice della nostra prima applicazione. Creiamo, quindi una directory con dentro un file sorgente JavaScript.

mkdir test
cd test
touch test.js

Potete usare un editor qualsiasi; per comodità nell’esempio userò nano.

nano test.js

Qui di seguito trovate il succo del post, il contenuto del file.

var http = require('http');
var server = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
var body = '';
for (a in process.env) {
body += a + ' ';
}
res.end(body);
});
server.listen(process.env.VMC_APP_PORT);

Quello che fa è visualizzare il nome delle variabili di ambiente, attraverso un for…in sull’oggetto process.env — che tra le altre cose contiene la porta (VMC_APP_PORT) sulla quale la nostra applicazione dovrà mettersi in listening. Se invece volessimo visualizzare un dump delle property di process.env ci basterebbe importare il modulo core util e usare il metodo inspect.

var util = require('util');

var body = util.inspect(process.env, true, null);

Ora possiamo procedere con un semplice deploy — sostituendo a NOMEAPP il nome della vostra applicazione, io per questo test ho scelto “nodejs”.

vmc push NOMEAPP -n

Il sistema sceglierà automaticamente il runtime necessario per far girare l’applicazione. Se il deploy avrà successo, la vostra creazione si troverà alla URL:

NOMEAPP.cloudfoundry.com

[nota: per maggiori dettagli consultate il pdf “Getting Started Guide”, oppure vmc help]

Dopo una modifica potete ri-effettuare il deploy usando il comando vmc update.

vmc update NOMEAPP

Il risultato del mio esperimento è qui: nodejs.cloudfoundry.com

update: chiedo venia per il typo nella URL

approfondimenti: un confronto tra le PaaS per Java (occhio alle imprecisioni)

PaaS is a type of cloud service in which the provider delivers not only on-demand hardware and operating-system services, but also application platforms and solution stacks.

This entry was posted in Cloud, JavaScript, Programmazione. Bookmark the permalink.

One Response to Proviamo Cloud Foundry con node.js

  1. Francesco says:

    Ho provato c9.io per sviluppo con node.js insieme a MongoHQ ed e’ impressionante come si riesce a creare una semplice applicazione con backend con tool di sviluppo interamente online.
    Cloud Foundry e’ molto interessante perche’ sembra essere indipendente dalla soluzione di hosting rispetto altre piattaforme a patto di usare VMWare.

    Riguardo alle soluzioni di hosting cloud per java, nel mio ultimo progetto ho utilizzato Google App Engine e sta funzionando molto bene e fino al cambio di pricing a costi praticamente nulli, dopo il cambio di pricing di App Engine sto valutando Amazon Elastic Bean e CluodFoundry. Ci sono pero’ alcune feature di App Engine che trovo molto utili, e in particolare 1) avere la possibilita’ di avere diverse versioni della web application che puoi usare per produzione, pre-prod e testing durante il rilascio di nuove features. 3) l’hot deploy senza downtime di nuove versioni della applicazione 2) la semplicita’ di sviluppo di soluzioni multi-tenant grazie ai namespace.

Leave a Reply