2012-09-29 13 views
23

Es gibt eine Reihe von verwalteten Cloud-basierten Hosting-Services für Nodejs out there, die relativ neu erscheinen und einige noch in der Beta.NodeJS Managed Hostings vs VPS

Ein weiterer Weg, um eine Nodejs App zu hosten, ist das Einrichten eines Stacks auf einem VPS wie Linode.

Ich frage mich, was ist der grundlegende Unterschied hier zwischen diesen beiden Arten der Bereitstellung. Welche Faktoren sollten bei der Auswahl eines anderen berücksichtigt werden?

Welches ist besser geeignet für die Produktion in Anbetracht wie jung diese Dienste sind.

Um klar zu sein, ich Frage nicht bei der Auswahl eines Anbieters, sondern um zu entscheiden, ob auf einem verwalteten NodeJs spezifische Hosting oder auf einem altmodischen Self-Setup-VPS hosten.

+1

Wie einige Hinweise haben, auch wenn Sie mit einem Hoster gehen, es lohnt sich einmal durch gehen zu verstehen, was los ist. Hoffentlich helfen meine Links ... – bryanmac

+0

Danke Mann, ich glaube, ich werde mit Linode VPS für jetzt gehen, so dass Ihre Links sehr hilfreich sein würden, obwohl ich gehofft hatte, einige weniger offensichtliche Nachteile und Pros speziell auf gehosteten Lösungen zu finden, die ziemlich blackbox scheinen ich jetzt. –

+0

OK - macht Sinn. Hinzugefügt ein bisschen mehr auf Pro/Contra. Ich werde nachgehen, wenn ich an mehr denke ... – bryanmac

Antwort

34

einen der Dienste zu verwenden ist zum größten Teil aus Händen - Sie Ihren Code schreiben und lassen Sie sie Sorgen über die Box verwalten, halten Sie Ihre Prozess, die Schaffung der Publishing-Kanal, Patchen des OS, etc ...

Im Gegensatz dazu haben Sie mit Ihrer eigenen VM mehr Kontrolle, aber mit mehr Zeitaufwand und Investitionen.

Eine andere Überlegung ist, einige Hosters und Cloud-Anbieter bieten proprietäre oder unterschiedliche Variationen von Technologien. Sie haben Gründe für sie und sie bieten Wert, aber es bedeutet, dass, wenn Sie Cloud-Anbieter wechseln möchten, es bedeutet, dass Sie Code, Deployment-Skripts usw. neu schreiben müssen ... Auf der anderen Seite war die Verwendung von VMs mit Standard-Betriebssystem als Basis ziemlich generisch. Wenn Sie die Konfiguration Ihrer VMs automatisieren/scriptieren/dokumentieren und Ihr Code generisch bleibt, bleiben Ihre Optionen offen.Wenn Sie von einer proprietären Cloud-Technologie abhängig sind, wäre es gut, sie hinter einer Schnittstelle zu abstrahieren, sodass sie eine entkoppelte Komponente ist und nicht in Ihrem Code verstreut ist.

Ich habe beides getan. Ich habe den VM-Pfad kürzlich hauptsächlich gemacht, weil ich die Lernerfahrung haben wollte. Ich musste:

  • die VM erhalten aus dem Cloud-Anbieter
  • Ich musste
  • Ich hatte zu installieren und konfigurieren git als Verlag Kanal
  • ich das OS Update- und Patch einige hatte zu schreiben Skripte und Dinge wie immer zu verwenden, um es am Laufen zu halten
  • Ich musste den umgekehrten http-Proxy konfigurieren, um es zu erhalten, mehrere Seiten zu laufen.
  • Ich hatte DNS mit den Cloud-Anbietern, offene Ports für git usw. konfigurieren ...

Die Liste geht weiter. Am Ende kostete es mich mehr Zeit, nicht zu programmieren, aber ich lernte viel mehr. Wenn Ihnen das wichtig ist, dann versuchen Sie es. Wenn Sie sich darauf konzentrieren möchten, Ihren Code zu schreiben, könnte ein Node-Hosting-Provider für Sie geeignet sein.

Am Ende hatte ich auch mehr Optionen - ich wollte eine zweite Seite hinzufügen. Ich habe en Eintrag zu meinem Reverse Proxy hinzugefügt, füge mein Skript an, um eine andere App mit forever, voila, eine andere Seite zu starten. Mehr Kontrolle. Danach wollte ich mongodb ausprobieren - einfach - installiert es.

Sie sind in etwa gleich, aber wenn Sie mehrere Websites mit vielen anderen Paketen wie Datenbanken usw. hosten, kann die VM billiger werden.

Nodejitsu open sourced ihre Werkzeuge, die es auch einfacher macht, wenn Sie Ihre eigenen tun.

Wenn Sie es selbst tun, hier einige Links, die Ihnen helfen können:

Halten Sie den Server:

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

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

https://github.com/bryanmacfarlane/svchost

Upstart und Monit generischer automatischer Start und Neustart über Monit oring

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

Clusterknoten Läuft ein Prozess pro Kern

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

Reverse Proxy

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 installieren die

https://github.com/bryanmacfarlane/svcinstall

Exit Shell Script Based on Process Exit Code

Site publizieren

Using git to publish to a website

14

IMHO der größte Nachteil der Einrichtung eines eigenen Stapels ist, dass Sie Dinge wie machen Node.js laufen lassen müssen forever, starten Sie es als Daemon, bringen Sie es hinter einem Reverse-Proxy wie Nginx, und so weiter. .. das Tolle an Node.js - das Einfeuern eines Webservers zu einem einzigen Liner - ist einer der größten Nachteile, wenn es um produktionsreife Systeme geht.

Plus, Sie haben alle Probleme der Verwaltung und Aktualisierung und Sicherung Ihres Servers selbst.

Das ist so viel einfacher mit den Hostern: Normalerweise ist es ein git push und das war's. Skalierung? Einfach. Replikation? Einfach. ...? Einfach. Alles innerhalb weniger Klicks.

Der Nachteil der Hoster ist, dass Sie die Umgebung nicht anpassen können. Okay, Sie können wahrscheinlich auswählen, welche Version von Node.js und/oder npm ausgeführt werden soll, aber das war's. Sie haben keine Kontrolle darüber, welche Software von Drittanbietern installiert ist. Sie haben keine Kontrolle über das Betriebssystem. Sie haben keine Kontrolle darüber, wo sich die Server befinden. Und so weiter ...

Natürlich erlauben einige Hoster Ihnen Zugang zu einigen dieser Dinge, aber es gibt selten einen Hoster, der alle unterstützt.

Also, im Grunde die Frage Node.js in Bezug auf die gleiche ist wie bei jeder anderen Technologie: Es ist ein Pro vs con des Individualismus, Preise, Skalierbarkeit, Zuverlässigkeit, Wissen, ...

wählte ich persönlich zu gehen mit einem Hoster: Die Zeit und Mühe, die ich spare, übertreffen leicht die Nachteile. Wohlgemerkt: Für mich persönlich.

Diese Frage muss individuell beantwortet werden.