Enterprise NodeJs architectures and deployments?

262 views
Skip to first unread message

manwood

unread,
Sep 16, 2014, 5:21:25 PM9/16/14
to nod...@googlegroups.com
I'm looking to build a case for using NodeJs at work (a fairly conservative and risk averse environment). 

Can people point me to any examples of large enterprises, or high traffic web applications, using currently NodeJs? 

Ideally I'm looking for blogs or discussions around proper, real-world architectures and tech stacks, any problems they've overcome, lessons learned, stories from the trenches etc. 

I have seen FogCreek's Trello for example - I'm looking for more like this.

Thanks

Adrian Lynch

unread,
Sep 17, 2014, 11:26:32 AM9/17/14
to nod...@googlegroups.com
Look-up Walmart's Black Friday + Hapi stories.


Adrian


--
Job board: http://jobs.nodejs.org/
New group rules: https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
---
You received this message because you are subscribed to the Google Groups "nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nodejs+un...@googlegroups.com.
To post to this group, send email to nod...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/nodejs/a0c19ac2-4e12-4494-bc5c-e9840230f280%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Bruno Jouhier

unread,
Sep 17, 2014, 5:50:08 PM9/17/14
to nod...@googlegroups.com
We (Sage) have been using node.js heavily in the new version of our mid market ERP product (Sage ERP X3 V7). This is not "large enterprise", rather mid-market but the fact that node has been chosen by an ERP vendor may help you sell your story. 

Bruno

Aria Stewart

unread,
Sep 17, 2014, 10:02:16 PM9/17/14
to nod...@googlegroups.com


On Tuesday, September 16, 2014 2:21:25 PM UTC-7, manwood wrote:
I'm looking to build a case for using NodeJs at work (a fairly conservative and risk averse environment). 

Can people point me to any examples of large enterprises, or high traffic web applications, using currently NodeJs? 


PayPal is sending a large portion of our web traffic through node.js apps. It doesn't get much more 'large enterprise and high traffic'! 

Aria

Jonathan Cardoso

unread,
Sep 17, 2014, 11:35:38 PM9/17/14
to nod...@googlegroups.com

Michael Matuzak

unread,
Sep 17, 2014, 11:38:54 PM9/17/14
to nod...@googlegroups.com
We (Yahoo) are using it for a bunch of different things. Check out the Node on the road video series from Joyent. They specifically have enterprisey companies that are using node talk about their experiences.



On Tuesday, September 16, 2014 2:21:25 PM UTC-7, manwood wrote:

Joe McCann

unread,
Sep 18, 2014, 8:14:23 AM9/18/14
to nod...@googlegroups.com
I gave a talk at Node Day back in February called "The Business Case for Node".  This covers business benefits and technical benefits.


JSManiacs

unread,
Sep 18, 2014, 12:21:59 PM9/18/14
to nod...@googlegroups.com
There are many large enterprise grade companies running Node.js at various capacities.  

Here is a good deck from Jeff Harrell at PalPal that is helpful answering your "lessons learned" request http://www.slideshare.net/jeharrell/9-antipatterns-for-nodejs-teams 

This is a great blog post with slides done by Netflix on leveraging Node.js for A/B testing http://techblog.netflix.com/2014/08/scaling-ab-testing-on-netflixcom-with_18.html

Also this is a good article published that highlights very large companies that have adopted Node.js https://developer.salesforce.com/blogs/developer-relations/2014/09/explosive-growth-javascript-npm-enterprise.html

Hope this helps. 
@ryan_stevens

manwood

unread,
Sep 18, 2014, 2:26:32 PM9/18/14
to nod...@googlegroups.com
Bruno - interesting, do you have any blogs, or can you give me any detail on how you're using it? Where does it fit in your architecture? 

Thanks

Bruno Jouhier

unread,
Sep 18, 2014, 7:37:06 PM9/18/14
to nod...@googlegroups.com
Hi manhood,

