IS480 Team wiki: 2014T1 Team Pentagon Technology

From IS480
Jump to navigation Jump to search


Home About Us Project Overview Project Management Project Documentation

Diagrams Prototype Technical Documents User Test Meeting Minutes


Before we started this project, everyone of us agreed to conquer ourselves. We agreed to try new technologies and approaches we have never used or learnt before regardless of steep learning curve. We would like to train ourselves and improve our hard skill in following technologies.

Pentagon technologies.jpg

Why did we choose?

Technology Description Advantages Disadvantages Sources

NodeJS Web Technology
Server-side programming language or a platform built on Chrome’s JavaScript runtime to build fast and scalable web application.
- uses event-driven, non-blocking I/O model that makes it lightweight and efficient
- codes can be executed in parallel, hence provides fast response
- modular and flexible
- ready for enterprise usage as it is used by many high-profile companies (e.g. PayPal https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/)
- scalable and resource efficient
- big community to look for help if needed
- code structures could be quite messy and hard to maintain if not organized correctly. Hence, a framework is used - ExpressJS. http://www.nearform.com/nodecrunch/node-js-becoming-go-technology-enterprise
ExpressJS NodeJS Framework
NodeJS framework is robust, flexible, provides some best practices in developing NodeJS application.
- well-known and widely used by communities
- easily build robust and user-friendly backend API
- integrates with other libraries neatly
- flexible enough to customize and suit our needs
- provides some best practices in structuring the code such that it is easy to maintain
MongoDB Database
An open-source document database written in C++, and the leading NoSQL Database
- a document database that provides high performance, high availability, and easy scalability.
- reduce needs for joins as it stores data in JSON format (called ‘document’)
- faster read (or queries) and writes
- integrate smoothly with NodeJS Application
- flexible aggregation and data processing (called Map/Reduce)
- replicated servers with automatic master failover (http://docs.mongodb.org/manual/replication/)
- automatic sharding (also called horizontal scaling) distributes collection data across machines (http://docs.mongodb.org/manual/core/sharding-introduction/)
- used by many big companies such as LinkedIn, eBay, SAP, Foursquare, Squarespace, Salesforce, and etc. (http://www.mongodb.com/who-uses-mongodb)
- ‘inflexible’ when the nature of the data require lots of relations http://www.mongodb.org/
AngularJS Frontend Framework
A structural frontend framework (MVC) to create dynamic web apps
- easily extends HTML’s syntax (e.g. create a new HTML tag)
- data binding (e.g. changes in model will dynamically update the view)
- dependency code injection eliminate much of the code written
- enable developer to build a web app with better user experience (e.g. fast, live, dynamic)
- backed by Google and big community
- integrates nicely with backend technology - expressJS
- might be hard to use for a complex application that requires a lot of manipulation on the view (e.g. google spreadsheet) https://angularjs.org/

Technical Expenses

Cloud Hosting

DigitalOcean was selected as final cloud hosting for our project.

Digitalocean.jpg Name: DigitalOcean

Price: USD 10 per month
Click here for more info

We compared 2 cloud hosting servers and proposed to our sponsor. Please find the table below for comparison.

IT Personnel (System Administrator)

This is the optional suggestion for the sponsor.

Sadmin.png Purpose: system maintenance services

Cost: SGD1800~2500 per month