How to decide when to use Node.js?

O discuție lungă și tare interesantă despre NodeJS și când ar trebui folosit

Evident că se dă exemplul LinkedIn:

LinkedIn is a prominent user. Their entire mobile stack is built on Node.js. They went from running 15 servers with 15 instances on each physical machine, to just 4 instances – that can handle double the traffic!

Dar se pierde din vedere amănuntul experienței. Rescrierea unei aplicații (fără adăugarea de noi features) întotdeauna va rezulta în decizii mai bune de design, de performanță etc. Deci nu știu cât de relevantă este o astfel de comparație.

2 Likes

Chiar daca s-ar rescrie fara a avea decizii mai bune de design, oricum in NodeJS regandesti arhitectura destul de mult pentru ca asa te forteaza limbajul acesta de programare.
Si este destul de relevant pentru ca NodeJS nu creaza proces nou pentru fiecare conexiune, fiind tot single process. Deci cel putin din acest punct de vedere ar fi nevoie de mai putine resurse “hardware”.

Legat de discutia pe care o au ei, majoritatea spun ca atunci cand ai long-polling ar fi bine sa folosesti NodeJS. Eu l-am folosit cu succes la web scraping pentru ca intelege HTML-ul mai bine decat orice limbaj de programare si este mult mai rapid decat PhantomJS.

Node.js is built for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

Tag-line-ul lor e destul de clar, cu toate astea sunt si multe command-line tools scrise in Node, cu toate ca nu este cel mai reusit limbaj pt. asa ceva, dar cand ai un Package Manager foarte eficient si o gama larga de module existente, de ce nu.

$ npm install -g <tool>
$ <tool> some-file.txt

Simplu si eficient.

scalable network applications

Pana recent cel mai mare site pe care l-am facut (singur) are in jur de 150.000 useri, zilnic vreo 10k-15k activi. Cu un numar nu foarte mare de request-uri. Ruleaza pe un sigur VPS si procesorul nu a urcat peste 4% niciodata, decat cand se fac image resizes.

Un prieten care a facut un sistem de monitorizare pt. anumite aparaturi industriale, tensiune, umiditate, etc (se folosesc in domeniul naval), imi zice ca are un system care primeste loguri JSON in PHP care merge destul de greu si sa-l ajut sa-l optimizeze. De la senzori primeste datele prin internet si le analizeaza / stocheaza.

Si am zis hai sa vedem ce avem: 1 aparat este monitorizat de ~30 senzori, 1 senzor emite date la fiecare 500ms, un log JSON are ~1.2Kb.Are nevoie de un sistem care sa duca mai mult de 1000 de aparate sub monitorizare.

1000 x 30 x 1.2kb => un flux de date de ~75MB + ~70.000 conexiuni / secunda

Momentan are vreo 117 aparate sub monitorizare si se descurca excelent in Node.js.

3 Likes