← Back to team overview

canonical-ci-engineering team mailing list archive

decision time: django or gunicorn+restish

 

We've debated some and at this point in our schedule we've got to commit to something for better or worse.

The initial thought was using Django. Recently, I've seen others are using a more lightweight combo of gunicorn+restish. We felt tied to Django, but it seems there's enough precedence of non-django apps that its up to us to decide what we want.

I flip-flop between the two. When thinking of the project-manager, I lean on Django. When looking at the branch/source builder, I lean to gunicorn+restish. I don't have a big opinion. I'd even be up for using both. However, that would probably just make us have this argument many more times instead of settling it once. I don't believe either option is going to make our lives significantly better or worse.

I propose a simple majority vote and move on. I want to get back to prototyping ASAP. Valid votes should be:

 1) django
 2) gunicorn + restish
 3) both

If no responses or consensus is reached, then I vow to drink 6 beers, re-read this email, and make a unilateral decision.

I'm about 51% in favor of one of the options, but I don't want to sway anyone. Instead, I'll list some pros/cons I've thought about:

= Django
Pros:
 * I've seen this scale well beyond what the airlines will become
 * built-in support for user authentication and authorization
 * built-in support for DB schema changes
 * works near transparently with tastypie for REST (if you have a
   models.py, then you'll have a REST API in minutes)

Cons:
 * Many of our services don't need core django features. ie:
   * no web-ui's are needed
   * no DB's for a few (which means more effort for REST interfaces)
 * it might be harder to charm well (by I/S standards)

Red Herrings:
 * Heavy-weight - my 3 year old beagleboard runs it. Its big, but it
   requires very little disk, memory, or CPU.

= Gunicorn + Restish
Pros:
 * Its very basic so its easy to understand
 * Services like the click-package-index are using this approach, so
   there's some code we can steal/(ab)use.

Cons:
 * DB access becomes psycop2 and you have to manage your own schema
   migrations and db-setup.
 * nothing like the django admin panel


Follow ups