NodeJS-el kapcsolatban is hozzátenném, hogy szép és jó.. igazából újra feltalálták a spanyolviaszt (Java New I/O ugyebár, 2002), aminek azért komoly hátrányai is lehetnek:
- elég nehéz optimálisra belőni egy saját NodeJS production servert, mivel itt nem thread-ekben és tiszta terhelésben kell gondolkozni. Persze lehet a Heroku-ra mutogatni, hogy a dyno-k milyen szépen skálázódnak.. persze, csak legyen olyan cég, aki mosolyogva fizessen egy alul-optimizált app/framework miatt extra $X-t
- a másik probléma is ehhez kapcsolódik.. bár nagyon szép reklám, hogy legyen a back-end is olyan nyelven írva, mint a front-end.. ez egy nettó hülyeség. Amennyiben bárki használ még ma rengeteg pure Javascript kódot a UI-ban, akkor sincs sok köze egy NodeJS apphoz a szintaktikán kívül (amit azért meg lehet pár hét alatt szokni, még ha nem is vagy UI JS-es)
Persze, talán az event-driven gondolkodásmód közelebb áll egy UI JS dev-hez, de igazából, amikor én elolvastam pár NodeJS könyvet és ki is próbáltam.. hát azért jól átgondolni hogy is van ez a
ne blockolj I/O-
t, minden úgy történjen ahogy te azt kitaláltad, nem egyszerű. Teljesen más, mint egy átlagos PHP vagy Java back-end. Persze lehet különböző framework-ökeket használni, de hiába az aktív (bár viszonylag kicsi) community, nem sok embert láttam arról beszélni, hogy
na akkor én most megyek productionbe NodeJS appal
. Ami nem véletlen.. persze egy-egy service-t lehet átírnak nagyobb cégek, kísérleteznek, de még mindig nem terjedt el igazán.
NodeJS-nek az erőssége ha nagyon sok real-time adatot akarsz közvetíteni és ezt mindkét irányban. Akkor biztosan lehet ezzel spórolni is, bár akkor is lehet csak a kulcs-komponensnél használnám. Szóval meghazudtolom magam kicsit: ha van olyan funkció, amit csak egy bizonyos nyelv képes maximálisan megoldani, akkor persze lehet keverni a nyelveket. Szóval az egész appot nem hiszem hogy csak ezért megírnám JSben.
Én régimódi arcként fognék egy Spring 4-et, mellé AngularJS-t.. ha van bármilyen kritikus real-time cucc, akkor esetleg NodeJS (bár Spring 4 MVC tökéletesen támogatja a non-blocking I/O-t).
Főleg startup projekteknél érdemes tudni: ha valaha lesz acquistion és a product tele van egzotikus nyelvekkel.. annak ára lesz. Ugyanez érvényes a sikeres productra, amit évekig kell majd supportálni és mellé hajkurászni azokat a fejlesztőket (idővel olyan árban lesznek mint a Mainframe-esek
)
Ha hobby projekt akkor meg ezt ignoráld, jó ezekkel kísérletezni.. meg ki tudja mit hoz a jövő.