views:

169

answers:

11

What technologies should I use when designing for a large social website (with a lot of transactions, like twitter)? using open source solutions - database - webserver - os

+9  A: 

As you can see, it doesn't really matter what you choose; all of these sites have lots of traffic, but are based on very different technologies.

Marius
Ed Woodcock
A: 

Anything that scales.

GvS
+1  A: 

Doesn't matter what kind of scripting language you'll choose, as long as you'll heavily utilize memcached. Having the right caching hierarchy is a must.

aefxx
I thought all these frameworks (PHP, asp.net...) already have builtin cache support
Jan
Some do, some don't (PHP as of 5.2/3 but can be easily included via APC extension). The thing is, you really WANT to have a caching HIERARCHY. Having several tiers (at least 3, I'll count the persistent database layer to it) of caches lets you distribute the data according to its frequent usage.
aefxx
+1  A: 

At the end of the day, this is a matter of personal preference. Twitter uses Ruby on Rails. Wikipedia runs on PHP. Reddit uses a Python library called web.py, but intitially, it was written in Lisp. I would say pick the technologies you are most familiar with.

RegDwight
+1  A: 

As Joel says

People all over the world are constantly building web applications using .NET, using Java, and using PHP all the time. None of them are failing because of the choice of technology.

Choose whichever of the "big 3" (.Net, Java or PHP) that you know best - these technologies are known to be scalable, the real question of whether or not your site will scale is how the site is structured and the quality of the code - using whichever framework you are most familiar with gives you the best chance of achieving that.

Kragen
A: 

Any technologies that suite your taste, In your situation I think algorithms is more important.

In The Pink
+2  A: 

A good book on optimizing for high performance websites from the Yahoo engineers is High Performance Web Sites: Essential Knowledge for Front-End Engineers. It is nice and short and basically a bulleted guide on the steps to take to make websites faster by optimizing the less well explored front-end.

amelvin
+6  A: 

What matters most in a social networking sites is the backend, since most of the bottleneck will be from there. You might want to consider No-SQL databases.

There are a few others like:

As for the programming language, as others have said, it does not matter that much. But if you really can not decide, you might want to consider a non-blocking webserver like Tornado.

jpartogi
Nice info on databases. I always though relational databases where the answer to sites like Twitter and Facebook, but apparently not
Marius
A: 

Read Richard Kiessig's book

TFD
A: 

Technologies, techniques ,

  • research what other scaled sites have used and done and what the problems they had were less than he successes, there are podcasts on iTunes, talks and interviews on Youtube
  • look at industry best practices and follow them to a degree
  • don't take peoples word for it, make sure you see the problem or the success as opposed to the pr glitz about it
  • avoid obvious things that do not scale vertically or horizontally, database connectivity, sessions - cookies and the like
  • look at nosql storage as an sql alternative less overhead but less functionality
  • take care when looking at the language/framework. frameworks come with lots of baggage you do not need, they speed you up initially and slow you down eventually, i.e. you spend more time hacking the framework than building the site, same with languages does it do what you want rather than be trendy, cool to programme in etc.
PurplePilot
A: 

If you are building something like Facebook, then your choices are a little limited, Facebook made their own PHP Runtime, check HipHop For PHP

medopal