System Admins & Code Reviewers

From crowdresearch
Jump to: navigation, search

Introduction

This section contains tasks associated with system admins and code reviews. Please add technical reviews based on the code submitted on GitHub.

Tasks:

  1. Build technical architecture, manage deployments
  2. Please include the link to module


GitHub

https://github.com/crowdresearch/crowdsource-platform/tree/develop

Team Members

  • Directly-Responsible Individual (DRI) Kristiono Setyadi
  • Coordinators (horizontal team): Gaby, Elsa, Neil, Saiph, Durim, Rohit
Member Operation
Aditya Sharma
Farzad
Kristiono Setyadi System Administration
Neil Gaikwad Data System Architecture

System Admin Activities

Activity I

  1. Provision database for testing
  2. Create / maintain replica setup, backups
  3. Set up monitoring if database goes down
  4. Enable south and set up migrations


Activity II

  1. Provision Django with Gunicorn and Nginx.
  2. Run multi process python server with Gunicorn and have it load balance
  3. Set up restart and monitoring on server in case of errors / failures (pagerduty)
  4. Manage users and permissions (ideally primary and backup only)

Activity III

  1. Set up code repository on github and structure for forking repositories
  2. Check DB level code reviews
  3. Perform migrations for schema level code changes (with Django models)
  4. Ensure migrations DO NOT crash the database

Technical Reviews & Suggestion

- We are starting off with Heroku for Django + PostGres

- In the future, we might migrate to provisioning our own Dbs and servers, caching etc

- Heroku enables easy scaling of servers and dbs, we will be using 1 instance (cheapest plan). It also provides South support for Django.

- Users will be maintained through the native Django interface

Collaborating on Github

Our collaboration is based on GitFlow: http://nvie.com/posts/a-successful-git-branching-model/

There are two main branches:

master and develop2.

master branch should always reflects a production-ready state.

develop branch is where we all working on the next release.

If you want to create a module or feature, it is encouraged to use your own branch and name it using feature-* prefix, e.g.:

feature-vote to create a feature that enable user to vote in the system.

feature-review to create a feature that enable user to make a review in the system.

After you're done with it, you can merge to develop branch using --no-ff (no fast forward, so it will retain the history of commits).


Deadline: Friday, 24th 9am PST