Just a short post today as there is not a lot to say on this topic.
I think too many start-ups worry far too much about scaling. My advice would be to just get your product built and worry about scaling later, if you have scaling problems it is a nice problem to have as it means your app is successful. If scaling issues occur you probably have huge traction and a lot of users so you will have the resources to deal with scaling. I would estimate that the majority of web apps that are built never encounter scaling issues. The MySQL vs NoSQL debate has perpetuated the scaling discussions but you need a lot of traffic before you consider a huge architectural change to a schema less database.
There are some simple tips you can use to speed up your site and deal with moderate scaling issues:
- Have a separate file server for your static files (running nginx or lighttpd NOT Apache)
- Get a decent server with good ram
- Use memcache or some other object caching system for templates and database calls
- Find bottlenecks in your code and optimise them
- Tune your existing servers
- Have a load balancer for your requests
- If you have separate database and webserver then make sure they are all with the same hosting company to keep latency low
A really basic architecture would be:
- One load balancing server
- Two web servers
- One database server
- One file server
You can then add to each of the clusters as you need to e.g. you can add another database server or another web server. It is obviously not as easy as that but that it is the basic concept.