I am primarily a web-application developer, and I do not know much about scaling/scalability techniques. My application is written in Python, using Django; a fairly standard setup.
I currently use Apache 2.2 for my webserver, and MySQL for my database server; both running on the same VPS.
Up until now, it was basically a prototype and merely 15-30 concurrent users at any given time; so I had no issues, but now since we'll be adding more users we'll have performance issues.
So my question is how do I go about scaling my web-application? My current plan is as follows:
- Now I have just one vps server running, apache + MySQL.
- Next, I plan to add another vps server, to run only MySQL, so I'll have one webserver and one DB server.
- Next, I'll add memcache to the webserver for caching data, to take some load off MySQL.
- Next, another web-server for serving all the static content.
- Next, a VPS server for load-balancing (nginx/varnish) behind which would be my two web-servers and then db-server.
Does that sound like a workable strategy? Please guide me around here.