Skip to content

Project Definition

Anders Van Winkle edited this page May 10, 2015 · 2 revisions

##Project Description

A high performing computing transaction processing environment using commodity cloud services that is highly scalable.

##The Purpose (Mission)

We are going to design and build an online platform that allows users to perform basic banking transactions, such as viewing an account balance, transferring funds, and viewing account history. The system will involve a web application that communicates with a transaction processing environment that sits in the cloud. The backend will be highly scalable and will be put under high stress testing using multi-threaded simulation. We also hope to implement security features that will help prevent fraudulent activity and scamming the system. These are the targets we want to meet

A minimum successful project would include a front-end interface that displays information sitting in the cloud. When a user inputs information such as attempting to view transaction history or withdrawing funds, a job will be sent to the cloud, the transaction will be computed, and the updated information will refresh on the web page We’d consider a failure to be a web page that doesn’t update the database or correctly communicate with the back-end, as well as a system that is not scalable. Essentially anything less than the minimum success described above would be a failure.

##Approach Front-end technologies: HTML, CSS, Javascript, AngularJS, Bootstrap, nginx
Back-end technologies: Java, Python, Apache Tomcat
Database technologies: MySQL
Version control: git
Technologies under consideration: Android, Amazon EC2/RDS

##Customer

Our customer is JPMorgan since they requested a system that computes transaction processing in the cloud. The primary things they are looking for from this are four basic types of transactions, being able to functional test the system (i.e. a web interface), and stress testing using a multi-threaded simulation tool. Particularly, they are interested in the system being highly scalable and being able to support hundreds of millions of users.

##Goals

###Fall

Prototype of the web interface that allows a user to login, view balance, account history, deposit money, and withdraw money. Design a local database schema with scalability in mind. Begin the planning and development of the transaction processing cloud environment.

###Spring

Deploy database and backend to the cloud using commodity services (i.e. EC2 or cheap machine). Build out web-app functionality in order to go from prototype to fully functioning user interface. Scale transaction processing to millions of users and test using multi-threaded suites. Stretch goal: Android app that has all the functionality of the web app and talks to the cloud. Stretch goal: Secure system to prevent fraudulent activity

##Project Constraints

As previously stated, the primary constraint here will be scalability. We estimate that our initial prototypes will not be able to perform well under high stress, which is a big concern since one of the primary goals from the customer is scale performance. The other constraint on the problem comes with having to purchase a commodity cloud service. Luckily, these are fairly cheap and thus cost is not a huge concern for this project – see Costs section below

##Equipment

A server for deployment, either a physical box that we would own or using existing cloud services such as EC2. We will also be needing all the software listed in technologies listed above in the approach Our own laptops for development, GitHub for version control, potentially an android phone for android development

##Budget

Cost of server or cloud space (Amazon offers 750 hours each month of running a linux instance for free, but this may not be enough computational power for our use case). More information can be found on the EC2 website: http://aws.amazon.com/ec2/pricing/

##Tentative Plan

Week of Tasks 9/15/14
Finish Proposal and Submit
9/22/14
Begin Sprint 1 Planning -- Basic setup, technology research, and project website
9/29/14
Continue with installation and setup of tech
10/6/14
Begin Sprint 2 Planning -- Spin up basic web site prototype
10/13/14
Add transactional functionality to web site
10/20/14
Preparation for midterm status report and presentation
10/27/14
Begin Sprint 3 Planning -- Design and implement local database schema
11/3/14
Connect website to database
11/10/14
Begin Sprint 4 Planning -- Flush out prototype, add functionality to allow all four transactions
11/17/14
Debug prototype and work on presentation
11/24/14
Project Presentations/Final Report
12/1/14
Project Presentations/Final Report
12/8/14
Final Report
Week of
Tasks
2/9/15
Resync on project, start posters
2/16/15
Begin Sprint 5 Planning -- Deployment to cloud
2/23/15
Deployment to cloud
3/2/15
Begin Sprint 6 Planning -- Functional and Stress Testing
3/9/15
Functional and Stress Testing
3/16/15
Begin Sprint 7 Planning -- Finish backend transaction computation
3/23/15
Finish backend transaction computation
3/30/15
Spring Break
4/6/15
Begin Sprint 8 Planning -- Performance Improvement
4/13/15
Performance Improvement
4/20/15
Begin Sprint 9 Planning -- Strech goals (Android and Security)
4/27/15
Stretch goals (Android and Security)
5/4/15
Final Presentation Preparation / Catch up
5/11/15
Final Presentation Preparation / Catch up
5/18/15
Final Report

Clone this wiki locally