Ich habe eine Node.js-App geschrieben und möchte sie auf einer unserer Produktionsmaschinen zum Laufen bringen. Dies scheint eine ziemlich häufige Anfrage zu sein, aber ich kann keine adäquate Lösung finden. Gibt es keine etablierten Lösungen für die Bereitstellung von Node.js-Apps für die Produktion?
Die App ist einfach (<100 LOC), muss jedoch sehr effizient und zuverlässig sein und kann jahrelang ohne Neustart kontinuierlich ausgeführt werden. Es wird auf einer großen Site mit Dutzenden von Verbindungen pro Sekunde ausgeführt. (Die App wird nicht als Webserver verwendet, sondern verfügt nur über eine JSON-API.)
Hier sind die Ansätze, über die ich nachgedacht habe, bei denen ich mir jedoch noch nicht sicher bin:
Verwenden eines Frameworks (z. B. Express)
Da die App eine hohe Leistung haben muss und so einfach ist, möchte ich das Hinzufügen von Aufblähungen in Form eines Frameworks vermeiden.
Starten des Servers mit nohup
Das Hauptproblem hierbei ist die Ausnahmebehandlung. Wir möchten (offensichtlich) nicht, dass der gesamte Server aufgrund einer Ausnahme abstürzt. Soweit ich weiß, try {} catch {}
hilft es nicht , die gesamte App in eine Schleife zu packen, da der Javascript-Interpreter nach einer Ausnahme in einem unvorhersehbaren Zustand bleibt. Ist das korrekt?
Mit so etwas wie Forever
Ich habe Forever auf einem unserer FreeBSD-Computer installiert und es war sehr fehlerhaft. Es kam zu endlosen Prozessen, die von Forever nicht getötet werden konnten. Ich musste laufen kill -9
, um meine Maschine zurückzubekommen, und ich bin mir nicht sicher, ob ich eine Produktions-App auf Forever ausführen soll . Es scheint auch, dass Upstart (ähnliches Tool, aber allgemeiner) unter FreeBSD nicht ausgeführt werden kann.
Gehostete Lösungen (z. B. Heroku, Rackspace, Amazon EC2 usw.)
Dies ist wahrscheinlich die einfachste Lösung, aber wir haben bereits die seriöse Hardware für den Rest unserer Webserver. Aus finanziellen Gründen macht es keinen Sinn.
Sicherlich muss es dafür eine etablierte Lösung geben? Vermisse ich etwas