In questo articolo approfondiremo le soluzioni di hosting remoto di applicazioni Node.js. Rispetto ad una soluzione casalinga, affidarsi a terzi per l'hosting può essere vantaggioso per motivi di ottimizzazione delle macchine (il lavoro di sistemista è appunto un altro lavoro rispetto al programmatore) e di performance di rete.
Il cloud ha permesso una proliferazione notevole di soluzioni di PaaS (Platform as a Service) di qualsiasi natura e tipologia. Le soluzioni che approfondiremo verranno divise in due grossi gruppi:
- soluzioni gratuite
- soluzioni a pagamento
Ovviamente le differenze sono notevoli: le soluzioni "corporate" a pagamento offrono maggiori e migliori servizi associati, ma ovviamente costano soldi. Il suggerimento è quello di affidarsi alle società che offrono hosting dietro compenso solamente per applicativi pronti per gli ambienti di produzione. Le soluzioni free rimangono comunque ottime e spesso altamente configurabili.
Soluzioni free
Nodester
Nodester offre un buon servizio a costo zero. Permette di pubblicare le applicazioni Web Node.js su un loro dominio di terzo livello (*.nodester.com
). Il codice sorgente può essere pubblicato grazie ad un repository Git da agganciare al progetto. Questo passaggio è piuttosto semplice grazie alla multi-dimensionalità di Git che permette di avere più repository per un singolo progetto.
Tramite una API remota installabile da NPM e gestibile tramite shell possiamo controllare lo stato dell'applicazione e installare ulteriori pacchetti e librerie da NPM. L'unica grande pecca al momento è l'indisponibilità di un database. Questo però può essere aggirato utilizzando database esterni.
Per approfondire il sito ufficiale è: www.nodester.com
Cloudno.de
Una soluzione simile a Nodester è cloudno.de. Anche esso offre una serie di comandi da terminale installabili tramite NPM utili a installare e configurare l'applicazione da remoto. La pubblicazione
avviene anche in questo caso tramite Git.
Tra i vantaggi rispetto a Nodester bisogna assolutamente ricordare la possibilità di:
- usare domini personalizzati modificandone il puntamento DNS
- avere database NoSQL (per il momento CouchDB e Redis) integrati nativamente nella piattaforma di hosting.
Per approfondire il suo sito ufficiale è: cloudno.de
NodeSocket
NodeSocket è una soluzione molto simile a Nodester. Offre gli stessi servizi e può senza dubbio essere una valida alternativa. Le API esposte dal servizio sono in numero maggiore rispetto a
Nodester permettendo quindi una migliore configurabilità del servizio.
Soluzioni a pagamento
Analizzare nel dettaglio le soluzioni a pagamento risulta nettamente più complesso (le tematiche sono molto tecniche e non legate strettamente a Node.js). Le diverse soluzioni che esamineremo offrono più o meno gli stessi servizi e il prezzo è strettamente legato alla potenza di calcolo, memoria e disponibilità di persistenza richieste.
Heroku
Heroku è la soluzione scelta dal re dei social network: Facebook. È infatti possibile, in fase di creazione di un applicazione, appoggiarsi nativamente a Heroku direttamente dalle pagine di Facebook. Heroku offre praticamente tutto, dalla configurazione delle macchine (si parla di due componenti virtuali chiamati Web Dynos e Worker Dynos) alla scelta della soluzione di persistenza fino alla possibilità di agganciare alla propria piattaforma degli add-on fatti ad hoc.
Heroku non è una soluzione dedicata solo a Node.js ma supporta anche Ruby, Clojure, Java, Python, and Scala.
Ovviamente nel servizio è inclusa, come per tutte le soluzioni a pagamento, anche l'assistenza remota.
Per approfondire il suo sito ufficiale è: www.heroku.com
Nodejitsu
Nodejitsu è una soluzione sicuramente meno professionale di Heroku, con prezzi nettamente più accessibili a fronte di una configurabilità minore. Se con Heroku potevamo scegliere il numero dei componenti virtuali da avere a disposizione, su Nodejitsu possiamo solamente scegliere una tra le configurazioni pre-pacchettizzate.
A differenza delle altre piattaforme di hosting (e come il nome suggerisce) Nodejitsu offre hosting dedicato esclusivamente da applicazioni Node.js.
Uno degli aspetti positivi da sottolineare è la possibilità di attivare gratuitamente la "Development Sandbox" a scopi di sviluppo e di test della piattaforma: da non sottovalutare!
Per approfondire il suo sito ufficiale è: www.nodejitsu.com
Conclusioni
Come ripetuto più volte nella guida, Node.js appartiene ad un mondo ancora molto instabile e con una continua e notevole variabilità. Le soluzioni offerte sono molto dipendenti dalle variazioni del mercato e dipenderanno molto dalle politiche di acquisizione dei grandi player della rete. Per questoo motivo il suggerimento rimane sempre quello di essere vigili e non focalizzarsi su un particolare servizio ma continuare a visionare quello che il mercato offre per evitare di trovarsi locked-in.
Il successo o meno di uno o più servizi dipenderà fattori tra cui in primis il successo stesso di Node.js, che nonostante l'euforia iniziale deve ancora superare ostacoli molto insidiosi per poter affermarsi come reale alternativa a soluzioni considerate stabili come Java o .NET.