This document proposes a new RAD (Rapid Application Development) approach using the MEAN stack (MongoDB, ExpressJS, AngularJS, NodeJS) to quickly build full-stack web applications. It describes how the authors built a basic TODO application over a weekend using this approach. The key advantages highlighted are the ability to build and test applications quickly at low cost, with high flexibility to change requirements later.
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Rapid Application Development with MEAN Stack
1. RAD with MEAN
A New Approach to
Application Development
2. We are a bunch of nerds who love technology and problem solving
Our Mission is to:
• Identify the problem that customer is trying to solve
• Help choose the best approach for his situation
• Solve the problem with in the iron triangle constraints
• Have Fun doing all the above steps
We challenged ourselves to build a TODO application over a weekend with two of
the most talked about full stack technologies
After analyzing the results and code extensibility, we picked a winner
3. New Approach vs Traditional
• Business has an idea that needs to be market tested without having to spend a million
dollars in development cost
• Traditional SDLCs take considerable story writing, planning, design, development,
testing and stabilization efforts
• Also any change will mean all the above phases. Traditional application or product
development approach is not very forgiving when it comes to changing requirements
• We need an approach where we can create a mobile ready web application in a short
amount of time and still be very flexible in changing it without impacting existing data
or having to do significant code refactor in all layers
• New approach we are proposing here will allow developers to build in small chunks,
test and validate with business and customers before building next chunk and the cost
of changing the design or architecture at any point is negligible
• We need something which enables businesses to decide as late as possible and
development team to deliver as fast as possible
4. An App in a Weekend
• Mobile ready, works on small / big screens
• User can have his todo list displayed + ability to add/remove/modify items
• User can Assign priorities and due dates to the items
• User can sort his list using due date or priority
• User can mark an entry as completed
• Every client operation is done using JavaScript, reloading the page is not an option (for
future offline capabilities)
• RESTful API which will allow a third-party application to trigger actions on this app
(same actions available on the webpage)
• Ability to pass credentials to both the webpage and the API
• Ability to create users in the system via an interface, a signup/register screen
13. Is this extensible or just prototype
Add Male/Female flag to User.profile
• Add drop down in SignUp screen and VO – 30mins
• Add flag to User schema in db.js – 10mins
Add ability to update/delete existing user
• Add link from TODOs, new save & delete buttons, add $resource.put & delete – 2hrs
• Add Rest put and delete methods in services.js– 30mins
• Unit Testing – 20mins
Add two fields to Tasks collection (table)
• Add to schema (existing documents will be intact) – 20mins
• No changes needed to api or service codes -- 0
• Add to New, Edit, and View divs in UI any styling issues– 2hrs
• Unit Testing – 20mins
14. “MEAN” stack (or “AMEN” stack ;-)
• Mongo DB
– http://www.mongodb.org/
• ExpressJS
– http://expressjs.com/
• AngularJS
– http://angularjs.org/
• NodeJS
– http://nodejs.org/
• Knowledge of JavaScript is the only skill required to code, maintain
and extend this application
15. Adoption Risk
Mongo DB
http://www.mongodb.com/customers/
• eBay: with 250M writes/day, 10M updates, 500M to 1B reads, 2ms (yes, millisecond) response time 24/7/365
• Craigslist: Initial MongoDB deployment was designed to hold over 5 billion documents and 10TB of data
ExpressJS
http://expressjs.com/applications.html
• MySpace
• Yummly
NodeJS
http://nodejs.org/industry/
• Microsoft Azure
• Yahoo
• eBay, Walmart etc…
AngularJS [by Google]
http://builtwith.angularjs.org/
16. Rapid Development
• The skillset is simple, a developer who understands JavaScript is good to go on all
layers, no UI developer vs business layer vs db layer
• Communication between front-end to business to db layer is all happening through
JavaScript objects which is the reason for so much gain in development speed
• MongoDB gives us NoSQL speed without constraining us to name value pairs, each
document in MongoDB can store information of up to 16MB
• MongoDB’s schema agility allows storage of differently structured documents in same
collection. So if the structure of a table has changed, no need to worry about existing
data, it will work fine
• ExpressJS and AngularJS abstract and give us most of the common classes that we
have to code in all applications so developers write and maintain less code
17. Scalable Application
• NodeJS is an event-driven server-side JavaScript environment. Node runs JavaScript
using Google Chrome’s V8 Engine which means three very important things
– JavaScript runs extremely fast on Node
– Node can render client side pages on server side for mobile applications when
needed or for old browsers which have issue with JS speed on client side
– Node is even-driven which means no threads are required like for Java and .Net
applications, it is more natural multi threaded IO with Node
• MongoDB is one of the best and easy to master horizontally scalable NoSQL database
around. Sharding with MongoDB is very easy and its document model gives us schema
agility which is a super power in app development world
18. If traditional application development is not working for you anymore and you are
thinking of alternative approaches, we can help you
Feel free to contact us