Come pubblicare un progetto per Node.js (e quali hosting usare)

Come pubblicare un progetto per Node.js (e quali hosting usare)

Node.js è una delle innovazioni più veloci, efficenti ed importanti degli ultimi anni: una piattaforma event-driven open source che permette sia a varie applicazioni di funzionare (ad esempio le app in Ionic) che di eseguire più in generale codice JS lato server. In altri termini esso permette di creare web server e tool di networking utilizzando direttamente Javascript come linguaggio, e sfruttando una collezione di funzionalità moduli per I/O, DNS, HTTP, UDP, TLS/SSL, TCP, crittografia, buffer, stream di dati e così via. Nel farlo, il numero di righe di codice necessarie viene abbattuto in media dal 30 al 70% di quanto avverrebbe con altri linguaggi. L’ambiente in questione offre, pertanto, prestazioni impressionanti per le vostre applicazioni: ad esempio in Node.js sono stati sviluppate parte delle interfacce di Uber, Linkedin, Netflix, Paypal, così come oggetti più circoscritti quali Ghost (una velocissima piattaforma di blog) oppure, ancora, emulatori della console a 8 bit NES (jsnes). Per il resto, quindi, un’app in Node.js può andare sul web, può essere integrata su un dominio o in un sito, oppure andare a finire dentro un’app specifica di qualsiasi genere.

Il vantaggio che deriva dall’uso di Node.js deriva anche da come è stato realizzato, visto che il suo core è basato su C++, C e Javascript – e questo ovviamente depone molto in favore della velocità di esecuzione. Il vostro progetto in Node.js merita la pubblicazione, o vorreste comunque mostrarlo ad un cliente? Nessun problema: con questo articolo scoprire come fare, e dove hostare il vostro progetto.

Requisiti per Node.js

