Node.js è un framework per ambienti runtime per server Web; parliamo di una architettura che permette l’esecuzione di codice Javascript dall’hardware, anziché dal browser.
Ciò determina lo sviluppo di una nuova generazione di applicazioni cloud.
In quest’ottica, sempre più hosting provider stanno integrando il supporto per le applicazioni Node.js all’interno del proprio software di stack server LAMP condiviso. Secondo questa logica, si rendono disponibili piani cloud, VPS o server dedicati; ambienti altamente appetibili per gli sviluppatori professionali.
Questo perché simili infrastrutture mettono a disposizione un elevato quantitativo di risorse, indispensabili per uno sviluppo fluido del codice e per non imbattersi in possibili blocchi o rallentamenti. Simili architetture consentono di superare i limiti di I/O nei quali è facile incappare adottando piattaforme di hosting condiviso Linux.
All’atto pratico, un hosting per Node.js deve essere bilanciato e offrire il corretto rapporto tra supporto hardware e piatteforme ad alte prestazioni (in modalità gestita o non gestita) per la configurazione dello stack del server Web.
Node.js è una piattaforma event-driven open source, si distingue per la grande efficienza di processo e rende possibile il funzionamento di numerose applicazioni e la contemporanea esecuzione di codice JS lato server.
È quindi possibile creare Web server e tool di networking facendo uso diretto del linguaggio Javascript, sfruttando specifici moduli per le funzionalità principali (I/O, DNS, HTTP, UDP, TLS/SSL, TCP, crittografia…).
Questa architettura consente inoltre una facile interconnessione delle App con istanze o cluster di database dedicati, come per esempio MongoDB, MySQL, MariaDB, Percona, PostgreSQL, Redis o Memcached.
Node.js permette di generare applicazioni ad alte prestazioni (grazie a un core basato su C++, C e Javascript), sviluppate per gestire servizi online di grande portata, ma anche progetti verticali. All’atto pratico, un’App in Node.js può essere pubblicata sul Web, oppure può essere integrata su un dominio o in un sito, o ancora essere assorbita da una applicazione globale che deve assolvere a compiti specifici.
Il pregio fondamentale di questa piattaforma risiede nella capacità di gestire più richieste concorrenti sfruttando un approccio “guidato dagli eventi” in modo asincrono. Il sistema rimane in “stato di sleep” quando non sussistono richieste e si attiva tramite “event loop”. In questo modo, Node.js può eseguire operazioni che non bloccano l’I/O, facendo un uso efficiente del kernel, al quale sono delegate la maggior parte delle operazioni, ove possibile.