it-swarm.com.de

Wir haben eine große Ruby on Rails -Anwendung (25 Millionen monatliche Benutzer)). Unser Management hat beschlossen, Node.js neu zu schreiben. Bin ich verrückt?

Bitte sagen Sie mir, wenn:

  • Node.js macht unsere Seite schneller!
  • Node.js verbraucht weniger Serverressourcen, wir können Geld sparen!
  • Node.js macht uns produktiver!
  • Node.js bedeutet, dass wir clientseitigen und serverseitigen JavaScript-Code gemeinsam nutzen können.

Zur Verdeutlichung schreiben wir einen Frontend-Server neu, der mit unserer vorhandenen Ruby on Rails -Anwendung als API) kommuniziert. In der Zwischenzeit werden wir unsere umgestalten Ruby on Rails Anwendung in Dienste.

Weitere Details zur vorhandenen Architektur:

  • Memcached für das Zwischenspeichern von HTML-Partials
  • Redis für Sitzung und strukturiertes Daten-Caching
  • MySQL einzelner Master, mehrere Slaves
    • Es gibt eine große Tabelle, die viele Schreibvorgänge akzeptiert (stellen Sie sich eine Umfrage vor).
    • Ansonsten liest meistens.
  • MongoDB für einige Metadaten
  • Ruby on Rails 3.0
  • nginx und Einhorn
24
user88487

Die meisten der Fragen, die Sie stellen, sind nicht ohne Kontext zu beantworten und mehr oder weniger umstritten, da das Management bereits die Wahl für Sie getroffen hat ... es sei denn, Sie fragen: "Soll ich angesichts all dieser Veränderungen kündigen und einen neuen Job finden?" ? '

Wenn Sie es schwer haben wollen, empfehle ich Ihnen, diesen Beitrag zum Thema zu lesen: Wie man eine Grundumschreibung überlebt, ohne den Verstand zu verlieren .

Ich habe kürzlich begonnen, ein bisschen Serverlogik in node.js neu zu schreiben. Der Hauptgrund war, dass es derzeit in .NET geschrieben ist und wir später von MS-Umgebungen weg migrieren möchten.

Meine bisherigen Erfahrungen waren positiv, Sie werden eine anfängliche Lernkurve mit all der Nichtblockierung haben, aber sobald Sie darüber hinweg sind, macht es tatsächlich Spaß, darin zu programmieren. Ich weiß, SPASS!

Es hat jedoch eine dunkle Seite, jeder Mann und sein Hund, der eine Front-End-Entwicklung mit JavaScript durchgeführt hat - und das wäre hoffentlich jeder Front-End-Entwickler -, wird ein wenig aufgeregt, wenn Sie erwähnen, dass node.js serverseitiges Javascript ist Dies bedeutet jedoch nicht, dass Front-End-Entwickler über die erforderliche Erfahrung verfügen, um gute serverseitige Apps zu schreiben.

Eine Sache, die Sie in Betracht gezogen haben, ist, dass ein schwerwiegender Fehler die gesamte App zum Erliegen bringt, da sie nicht mit Threads versehen ist. Die Einsätze sind also etwas höher und Sie müssen alles explizit überprüfen und abfangen.

Für diejenigen, die sowohl Front als auch Back gemacht haben - und beides genießen - ist es ein echter Bonus, die mentalen Kontexte nicht von Front-End- zu Back-End-Sprachen wechseln zu müssen, was meiner Meinung nach letztendlich die Produktivität in unserem Team steigern wird.

22
dave.zap

Nun, ich denke nicht, dass das Umschreiben der Anwendung eine gute Idee war, es sei denn, sie lief schlecht. So beantworten Sie Ihre Fragen:

  1. Node.js ist keine Magie. Ihre Anwendung hat eine große Anzahl von Benutzern, sodass Sie nicht sicher sein können, dass sie dadurch schneller wird.

  2. Ja, Node.js verbraucht tatsächlich weniger Serverressourcen. Sie können also nicht nur Geld für Ressourcen sparen, sondern auch mehr mit den vorhandenen Ressourcen tun. Dies liegt hauptsächlich an der Single-Thread-Natur von Node.js. Es gibt keinen Overhead für zusätzliche Threads.

  3. Wieder ist Node.js keine Magie. Trotzdem könnte darin etwas Wahres liegen. Node.js hat eine sehr aktive Community, die Hunderte von Modulen für jede mögliche Aufgabe erstellt hat. Es ist also sehr wahrscheinlich, dass der größte Teil der Arbeit für Sie erledigt wurde. Sie müssen nur die Teile zusammenfügen.

  4. Theoretisch ja. Da Node.js JavaScript ist, können Sie Code zwischen Client und Server freigeben. Aber ich weiß nicht genau, was geteilt wird. Ich habe keinen Code geschrieben, der auf einem Client wiederverwendbar war. Dinge, die wir auf dem Server tun, haben normalerweise nichts mit dem Client zu tun. Wichtiger für mich ist das Fehlen eines Kontextwechsels. Ich finde es einfacher, sowohl auf dem Client als auch auf dem Server in einer einzigen Sprache zu codieren.

Da Node.js Single-Threaded ist, kann es nicht mehrere CPUs nutzen, es sei denn, explizit konfiguriert .

Schauen Sie sich auch die Kommentare an. Sie bieten einen guten Einblick in die Funktionsweise von Node.js.

8