2012-09-29 16 views
23

Ci sono un sacco di servizi di hosting basati su cloud gestiti per nodejs out there che sembrano relativamente nuovi e alcuni ancora in Beta.NodeJS Managed Hostings vs VPS

Ancora un altro percorso per ospitare un'app nodejs sta configurando uno stack su un VPS come Linode.

Mi chiedo quale sia la differenza fondamentale tra questi due tipi di distribuzione. Quali fattori dovresti prendere in considerazione nello scegliere l'uno rispetto all'altro?

Quale è più adatto per la produzione considerando quanto sono giovani questi servizi.

Per essere chiari, non sto chiedendo di scegliere un provider, ma di decidere se ospitare su un host nodejs gestito specifico o su un VPS di configurazione automatica vecchio stile.

+1

come alcuni hanno le note, anche se si va con un hoster, vale la pena passare attraverso una volta di capire cosa sta succedendo. Spero che i miei collegamenti aiutino ... – bryanmac

+0

Grazie amico, credo che andrò con Linode VPS per ora quindi i tuoi link sarebbero molto utili, anche se speravo di trovare alcuni svantaggi e vantaggi meno ovvi specialmente su soluzioni ospitate che sembrano abbastanza blackbox a io adesso. –

+0

OK - ha senso. Aggiunto un po 'di più su pro/contro. Seguirò se penso di più ... – bryanmac

risposta

34

Utilizzando uno dei servizi è per la maggior parte giù le mani - si scrive il codice e far loro preoccuparsi di gestire la casella, tenere il vostro processo, creando il canale di pubblicazione, l'applicazione di patch del sistema operativo, ecc ...

Al contrario, avere la tua VM ti offre un maggiore controllo, ma con un investimento in avanti più lungo e costante.

Un'altra considerazione è che alcuni host e provider di servizi cloud offrono variazioni proprietarie o distinte sulle tecnologie. Hanno motivi per loro e offrono valore, ma significa che se si desidera cambiare fornitore di cloud, potrebbe significare che si deve riscrivere il codice, gli script di distribuzione ecc ... D'altro canto aveva VM con sistema operativo standard come linea di base è piuttosto generico. Se si automatizza/script/documenta la configurazione delle macchine virtuali e il codice rimane generico, le opzioni rimangono aperte.Se si prende una dipendenza da una tecnologia cloud proprietaria, sarebbe bene astrarla via un'interfaccia in modo che sia un componente disaccoppiato e non sprecato nel codice.

Ho fatto entrambe le cose. Recentemente ho fatto il percorso VM principalmente perché volevo l'esperienza di apprendimento. Ho dovuto:

  • ottenere il VM dal provider cloud
  • ho dovuto aggiornare e patchare il sistema operativo
  • ho dovuto installare e configurare git come un canale di pubblicazione
  • ho dovuto scrivere un po ' script e utilizzare le cose come sempre per tenerlo in esecuzione
  • Ho dovuto configurare il reverse http-proxy per farlo eseguire più siti.
  • ho dovuto configurare DNS con il provider cloud, porte aperte per git ecc ...

l'elenco potrebbe continuare. Alla fine, mi è costato più tempo in anticipo non in codice, ma ho imparato molte cose. Se quelli sono importanti per te, allora dagli un colpo. Se vuoi concentrarti sulla scrittura del tuo codice, allora un provider di hosting di nodi potrebbe essere per te.

Alla fine, avevo anche avuto più opzioni - Volevo aggiungere un secondo sito. Ho aggiunto en entry al mio reverse proxy, aggiungo il mio script per avviare un'altra app con forever, voilà, un altro sito. Più controllo Dopo ciò, ho voluto provare mongodb - semplice - installato.

I costi sono all'incirca gli stessi, ma se inizi a ospitare più siti con molti altri pacchetti come database ecc ..., la VM può iniziare a diventare più economica.

Nodejitsu open sourced i loro strumenti che rendono anche più facile se si fa da soli.

Se lo fai da te, ecco alcuni link che possono aiutare:

Mantenere il server su:

https://github.com/nodejitsu/forever/

http://blog.nodejitsu.com/keep-a-nodejs-server-up-with-forever

https://github.com/bryanmacfarlane/svchost

Upstart e Monit avvio automatico generico e riavvio tramite monit oring

http://howtonode.org/deploying-node-upstart-monit

nodo cluster Esegue un processo per core

http://nodejs.org/docs/latest/api/cluster.html

proxy inverso

https://github.com/nodejitsu/node-http-proxy

https://github.com/nodejitsu/node-http-proxy/issues/232

http://blog.nodejitsu.com/http-proxy-middlewares

https://github.com/nodejitsu/node-http-proxy/issues/168#issuecomment-3289492

http://blog.argteam.com/coding/hardening-node-js-for-production-part-2-using-nginx-to-avoid-node-js-load/

Script l'installazione

https://github.com/bryanmacfarlane/svcinstall

Exit Shell Script Based on Process Exit Code

Pubblica sito

Using git to publish to a website

14

IMHO il più grande svantaggio di impostare il proprio stack è che è necessario gestire cose come fare eseguire Node.js forever, avviarlo come demone, portarlo dietro un proxy inverso come Nginx e così via. .. la cosa bella di Node.js - rendere il licenziamento di un server web un one-liner - è uno dei suoi maggiori svantaggi quando si tratta di sistemi pronti per la produzione.

Inoltre, hai tutti i problemi di gestione, aggiornamento e protezione del server.

Questo è molto più facile con gli hosters: di solito è un git push e il gioco è fatto. Scaling? Facile. La replica? Facile. ...? Facile. Tutto in pochi clic.

Lo svantaggio con gli hosters è che non è possibile regolare l'ambiente. Ok, probabilmente puoi scegliere quale versione di Node.js e/o npm eseguire, ma il gioco è fatto. Non hai il controllo su quale software di terze parti è installato. Non hai alcun controllo sul sistema operativo. Non hai alcun controllo su dove si trovano i server. E così via ...

Ovviamente alcuni hosters ti permettono di accedere ad alcune di queste cose, ma raramente c'è un hoster che supporta tutti.

Quindi, in sostanza la questione relativa Node.js è lo stesso con l'altro la tecnologia: E 'un professionista vs con dell'individualismo, prezzi, Scalabilità, affidabilità, conoscenza, ...

io personalmente scelto di andare con un hoster: il tempo e gli sforzi che risparmio facilmente superano gli svantaggi. Intendiamoci: per me, personalmente.

Questa domanda deve essere risolta individualmente.