I have a blog and I have written several posts about node but I haven't covered the architecture of our product and I haven't given much details about our project. I have rather focused my posts on tools and libraries that we have developed to ease node.js programming and that we have published in open source. As you will see in the blog, I've also had contentious discussions with other noders because I've often been promoting a "different" approach to node programming.


Open source projects: 
https://github.com/bjouhier/node-lol (we don't use this one in our ERP :-)

In our V7, we have done several big changes to our application. We have:
  1. rewritten all our clients: a new web client, a new mobile client, new Office add-ins. We are dropping our win32 fat client completely.
  2. replaced our Java web stack (almost all of it) with a new stack based on node.js,
  3. rewrittten a new admin module (technical admin + user admin + management of UI personalization) in node.js + mongodb
  4. introduced a search service based on Elastic Search.
  5. upgraded our traditional ERP kernel (C + proprietary 4GL language) to fully support Service Oriented development (putting service orientation at the heart of the product, not delegating it to some kind of middleware tier).
 We have made a big bet on JavaScript 4 years ago: our new clients (except the Office add-ins) are HTML and JavaScript (lots of jQuery initially but we decided to drop support for old browsers and we are now going directly to DOM APIs for performance - we sometimes have to display big data sets). But we also chose JavaScript for the server side (a lucky move as node got a lot of traction). The idea was not so much to share code between browser and server (we share a few modules) but to build a strong common technical culture and keep things simple.

Node is really central in our new architecture because our node server acts as a smart proxy between all the pieces of the puzzle. All the requests from all clients go through our node server, which acts as a smart proxy and connects to all our backend components. Our node server does not connect directly to the ERP database (Oracle or MSSQL) but it talks to our ERP engines (a C interpreter that executes proprietary 4GL code) through a proprietary binary protocol. We also wrote our own load balancer in node.js.

Our new architecture is very RESTful (in the HATEOAS sense of it ). I'll blog about it when I get the time.

Our JS code is all written with CommonJS modules (node's flavor, and we have a small infrastructure that makes it work transparently and efficiently client side). All the server side async code is written with streamline.js (a language tool that I published in Jan 2011).

We are using a few 3rd party modules (mongodb-native, pdfkit, commander). We are using qunit (node-qunit server side) for unit tests. I'm not a big fan of smallish 3rd party modules that solve little problems that we can easily solve ourselves but when there is a big problem to solve (fast mongodb driver, PDF generation) and a good module for it (with the right license) I go with it.

The callback model was a showstopper for us: too fragile, too difficult to read and maintain (we started with it).  We needed something simple and robust. We also had to be able to bring new developers quickly up-to-speed on the project. IMO the callback model is cool for systems guys who write low level I/O code but not for application developers who write lots of rather mundane business logic. These guys don't care about async I/O, they care about writing their logic in a natural and maintainable way. If we hadn't found a solution to this problem (streamline.js, fibers came out a few days later) I am not sure that we would have continued with node (note: we tried promises too but they did not cut it).

This was a difficult project and it took 4 years to complete it. But most of the difficulty did not come from node itself (I think we had the right approach to keep it simple) but from the complexity of the existing ERP product. We are in a world that expects strong backward compatibility and when you make such big changes to the technology stack, it takes a lot of energy to put all the pieces back together and catch up with every feature that used to be there before.

The nice thing is that we made it. The product has been released and well received by partners, customers and analysts. We still have a lot of work to do but we have caught up and we have a great platform that should allow us to innovate at a fast pace. JavaScript is a jewel: simple, accessible, and versatile (functional, O-O, procedural - you pick what's best for your problem and you can mix and match). Looking back, node was a great choice and I would do it again 100 times.

Hope this helps.

Bruno

manwood

unread,
Sep 19, 2014, 10:10:36 AM9/19/14
to nod...@googlegroups.com
Brilliant stuff, thanks Bruno.. will go through all of that. Thank you.
Reply all
Reply to author
Forward
0 new messages