Cloud IDE Server side
Access to the server side is provided through REST-like API
- Source files are stored in CouchDB (Git Commits too).
- Develop git->couchdb storage layer
- Some project configuration files are stored in CouchDB (information that is not relational, does not require aggregation)
- User information/ statistics stored in PostgreSQL
- Source files/ git tarballs precached in Redis
- Tornado serves as a "proxy" layer between CouchDB/Postgre/Redis and Client.
- Tornado passes control commands from client to Compilation Unit logging communication and sending it to client.
- Long-running/ time consuming tasks Tornado offloads to celeryd. (make celery async result passing compatible with Tornado's IOLoop (epoll/select compatible solution)).
TODO
- For smart/simplistic DB Connection pooling: Async Semaphores (i.e. DeferredSemaphore in Twisted)
- Git->CouchDB storage Layer
- Celery working in Tornado IOLoop (non blocking AsyncResult (although, name is async, on KeyValueStorage (i.e. Redis, Memcache) it is blocking or long pooling). Further more, all communications with Message storage/ backend should go through IOLoop without blocking.