The growth of a typical web site might look a little like something this:
- You build the first version of your site and deploy it into a shared hosting environment (Dreamhost, etc). All is well.
- You need to build more features for your growing customer base. Performance and uptime are also concerns, so you move your site to a dedicated server. Freedom in a box!
- More customers. They want more features and they want them right now! How do you cope with the load? You put your database onto it’s own dedicated server. We can breath again.
So here we are with the traditional 2 server 2 tier backend. One server is responsible for generating and serving web pages, the other server is responsible for storing data. Here are some of the problems you may be fortunate enough to encounter when running on a setup like this:
- Availability: You now have 2 points of failure. If either your web server or database server dies you are in trouble. What’s your plan when this happens?
- Performance: How are you measuring this? How many more concurrent users can your site handle before you’re no longer serving requests in a timely manner? More importantly, what do you do when you reach that point?
- Backup: How do we accurately and quickly backup all our customer data without taking our entire web site offline?
- State & Tangle: Where are you storing user and session data, on the file system? How easily can you partition off different areas of your site/application onto separate servers?
If you’ve reached this point in your web site’s growth but don’t have answers to these questions it’s about time you started thinking about tackling these problems.
Next week is guaranteed to be nothing but crazy at SitePoint HQ as we are moving to a bigger and better office. But I promise to post early in the week with some suggestions/ideas and other things to consider as you ready for the next phase of your site’s growth.
Lucas has been building the web since 1996. His experience covers Content Management, Online Learning, Documentation Management, Product Ordering and ecommerce systems across Linux(Debian/Redhat/CentOS), Mac OS, FreeBSD and Microsoft platforms.