Seguici su Telegram, ne vale la pena ❤️ ➡ @trovalost
Vai al contenuto

Node.js: come pubblicare un progetto, quali hosting usare

Che cos’è Node.js

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.

Esempio di Node.js

Node.js è un ambiente server molto particolare, pensato per creare facilmente web service ma anche, banalmente, sistemi interattivi a domanda e risposta come potrebbero essere alcuni chatbot. Ecco un esempio pratico tratto dal sito ufficiale, che mostra come una piccola porzione di codice sia sufficente per creare un classicissimo Hello world:

const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Ciao mondo, sono Node.js!');
});
server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

Porta su cui funziona Node.js di default (3000)

Node.js di default lavora sulla porta 9000, per cui è possibile accedere mediante:

http://localhost:3000

mappandolo su un dominio questo comportamento ovviamente si può cambiare e farlo funzionare senza necessità  di esplicitare la porta con i simbolo :.

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; 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. Eccovi alcuni esempi di hosting per Node.js che si adattano bene allo scopo.

DigitalOcean

Se dovessi indicare fin da subito la piattaforma che preferisco usare per installazioni, diciamo, non standard, direi senza dubbio DigitalOcean: una VPS molto funzionale e conveniente a livello di prezzo, che basa la propria fama in positivo sul fatto che si possono creare delle droplet per qualsiasi app, da Heroku a WordPress senza dimenticare il buon Node.js. In questo caso, la eleggerei a piattaforma ideale per lo scopo, con l’unica pecca (se vogliamo chiamarla cosà¬) che si fa tutto da SSH e che non ci sono interfacce di backend vere e proprie a supporto, se non quelle per creare materialmente le droplet (che poi sono anche molto facili da correlare ad un dominio).

Cloudno.de

Cloudno 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

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

  • 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)

VPS di Tophost

  • 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

  • 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.

👇 Da non perdere 👇



Questo portale web esiste da 4461 giorni (12 anni), e contiene ad oggi 6523 articoli (circa 5.218.400 parole in tutto) e 12 servizi online gratuiti. – Leggi un altro articolo a caso
5/5 (2)

Ti sembra utile o interessante? Vota e fammelo sapere.

Questo sito contribuisce alla audience di sè stesso.
Il nostro network informativo: Lipercubo.it - Pagare.online - Trovalost.it.