views:

42

answers:

2

Here at SO there's a lot of focus on designing web applications but I seem to be missing something in all these discussions. It seems as if everyone is focusing the design of their site to allow lots and lots of visitors to visit it, thus putting a huge strain on the server. But what if someone is designing a site just for friends and family? Or just an in-house site that's just for the 500 employees of a company? While it's all web design, there's still a huge difference in designing sites like Google Search or StackOverflow and sites like www.geocities.com\alex\myfamilyhistory.html or something similar. (Wow, I remember Geocities. I must be old!)

So, my question is simple: when designing a new website, where would be the most important differences between managing a site for 50 visitors, 5000 visitors and 500.000 visitors per day?

(Well, hardware-wise, just add more servers. But I'm focusing here on software design only!)

+3  A: 

Software-wise, you should always think your design and architecture through not to limit yourself with any abstract visitors limit.

Use commonly-known best-practices. Avoid costly string operations. Create a decent database schema. Put indexes and clustered indexes where appropriate. Avoid quick-hacks based on the consolation that nobody will notice because you don't have that many visitors yet.

Then when the time comes, you will discover you only need to get more hardware instead of completely rewriting your application.

Developer Art
Agree mostly with this. However, there are some things you might not go out of your way quite as much for with an app intended for smaller audiences - for instance, in a smaller app you might not care as much about designing such that you could cache *parts* of pages.
Amber
Well, let's assume I'm designing just a web application for my mom so she can keep her photo-album online and share with her relatives. While the software could be used by thousands of people, every application itself would only have to deal with perhaps up to a dozen visitors per day. But if I would create a forum like SO then the number of visitors will be a lot higher but the number of applications much lower. This does seem to be a big difference in design. (Plus, SO needs much better hardware.)
Workshop Alex
On Episode 27 of Stack Overflow Podcast Joel and Jeff interview Alexis Ohanian and Steve Huffman, the founders and co-creators of Reddit, and discuss scalability strategies. Also on previous podcasts they were discussing the overall development of Stack Overflow and you can get valuable insight from them.
JuanZe
+1  A: 

There are many design patterns that will never be used in applications with small number of users or requests, most of these patterns are patterns related to load distribution.

For example, one of the design patterns for load distribution is having your data in clustered (tree structure) servers. Every request is directed to one server, which in turn says that the data of this user is in a given cluster. it doesn't have the data itself, it just redirects the users to second cluster level.

The servers in the second cluster level (or first tree level) could have the data (or part of it) or could redirect the user to a third cluster level. the same thing goes on an on until the request reaches a server that already has the data of the user, so the response is generated and sent back to him.

This design pattern (sometimes called routing) is an example of a scenario that you will never use unless you have an application with massive number of requests. For example gmail uses this design, and the last failure of gmail's web interface was because the routing servers got overloaded with requests.

Muhammad Adel