Whitepaper

The MEAN stack

The technology behind India’s Adhar card and CERN’s Large Hadron Collider

MEAN is a full-stack breakthrough JavaScript platform designed for web applications.  The components of the MEAN stack include MongoDB, a NoSQL database, Express.js, a web applications framework, Angular.js, a JavaScript MVC framework for web apps and Node.js, an advanced software platform for scalable server-side and networking applications.

Why MEAN?

The Web is Changing

The web used to be about consumption but it has now become more about interaction. Users around the world want to interact with each other, and they want to do it in real time. Chat, gaming, constant social media updates, collaboration – each of these features requires real time communication between users, clients, and servers across the web. What’s more, this real-time communication needs to happen at massive scale, supporting hundreds, thousands, even millions of users.

So what do software engineers need to make this happen? We need real-time communication between clients and servers – which means we need fast, persistent I/O. Anyone with web development experience knows that HTTP wasn’t built with this use case in mind. Large numbers of clients continuously polling a server simultaneously is incredibly slow and inefficient. To enable scalable real-time communication, servers need to be able to push data to clients, instead of HTTP’s heavy request/response model. We also need to make sure that these lightweight push communications work in a way that is scalable, maintainable, and usable from a software development standpoint.


The Rise of Node.js

Over the last 18 months the use of Node.js has grown at an exponential rate, it has moved from innovators such as Voxer and Yammer to a group of early adopters that are giving Node.js the credibility required to take it into the mainstream. E-Commerce giants WalMart and PayPal have made big bets on Node while the likes of the world’s most read news publication: – The Mail Online have implemented Node.js and Netflix are now in the process of implementing Node.js too.

Why Node.js?

Node gives Azure users the first end-to-end JavaScript experience for the development of a whole new class of real-time applications. — Claudio Caldato, Principal Program Manager, Microsoft


Rapid-Innovation and Delivery

Increasing competition between rival internet companies, the speed of delivery and the ability to iterate are the key traits of market leaders. In a competitive scenario, reacting to end user needs, incorporating their feedback into the offering and delivering updates and changes regularly is essential.


High-Performance

PayPal reported double the number of requests per-second and reduced response time by 35% or 200 milliseconds.

WalMart Labs had a bumper launch with Node.js in 2013, where they put all of their Mobile traffic through Node.js on black-friday, the busiest shopping period of the year. The team at WalMart Labs live tweeted against #nodebf tag showing the performance of the Node.js application. On Black Friday the WalMart servers didn’t go over 1% CPU utilisation and the team did a deploy with 200,000,000 users online.

Similarly Groupon re-implemented their system in Node.js which resulted in page load times dropping by a whopping 50%. 


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. 


Easy to modify and maintain 

New services development using Node.js is easy because of conventions that have grown with Node. Writing applications the Node-way means that applications are composed from small modules, which are piped together. Over-time traditional monolithic applications become rigid and difficult to adapt and as new requirements are added. Eventually traditional applications begin to creak under the weight and the stress put on them by the requirements they were not designed for.

With Node.js a group of small applications is developed instead of one large application, this enables a change to be made or new functionality to be added without requiring changes to be made deep inside the entire code-base.


Productivity

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. Node.js opens the door to a world where full stack developers make life much better by reducing inter-silo dependencies. Node.js also has a great package management system called NPM, it’s the first package systems for JavaScript to get dependency management right. NPM effectively kills the possibility of experiencing dependency hell. Node also has a vibrant user-land and a very large number of modules are available via Node.js’s package manager (over 60,000 and growing fast)

PayPal measured a 2x increase in developer productivity, where it took half the number of developers to deliver an application when compared to Java, and it was delivered in less time.



The Future of Node.js is bright


Eran Hammer announced at NodeDay (www.nodeday.com) that WalMart are planning to use Node.js across all eCommerce by the end of 2014.

PayPal are rolling out Node.js across their entire web application and Node.js will be used almost everywhere within 2 years.

Although Google have not publicly come out talking about their use of Node.js, there is evidence that they are using it, a simple search on linkedin shows almost 200 people in google with Node.js on their profile. According to an article on VentureBeat: “Googlers are definitely working on Node.js projects – perhaps even something big that will be released to the public in the near future. They’re just not ready to talk publicly about what that might be.”

Yahoo are a long way down the line with Node.js and have 200 developers doing Node.js full time with 800 public modules and 500 private ones.

New Entrants to Node.js such as Netflix and others show that there is big growth happening in this area at present.

Why MongoDB?

MongoDB is a cross-platform document-oriented database eschewing the traditional table-based relational database structure in favor of JSON-like documents with dynamic schemas, making the integration of data in certain types of applications easier and faster. MongoDB has been adopted as backend software by a number of major websites and services, including Craigslist, eBay, Foursquare, SourceForge, Viacom, and the New York Times, among others. MongoDB is the most popular NoSQL database system.

Data structures embody the essence of our programs and our ideas.  The disproportionate success of MongoDB is largely based on its innovation as a data structure store that lets us more easily and expressively model the ‘things’ at the heart of our applications. For this reason MongoDB will become the dominant database paradigm for operational data storage, with relational databases filling the role of a specialized tool.Having the same basic data model in our code and in the database is the superior method for most use-cases, as it dramatically simplifies the task of application development, and eliminates the layers of complex mapping code that are otherwise required. While a JSON-based document database may in retrospect seem obvious doing it right, as the folks at 10gen have, represents a major innovation.

MongoDB is famous for being the technology that powers India’s Aadhaar card initiative. This advanced platform has many prominent businesses using it.


Coupled with the advanced Real-time MVC Javascript Framework, Angular.js from Google and server-side Javascript framework Express.js from LearnBoost/StrongLoop, this is the strongest , most performant, future-proof technology stack you can hope to run your website on today.


The boundless possibilites provided by this modern, advanced stack means you can continue improving your website for decades to come without hassles.


On the server side, our entire mobile software stack is completely built in Node. One reason was scale. The second is Node showed us huge performance gains. — Kiran Prasad, Director of Engineering, LinkedIn


Node’s evented I/O model freed us from worrying about locking and concurrency issues that are common with multithreaded async I/O. — Subbu Allamarju, Principal Member, Technical Staff, Ebay


Node is a critical piece of our infrastructure. By handling millions of traces and thousands of connections with Node, we can focus on building a great service.  — Kalvir Sandhu, Co-founder and CTO, Caliper