Node.js si basa sull’idea di poter gestire più richieste concorrenti di clienti sfruttando l’approccio event driven in modo asincrono, rimanendo in stato di sleep quando non ci sono richieste ed attivandosi via event loop (che è il pezzo di codice che permette a Node.js di eseguire operazioni non bloccanti di I/O, e delegando il kernel ad eseguire le operazioni tutte le volte che sia possibile farlo.

Essendo un ambiente di sviluppo che fa dell’efficenza il suo punto di forza, di per sè non richiede nulla di trascendentale: un ambiente LAMP classico permette di installarlo senza troppe complicazioni, ed anche i vari ambienti bundle come MAMP lo supportano (così come ormai supportano NGINX). Node.js funziona su Linux ma anche su Windows e Mac (se voleste testarvelo in ambiente isolato), e può funzionare tranquillamente anche su piccole macchine con meno di 1 GB di RAM: pertanto, l’ambiente nativo sembrerebbero essere le VPS ed ovviamente i server dedicati.

Tuttavia c’è il problema non tanto di requisiti hardware quanto di installazione dell’ambiente, già non facilissimo via terminale locale, ancora più complicato su SSH remoto; chiaro che dovete essere consapevoli di questa difficoltà, perchè stiamo comunque parlando di un framework molto evoluto e funzionale, che va messo nelle condizioni di funzionare al meglio, e va aggiornato soprattutto nel tempo.

Hosting per Node.js

Come tantissimi webmaster, soprattutto chi ha iniziato a fine anni ’90, si era soliti sfruttare le piattaforme di hosting gratuito (queste, ad esempio); bastava trovare un hosting free con PHP e MySQL, ed il nostro ecommerce o progetto in WordPress avrebbe rapidamente preso vita. Per quanto riguarda Node.js, le cose sono leggermente più complicate, ovviamente per motivi architetturarli: non parliamo di un’architettura client-server classica, ma di un suo derivato molto, molto più evoluto. Pertanto un vero e proprio hosting gratuito per Node.js ancora non sembra essere disponibile, per quanto ci siano soluzioni che molto si avvicinano a questa necessità. Diciamo quindi, da subito, che l’architettura di Node.js – che ho riportato nell’immagine che potete ammirare in questo articolo – tende a far preferire al progettista o sviluppatore ambienti cloud che offrano, al proprio interno, almeno una parte del framework necessario che gli hosting classici non supportano, o che comunque costringono l’utente ad installarsi.

Cloudno.de

Questa azienda offre vari piani di hosting specifici per Node.js, tra cui quello gratuito che prevede:

  • il supporto ad una piccola app (non viene specificato cosa si intenda per “piccola”);
  • fino a 150.000 richieste / mese
  • database MongoDB da 250MB
  • database CouchDB da 25MB
  • database Redis da 5MB

I piani successivi vanno dai 24 € all’anno come costo minimo, e permettono di hostare servizi, app e webapp in Node.js con varie configurazioni e risorse a disposizione.

Sito: Cloudno.de

Heroku

Heroku è un Platform as a Server o PaaS, un concetto di “nuvola” più evoluto rispetto alle classiche piattaforme di hosting cloud (che invece, solitamente, vengono fornite molto equipaggiate di software quanto “a crudo” se uno ha esigenze così specifiche); Heroku è pronto all’uso e viene fornito per scopi sperimentali completamente free, e si basa su un concetto inedito per altri servizi di hosting quale i dynos. I dynos non sono altro che, in ambiente Linux, dei contenitori di applicazioni, che possono essere di tre tipi diversi (Web, Worker e One-off) e che possiedono un tempo di vita prestabilito; nella versione free durano mezz’ora, oltre la quale diventa necessario pagare una quota di utilizzo. Chiarito questo, basta sapere che Heroku fonda la propria esistenza sul concetto “Build apps, not infrastructure“, e supporta pienamente sia PHP che Python, Java, Ruby e ovviamente Node.js. Unica pecca, almeno nella versione free, è che Heroku non sembra supportare alcun file hosting, pertanto i file fisici di cui avrete bisogno vanno appoggiati ed hostati altrove (ad esempio su Wasabi).

Sito: Heroku

Hosting classici a supporto di Node.js

Molte pagine anglofone tendono a indicare vari tipi di hosting cloud (da Siteground a Bluehost) come hosting per Node.js; sebbene questo non sia sbagliato in generale, è certamente una strada non banale da percorrere perchè richiede la configurazione diretta di tutti i servizi via terminale di comando.

In genere le indicazioni degli hosting stessi (qui ne riporto un piccolo campione casuale, per darvi l’idea) suggeriscono che:

  • Bluehost mi ha confermato la possibilità di usare Node.js in ambiente condiviso, cosa che ho trovato un po’ insolita – ma che sembrerebbe confermata anche su Stackoverflow, dove molti utenti raccontano di averlo fatto via NPM, Grunt e comandi analoghi (i piani condivisi di Bluehost supportano SSH, ovviamente). Il problema, in questo caso, non è tanto il fatto di avere SSH quanto che Node.js rimane residente in memoria, e – soprattutto nel lungo periodo – questo potrebbe costituire un problema per gli altri utenti che siano (per definizione di condiviso) sullo stesso server. Ovviamente per chi non conosce bene Node.js non è scontato fare questo tipo di considerazioni, ma per la natura dell’articolo mi tocca farvelo presente. Costo mensile: 2.40 € / mese (attenzione al fatto che nel lungo periodo potrebbe essere problematico da gestire, specie se non ottimizzate l’app per l’uso della RAM)
  • Le VPS di Tophost supportano SSH per cui si prestano, almeno sulla carta, ad essere utilizzate come hosting per SSH, ovviamente anche qui bisogna predisporre l’ambiente nel modo più opportuno. Costo mensile medio: in base all’uso, calcolato in Topcoin (costi molto contenuti), se non altro qui vengono meno le limitazioni del caso precedente (è pur sempre un ambiente virtualizzato separato dal resto, per cui non dovreste avere alcun problema).
  • Siteground richiede l’acquisto di un server dedicato con accesso root, e di seguire queste istruzioni per l’installazione (certamente non una possibilità gratuita ma, come detto, veri e propri hosting gratis per Node.js non me ne risultano). Costo mensile: 179 € / mese

Conclusioni

Credo che ad oggi Node.js, dopo un’euforia iniziale forse giustificata solo in parte, abbia ormai raggiunto il livello di maturità idoneo a farsi utilizzare per il grande pubblico, per progetti web di vario genere: la strada sembra essere molto chiara a livello implementativo (e di servizi messi a disposizione), ma resta forse vagamente complessa da concepire per molti (soprattutto se nati e cresciuti con la filosofia client-server) e, soprattutto, non tutti gli hosting hanno ancora sviluppato l’attenzione necessaria per mettere a disposizione il servizio (e dovrebbero farlo, prima o poi). Chi sarà il primo hosting italiano, ad esempio, a supportare nativamente Node.js? Io sono pronto a scommettere che, tra qualche tempo, anche grazie agli opportuni addon e a procedure di installazione semplificate (magari 1-click), sarà comune quanto l’hosting per WordPress o quello PHP.

Ti piace questo articolo?

0 voti

Su Trovalost.it puntiamo sulla qualità dei contenuti da quando siamo nati: la tua sincera valutazione può aiutarci a migliorare ogni giorno.