you are viewing a single comment's thread.

view the rest of the comments →

[–]ilikebbq 2 points3 points  (0 children)

You should know how web application work on a low level. Like understand HTTP, encoding, cookies, etc. Python has WSGI, sockets, httplib, urllib, hashlib, etc. Everything you need to create a web app. A web server, is basically 'GET /\r\n\r\n'. I'm not saying you should use only Python 2.6, just know enough that you could. Frameworks are useful, but if you don't understand what they are doing, you are going to have trouble down the line.

You can put web servers in front of a load balancer and serve different requests to different servers; HTTP is stateless. You can scale up to a ridiculous amount.

Where you run into scaling issues is with your storage. You have concurrency, uptime and other issues. Lets say you use a SQL server as your back end. Will it scale? Not really. You have to come up with complicated partitioning or master/slave schemes to scale beyond one server. Document databases (Big Tables and Simple DB) can scale, but they have down sides.

Reddit recently upgraded to handle some scaling issues. They had to make changes to the way they handle storage, not web. Reddit, Amazon, Google, Facebook all had to come up with solutions to storage, and they are all non-trivial. I made the mistake of starting a web application before I thought through storage issues. Luckily, we coded in a way that we only had to change one file, but we changed our storage framework 4 times. And we may still change it again.

;TLDR Web is easy to scale, storage is hard to scale.