Node.js on the Road: Bringing Node to the Enterprise

Node.js on the Road is an event series aimed at sharing Node.js production user stories with the broader community. Watch for key learnings, benefits, and patterns around deploying Node.js.

Sharing our experiences of what's involved when bringing a node platform on premises in The Enterprise.

Marijn Deurloo CTO

Oh! my God, who is this old guy? This is usually how it starts when I look at a room like this. Actually, the story you told about Node and where you are at the moment reminds me a lot of, yes I'm from a previous century, 1980, where we had something like Perl and we had the same kind of community feeling, the same kind of all—I'm going to get back to it later on in the presentation but it gave me this flashback to the 80s. So what's the old guy doing here?

I'm here for a company called imgZine, and actually the guy who was supposed to speak here is called Kerim. He will probably be speaking at next events, I usually try to avoid speaking in public. I hate it. And I want to tell a little bit about imgZine first. So imgZine is a very young startup, started in 2011—end of 2011 actually when we saw the iPads in the US and we saw applications like Flipboard, Zite, Impulse etc, appear and coming from a media background (which is my background, I'm a developer for a lot of media companies), I was really amazed how people were actually using the iPad and these applications, in a completely different way. It was changing their reading behaviour, and that's what really excited us, and we said, well, let's try to bring that to Europe as well. So we actually called the CTO of Flipboard (we knew him from a previous occasion), and we asked him if we could white label their platform for Europe, and they laughed and they said, well, we couldn't, so we said, OK we'll build our own, and that's exactly what we did.

In October, we started with the first few people, some of them are in the audience actually, we started building a platform to provide all companies in Europe with something which enabled them to create Flipboard-like application, that's where it started. In the past few years, we've grown a little bit so we're now 40 people. We've built over 200 apps now for large companies as well as media companies, and actually we've moved a little away from being the Flipboard platform, more to being Zite like platform. I'm not if sure you're familiar with Zite, but the big difference between Flipboard and Zite is actually the smartness inside.

So what we decided to do in 2012–2013 is start to study reading behaviour within the apps, and using that with advanced machine learning algorithms to help people find relevant information. So recommended content, and that's where we're at right now. Well, we found a niche, our own niche, we started in the media space but we ended up in the enterprise where our platform is being used to engage between the companies and their employees, and the companies and their customers actually.

And over the past few years, we've really grown quite a significant customer base. I'll show you a little bit of our platform as well. This is actually what our platform looks like, so it's several layers. We import lots of sources, we have a platform where we store all kinds of content, and we process it, and we try to do topic detection and stuff like that to do smart recommendations.

And we have a lot of security, and I'll get back to that later as well. Then we have the imgZine app core where we build our semi-native apps, and those are deployed for large customers like ING, ABN AMRO, the Dutch IRS, and actually we did the app for the Nuclear Security Summit which was here a few months ago and well took over the country.

Going into the enterprise is really what this conversation is going to be about. So first, why Node? because like I said, I come from a Perl background so why switch over? Mainly that's not because of performance, cost, price, stuff like that, it was mainly because Perl programmers like me were getting just impossible to find. There are hardly any, and if they're there, they are working for Booking.

On the other end, we started developing our native apps from day one in an environment called Titanium from Appcelerator, where we started building stuff in JavaScript, so during our rise, we really attracted quite a few strong JavaScript programmers, so it was, I think, November last year, when I decided to switch over to a new environment, and I started looking for what would be the next level of platform and development language that we could use within our company. And then after investigating quite a few like Java, PHP, Python (we actually did a few experiments in Python as well), I found out that Node.js actually is JavaScript, which is cool because we have a lot of guys doing JavaScript, but also it's very similar to Perl, so NPM for me equals CPAN. So all the good things that I knew from Perl, and why we were building everything in Perl came with Node.js. So it actually took me three weekends to transfer our whole platform and the whole backend to Node.js, because everything was so similar. So it's actually the next generation Perl for me. If you look at architecture and stuff, there's lots of other reasons that I'm not going to mention like performance, etc, just to give you a few numbers, I have them down there.

We actually have a few customers that did performance testing for us, and we found out that moving from our Perl platform where we were able to hit 75 requests per second, we actually moved to 8000 requests per second by moving to Node. So yeah, there's also that's when you want to move to Node. Stability is also a big issue, I'm going to talk about it a little bit more with pm2.

So it was a real investigation the past few months to find out which tech we were going to use to be able to operate our stable platform because we didn't have any down time in the previous three years on our platform, how we could build that in another environment. And then something weird happened.

And that's what I'm going to talk about. It's a different world. It's a different world that many of you may never see. It's a world which is called the enterprise. Because we had large customers like ABN AMRO, and ING, and the Dutch IRS and the national government, they all requested to run our platform on premises.

And then something really weird happens. Because then you meet guys that are going to start asking questions about ITIL, about corporate security, they bring their security officers which are CISSP certified people, and you have to respond to all kinds questionnaires, and fill out all kinds of documents, and convince them that what you have in your platform can actually run in the enterprise, and they're really reluctant to change, and they're risk averse, and they're used to stuff like Java, .NET, some PHP maybe.

That's it. No cloud. It gets even worse. The first time you go to their data center, they don't have internet and then it becomes a real challenge to start installing your stuff on Node.js because you have to bring in all your packages; you have to script everything and make RPMs out of everything that you have in your stack and it has to be flawless because their system administrators are going to install it, it's not you who's going to install it on their systems, they are going to install it and the manuals have to be very precise.

So if you copy/paste an extra space, you get rejected, and this brings a whole new dimension. We were not prepared for it, so it took us months to get ready for this position and to be able to run in those situations. So how do you do it?

I think that we're kind
of a weird company, I was talking to some people about this earlier this evening that I'm the old fart, and in the management layers but also in the development team, we're mixed between some very young people, I would say that about 80% of the people in our company are like between 23 and 30 or something, and some very, I call them experienced people, I think Bert is like 57, I think, which is our oldest guy but well you can imagine that somewhere between 40 and 50 is where some of the other people are. And the good thing about that, is that builds trust, so for IT departments for large companies, that's really what's required, because they don't do business with startup people who are like 22 and they're really convinced that their platform is everything and runs really solid etc, because there is no trust in their expertise, in their relationship yet.

Skilled devops, you have to bring skilled devops to these situations, you have to be on site and bring the best people out that you have, to help them build trust in your product. They want to trust your product because they want to buy it, but you will have to help them to buy it and to be able to trust you.

You have to comply with their structure. Like I said, there is no internet in the data center so no NPM for anything that you forgot to bring with you. There's no memory sticks that you can just plug in with any modules that you have right there, because there really is no internet. Everything needs to be under RPMs and everything needs to be in ITIL ops manuals and it's really, really, really tedious to write ops manuals, I can tell you.

So our lessons learned so far, keep it simple. Have a really, really, really good team. And I think that's where we excel, everyday I still enjoy going to our Amsterdam office and seeing the energy in there and the skilled people in there who really make our company.

Security, you touched on it a little bit.
Security for this enterprise-class customers. It's like the number one issue, not only because they will be vulnerable, but also because of their image being hurt by your stuff not performing or your stuff breaking down. Very strict coding, studying error logs. It's a weird thing but because there's all those kinds of tricks to avoid looking at error logs but I still think that looking at error logs is the best way to find where your code breaks.

Fix stuff fast, to build the trust again. Do internal code reviews, and communicate, communicate, communicate. Your stuff will breakdown, and they know it. But as long as you communicate with them, you start building on the trust, and they start trusting you. And a good thing, and that's actually I've been telling a lot of bad stuff about the enterprise right now, but there's one good thing; once you're in, it's really hard to get out.

For completeness, I've included our current standard hall of fame of the packages that we currently bundle in our stack and bring to the enterprise. I'm sure it's a familiar set for lots of you, I hope, and well, if you have any questions please contact me or actually contact Kerim, he'll enjoy it a lot.

He's at Velocity, I think, so he couldn't make it here, and I'm jealous because I wanted to be at Velocity first. Contact me if you have any questions. Thank you.

Sign up now for Instant Cloud Access Get Started