7 ms·
Why Node.js is becoming the go-to technology in the Enterprise
- deleted 12y ago[deleted]
- amrit_b 12y agoThen why no job?
- wasd 12y ago> The old story of linkedin where moving to Node.js from Rails > for their mobile traffic, reducing the number of servers from 30 to 3 >(90% reduction) and the new system was up to 20x faster. It isn't as simple as that. There was a great article from a former linkedin engineer about why the original API server was so slow. [0] [0]: http://ikaisays.com/2012/10/04/clearing-up-some-things-about-linkedin-mobiles-move-from-rails-to-node-js/ http://ikaisays.com/2012/10/04/clearing-up-some-things-about...
- awj 12y agoYeah, of course the thing was faster. I would be upset if you didn't get this result after rewriting from a crufty old system that was never intended for the purpose it's serving into new code that uses appropriate technologies and benefits from all of your experience. Other than Rails vs. Node as an appropriate platform for proxying slow api requests, the technology involved is basically irrelevant here.
- mantrax5 12y agoThe real reason is quite simple. And I'm not trying to be bitter or anything, rather think like a businessman. The reason is... it's full of JavaScript kids out there, and because they're so many, they're all replaceable, and cheap. Like the commodity hardware servers they're programming. It's neat to cast this as "easy to attract and retain talent", but "rapid innovation" and "developer happiness" (especially considering the lack of strict typing, lack of basic primitives, single threaded-ness and callback hell of Node.JS) are just B.S. reasons of the kind a Node.JS consulting company would add so it doesn't all look so cynical.
- colechristensen 12y agoJavaScript is the new Java... sigh.
- emanuelsaringan 12y agoWell you are right in a sense that JS is becoming the new de facto WORA (Write Once Run Anywhere) platform that Java was. i.e. Mobile: Android v. Sencha Embedded: Java ME v. Raspberry pi Desktop: Swing v. node-webkit Web: JavaEE v. Express I believe Java went through this phase as well in the 90s wherein developers from other languages got excited about its future and started jumping away from COBOL, etc.
- politician 12y agoThe ethnicity of the workers who pick the fruit is of lesser concern than the wages they agree to work for.
- deleted 12y ago[deleted]
- deleted 12y ago[deleted]
- chrramirez 12y agoTrying to sell Node using soft arguments: "Argumento ad populum" and "Argumento ad novitatem", which BTW are fallacies. No technical arguments, no polls, no facts. Just fallacies.
- dubcanada 12y agoAnd then as soon as Derpys Mansion new language comes out all the newcomers will flock to that and you're entire staff will leave to go work for some startup. The reason why "Enterprise" uses the software they do is not because it's the fastest, or most suitable for the job. It's that it's been in production for many years and has a large ecosystem and strong commercial backing. Along with a strong workforce that isn't going anywhere. Not that I don't think NodeJS awesome. The javascript language is just a bit meh for Enterprise development. I'm not sure if you've ever seen "Enterprise Javascript" but I sure as hell would not want to see "Enterprise NodeJS" I would much rather see a strong typed compiled language that requires things to be done a certain way. Rather then the clusterfuck of libraries NodeJS comes with. Just my 2cents...
- stcredzero 12y agoType annotations are indeed useful for maintaining large projects. Even in dynamic languages, a lot of maintaining a large project is effectively type discipline.
- mst 12y agoPERL -> PHP -> Rails -> (node|go) I say PERL advisedly, since the Perl I write in is nothing like the horrors perpetrated circa 2001. I have friends in the ruby community who're also looking forward to the uncaring hordes stampeding elsewhere. After all, these are people who managed to make PHP4 look like a worse language than it actually was :)
- twistedpair 12y agoAmen. I'd add that while JS is great for form validation, trying to make it into a first class language is a bit laughable. For example, if you want to define a function in a namespace, it's up to you which half dozen "patterns" you use to emulate namespaces in the language that lacks them. Same goes for private method/variables, continuations, classes... or more features of other common language. Add to that the type coercion cluster and the ability for attackers to redefine core language types (make 1 evaluate to false) and JS is still a bit of a anything goes wild west of a language (first class functions are fun). FWIW, I've written a few 100KLoC of production JS code, but man, I'd really rather use Java/C#/PHP as everyone in JS land has to bend over backwards to try to have the features that are standard out of the box in other languages.
- beering 12y agoThese stories about switching to node are pretty funny: "I switched from a dump truck to a motorbike and now I can drive way faster!" Node.js isn't really faster than most other popular languages with an evented library, but if switching to Node involves scrapping years of enterprise cruft, then maybe it's worth it. By the way, enterprise adoption of Node is surely a sign that we need to jump ship. Glad I got out of Rails before enterprise adopted it!
- kbanman 12y agoI don't think enterprise ever has or will adopt Rails. Even node.js isn't at the point where it can really be considered "enterprise". Java is dead. Long live Java!
- kpatrick 12y agoSAP uses Rails for some of its products.
- jzumbrun 12y agoPaypal uses node.js extensively. https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/ https://www.paypal-engineering.com/2013/11/22/node-js-at-pay.... They even open sourced their implementation of it: http://krakenjs.com/ http://krakenjs.com/
- vdaniuk 12y agoWhat did you switch to after abandoning Rails? I consider the tooling and rails ecosystem to be the best for small, agile projects and I'm really interested in the alternatives.
- beering 12y agoI switched to node.js because it was the trendy new thing and I could charge 3x the rate of boring mainstream programmers to deliver the same product, except worse (because it's node.js). I need a new thing though, since apparently node.js is getting too mainstream. Maybe if I can convince enough businesses that they NEED clojure, then I can go that route.
- CSDude 12y agoI develop with Node since it is 0.4, and I can safely say that Node is as good as your abilitiy to manage callback hell. If you can, it is pretty awesome, however you need to study some patterns for that, otherwise it is messy.
- iamwil 12y agoI had used node.js for about two years, and it's not without its share of pain. Trying to find some way out of callback hell, and then finally adopting a rack-like way of writing the controllers, it's somewhat manageable. It takes quite a bit of getting use to, think and write in promises, futures, or whatever other shenanigans we come up with to deal with callbacks. I suspect it's a weakness of the language design, bent to the will of the reactor pattern. I can't imagine what sort of enterprise cruft will layer on when people are doing that with callbacks, etc.
- moomin 12y agoIs it just me or does this look like Jenn Schiffer wrote it?
- SideburnsOfDoom 12y agoThe article says "good developers like to learn new things and to use new technologies" ... therefore the language that's briefly cool this year is an excellent bet for your enterprise's long-term future. Right.
- antjanus 12y agoOn top of that, "Killing legacy code and rewriting hacks into permanent solutions yields speed improvements!"
- EGreg 12y agoActually with HHVM, PHP is faster than Node.js! Facebook developers can sometimes outperform Google developers, although the comparison has a lot of extaneous variables here :)
- frik 12y agoTrue, and HHVM is awesome. Where Node.js shines is Web Sockets and similar things. But one can use libevent with PHP (though not as easy). I found some useful comparision benchmarks on that site: http://www.techempower.com/benchmarks/#section=data-r9&hw=i7&test=query http://www.techempower.com/benchmarks/#section=data-r9&hw=i7...
- EGreg 12y agoDo you know of a way to use libevent to make concurrent queries to mysql? Or mysqli to do this? I mean hitting MULTIPLE database servers / shards. That would speed up my php by a lot. I an cache results of queries in PHP but can't batch things together before they are sent. In JS I can wait for 50msec to do requests in batches. That lets higher lawyers (ViewModels) query the model without worrying about batching!
- frik 12y agoIO related PHP API are a problem, one needs non-blocking functions for optimal performance. Sorry, as HHVM doesn't expose libevent yet (at least last asked the devs on IRC), I moved some portions of my code to node.js for now. (plus HHVM relies itself on the older libevent 1.4, instead of the 2.x that PHP exposes as API) I would be interested in the answer too. Maybe ask it on stackoverflow.com or so?
- yid 12y agoIt's a little tiring to see some of the same old fallacies about Node repeated ad infinitum in this thread. I suspect a lot of the complaints stem from poor development practices or not understanding norms in JS. JS isn't without its flaws, but can we at least put a few fallacies to rest: > callback hell There's no reason to be in callback hell if you use an asynchronous control flow library and stick to the standard style of function signatures. I love @caolan's async [1]. In particular, there's a control flow pattern called `auto` that really (IMO) demonstrates some of the power of async programming: it's a full dependency graph resolver [2]. > single-threaded There's the cluster module, but nevermind that -- you can always just use the child_process library [3] to access spawn() and fork(). Remember those? Processes are a more nautral match for distributed computing than threads anyway. > lack of strict typing Strict typing won't make you a better developer, and you can enforce some degree of type correctness with Closure compiler annotations. [1] https://github.com/caolan/async https://github.com/caolan/async [2] https://github.com/caolan/async#auto https://github.com/caolan/async#auto [3] http://nodejs.org/api/child_process.html http://nodejs.org/api/child_process.html
- codystebbins 12y agoAnother upcoming method to avoid callback hell that is my personal favorite is harmony generators and yield. Reminds me so much of C# async. Two great libraries can handle it today on beta versions of node [1,2]. I have only used suspend. See this gist for comparison https://gist.github.com/codystebbins/a2c354d25ce28879bfe1 https://gist.github.com/codystebbins/a2c354d25ce28879bfe1. With generators try/catch can be used, avoiding a lot of the redundant error handling. Crabdude's library can avoid the overhead of try/catch [3]. And if developers want static typing, they should check out TypeScript. Works great with node. [1] https://github.com/jmar777/suspend https://github.com/jmar777/suspend [2] https://github.com/visionmedia/co https://github.com/visionmedia/co [3] https://github.com/CrabDude/trycatch https://github.com/CrabDude/trycatch
- jebblue 12y ago>> Strict typing won't make you a better developer It won't make you a worse developer either. Loose typing can make you a worse developer because it's easier to make mistakes that sometimes aren't caught until after it's in production.
- badman_ting 12y ago“Why go to Facebook and do PHP when you can go to PayPal and do Node.js” Why choose the company you work for based on technology when you can choose the company you work for based on the company you will be working for?
- billmalarky 12y agoI thought that was pretty funny line as well. Say what you will about Facebook, but next to Paypal Facebook looks like one of the most innovative companies in tech. Who cares what you are programming in if the product isn't exciting. Heck even Elon flat out called paypal a dinosaur recently.
- gss77 12y ago"OUR THOUGHTS. YOUR EXPERT TECHNOLOGY ADVISORS" Quite possibly the most arrogant tag line I've ever read.
- m1117 12y agoDepends on the purpose, I always find rails more fun due to large community contribution and huge number of gems that work well, very convenient active record etc.
- deleted 12y ago[deleted]
- noir_lord 12y ago"the main backend node.js consulting company in Europe" asserts that Node.js is becoming the go-to technology in Enterprise. Provides a couple of big name companies and essentially zero evidence. This is fluff at best.
- bowlofpetunias 12y agoSomebody should start a "Vogue for Developers", so we can just stop pretending. Most of this article and most of this thread is about fashion, not technology. But that applies to a lot of topics on HN.
- VLM 12y agoUnfortunately its not a startup topic. Decades ago we used to absolutely dread seeing a non-technical manager walk into a meeting with a copy of PC Magazine or similar, knowing that we're about to be lectured about "how it really is" and "the right way to do everything".
- williamcotton 12y agoI frequently write modules that I use on both the client and server side of a web application because I'm writing in the same language on both the client and server. This sort of convergence is why node is so popular. Pretending like this is some sort of fashionable trend like bell-bottoms is just plain silly.
- markbnj 12y agoThere are some good points in the piece, but aside from "You can easily hire people to work on the latest hot thing" the benefits boil down to some back-end architectural patterns that make good sense, and are achievable on many different stacks. We too build "small modules piped together" however we use python, java, and redis or rabbitMQ for the plumbing. I have some problems with python as an enterprise development language, but many more with JS. Lately my colleagues and I have been talking about Go a bit, so we'll see where that... um... goes.
- eldelshell 12y agoReally? [/me searching job postings for Node.js] NOT!!! But hey, the more developers jump ships to Node the more money I make. Look at the Cobol guys and their salaries.
- thsealienbstrds 12y agoArithmetic has a uniform syntax. Here’s an argument for standardizing the syntax of well understood programming concepts: "Node.js programs are developed using JavaScript, this means that the silos that existed between frontend developers and backend developers are now broken down, and this results in significant efficiencies in the development process. With Node.js it’s possible to merge web and backend teams into one unit which makes things much more efficient."
- wwweston 12y agoI'm currently a tangential part of a project that just went from being a Java backend/middleware project with a Flash front end, to a Java backend with and HTML/JS/CSS frontend with a node-ecosystem build/package tools. Two weeks ago I complained that we have two build tools (ant and grunt) and three package managers (ivy, bower, and npm) involved... but doing a build/deploy is a 5-step manual process that results in dependency errors. This week things have improved -- the first build is a dozen manual steps, subsequent builds are only 2-3 steps, and though the deployment seems to be botched, there are no dependency errors. Not sure how I feel about enterprise node.js.
- dang 12y agoThis article is promotional fluff. It has also been submitted more than once before. We're going to bury the post. Please don't post it again. https://news.ycombinator.com/item?id=7401564 https://news.ycombinator.com/item?id=7401564 https://news.ycombinator.com/item?id=7397637 https://news.ycombinator.com/item?id=7397637
- EvenThisAcronym 12y agoOn the bright side, if Node.js is adopted for "enterprise programming", all the hipsters that write blog posts about how great Node.js will abandon it overnight.
- voidr 12y ago> With Node.js it’s possible to merge web and backend teams into one unit which makes things much more efficient. That sounds good, however in practice it's not that much.