I am working on building a web-application using Django.
Since I’m new to working on web-apps for production, there are a lot of technologies I’ve come across that I need to learn for a scalable, easy-to-deploy & easy-to-maintain site.
The different things I need to learn to use are –
- JSON : Javascript Object Notation
- Tastypie : Django API builder
- Chef
- Jenkins
- Tornado
- Gevent-socketio (for Socket.io)
- Fabric : Remote deployment solution
- Puppet : Configuration management
- Celery : task queueing
- Redis : key-value (NoSQL?) store
- PostgreSQL : Relational Database
- South : Django DB migration
- Nagios,Graphite, Sentry, Overseer : systems monitoring
- Apache, Nginx, Wsgi
I have a limited time to get myself in speed with all these. So, I wanted some guidance with regards to the best way to learn these technologies, as in, what should I start with that would make the understanding of the other concept easier and more intuitive, etc.
Any resource links to get started would be great! =)
+1 on bringing in technologies as you need them. But I understand wanting to be ahead of the curve. I think my answer is really a more verbose version of @cmpolis’ comment now that I read all this.
You really have two sets of technologies, one for application building, one for application deployment. So being that you don’t have to worry much about deployment until you have an application lets set those aside (Fabric, Chef, Puppet, Tornado, and arguably South)
You won’t get very far building your web app without at least learning some basic of how Postgresql works. You will need to create a database, database user, etc. You don’t need to know how to be a wiz, but you need to setup and administer at least a local db.
You can’t use TastyPie without understanding JSON. You also don’t mention how you will be consuming the JSON that TastyPie outputs. (I am going to assume you want TastyPie to do JSON, and not YAML or XML). Do you have a Javascript framework in place for that? If you are going for something like a Tastypie/Backbone stack, I’d focus on that part first, and JSON will come along for the ride. (JSON itself is really trivial to understand). You may want to look at something like backbone-tastypie. Understanding how to read and write JSON will give you a leg up on understand how to use Redis as well.
Learning Jenkins really means just getting it installed and set up. Since Continuous Integration is something easiest implemented at the beginning of a project I would set that up now as well.
At that point you will know where you bottlenecks are so I would bring in Celery (and of course django-celery
So then learn Fabric. I can’t really tell if you already know that you will need many, many, servers or if you are speculating. In my opinion, if your configuration is in the single digit number of servers, Fabric may be enough. I would suggest looking at Deploying Django Workshop to see how all of these different technologies get tied together.
So in short:
Phase 1:
Phase 2: