Tuesday
Nov272007
Starting a website from scratch - what technologies should I use?

Hi, if you were to design your own highly scalable website from scratch, what technologies would you use?
Based on Web 2.0 popularity, LAMP seems to be high in the running. But would you tack on CakePHP? Drupal? or build your framework/CMS from scratch?
What version of Linux runs best for a scalable website?
Would you consider Windows and .NET? Java? Or do you want to throw a brick at me for even suggesting such heresies?
Would you prefer Postgres, Tomcat, Perl, Python, or any of that other *NIX fancy stuff...why or why not?
Please forget for the moment, "use what you know" argument. I am pretty versatile, and can look for an expert in whatever platform I choose. So all skills being equal, I'm looking for the best community support, the fastest development time and most importantly, the best scaling approach.
Let's say, for fun, that I'm planning for the website to have as many messages going back & forth as an eBay.
Definitely building this on a budget..
Jason
Based on Web 2.0 popularity, LAMP seems to be high in the running. But would you tack on CakePHP? Drupal? or build your framework/CMS from scratch?
What version of Linux runs best for a scalable website?
Would you consider Windows and .NET? Java? Or do you want to throw a brick at me for even suggesting such heresies?
Would you prefer Postgres, Tomcat, Perl, Python, or any of that other *NIX fancy stuff...why or why not?
Please forget for the moment, "use what you know" argument. I am pretty versatile, and can look for an expert in whatever platform I choose. So all skills being equal, I'm looking for the best community support, the fastest development time and most importantly, the best scaling approach.
Let's say, for fun, that I'm planning for the website to have as many messages going back & forth as an eBay.
Definitely building this on a budget..
Jason
Reader Comments (29)
At the risk of getting an even bigger brick thrown at me than the one you may be considering throwing at Jason for suggesting Java...
I have been researching this same issue lately as I am starting a new project and have lost faith in the scalability of ASP.Net. Although LAMP is clearly the flavor of the day I have also found that although Java requires many more lines of code and consequently a longer time to market, it actually scales excellently. In my research I have seen a lot of hype about Groovy (or more specifically Grails) which compiles into Java byte code, but is supposed to overcome the TTM issues Java creates. As Grails seems to be relatively immature I could not find anything conclusive on this one. Is there anybody out there with relevant Grails experience who is willing to comment?
> build your framework/CMS from scratch
Definitely don't rely on a CMS, especially if you have programming skills and want to create something unique and scalable. Otherwise you'll end up spending all your time figuring out how to make your CMS do what you want to do instead of just doing what you want. It's a slow and frustrating process. Drupal and Joomla are very nice for sites like this, but roll your own if you want to create a competitive product.
Cool, thanks. Yeah, I've pretty much ruled out Drupal, although I'll probably use it for my personal blogs.
The next issue is the framework. CakePHP, Symfony (sp?), etc. Again, these seem to run into scalability issues - there are lots of sites using frameworks, but according to postings I've scoured, any framework runs into limitations once you reach a certain number of connections.
More and more I'm liking the PlentyOfFish approach - drop all modules whatsoever, and reduce everything to if statements and foreach loops. I certainly know how to program it, if I can make the time to put it all together.
Here's my next dillemma: table layouts or AJAX? Is there any reason why I should give up tables? I really don't care about trendiness, as long as the site is functional and easy to use...any truly viral growth starts with some sort of PBR/Hush Puppies renaissance crowd, so a Web 1.0 approach might even help.
Then...there's the stateless argument - in order to go truly stateless, I'd need to drop the Session objects, and I haven't figured how to xfer shopping carts etc. to a stateless state. Maybe now I'm getting too geeky and granular.. I'm just thinking aloud.
Jason
> I've scoured, any framework runs into limitations
Frameworks are usually a matter of performance and not scalability. You can make most frameworks scale by using the different dived and conquer techniques described on this site. So I wouldn't worry too much about that.
> Here's my next dilemma: table layouts or AJAX?
It's not really either or. AJAX adds asynchronous operations. You can do that within CSS or tables. A complete AJAX approach does have SEO implications however.
> .there's the stateless argument - in order to go truly stateless, I'd need to drop the Session objects
Store sessions in the database or in a cache. Or don't use sessions for state. Have a shopping cart database that has nothing to do with sessions.