Milestone 6 AltaMira
Infrastructure for Milestone 6.
This is the work of Team AltaMira
We intend to create a fault tolerant and modular system that scales to the level of intended usage. The sample app shows some of the features including making REST API calls and AngularJS frontend. The steps are as follows:
- Client makes a request via web using AngularJS ngResource or native app made using PhoneGap
- Request makes a REST API call to the Heroku hosted Django server.
- Request prepended with /api/<call> gets routed via a gunicorn to Django API server running REST framework.
- Multiple instances of the api server will be provisioned on different nodes to scale for traffic, each request is round robin(ed) until a free server is found and accepts the request.
- Django talks with the database coordinator which itself talks only to the Master database.
- Master database either reads from slaves or writes to master and syncs, this will the job of the PG coordinator.
- Data is sent back up the chain via a HTTP response on the REST API and the client is reloaded. There is no page refresh required anywhere and this allows for a smooth native mobile interface as well.
This is provided natively by Heroku but this setup can be utilized for any system on AWS, GCE, Rackspace or any cloud provider to allows for maximum scaling of the application.
Example Modules in this system architecture
Todo list and todo api. This makes our architecture by separating concerns between frontend, REST API and backend. This shows that 2 different teams could be working on 2 different parts of the application and as long as they are in sync with the requirement document, different parts of the application can be built separately.
- Todo list
- Todo API
- Accounts / Models