views:

1058

answers:

11

Hello,

I am starting up a new website that will need to meet the following requirements :

  1. Performance and Scalability : I am aiming to have some high traffic with high number of concurrent connections during few minutes. No heavy contents (like Flash or Videos) will be present in the first version
  2. Mobile Site : The first version will be launched at the same time for Internet AND for mobile users (especially iPhone users)
  3. Fast developing : a beta version will be deployed in few months.
  4. Multiple DB accesses and reports : The Database will be accessed very often in Write and Read mode
  5. Social networking features : profiles, forums, polls, comments, groups, IM...
  6. Multi-languages site : English, Spanish, French...

Of course, I want to follow other standard requirements like low building and maintenance costs, solid architecture, simple and user-friendly design and SEO.

My background in programming languages is C, C++, Java and PERL. However, I can learn quickly AND I plan to hire one or two web developers.

So now my question is : what technology, platform and framework do you advise me ?

  • ASP.NET and MVC ? (seems to me the most logical solution but how expensive it is for development and production?)
  • PHP and some framework (CakePHP...) ? (the most popular but I do not like PHP language..)
  • Open Source CMS : Drupal or Joomla? (the most rapid to build but is it scalable?)
  • Python and Django ? (google does not mistake very often)
  • Rails? (twitter choice).
  • Grails? (I love this one...but is it not too risky for this new techno ?)

Thank you very much for your answers.

Regards.

EDIT 03-Sept-2009

After many days of hesitations and tries , I have finally made up my mind. I'll go for RAILS and NetBeans as the IDE. (For DB, I didn't make my choice yet)

RAILS: The community is big and very enthusiastic, concepts are clear (MVC, RESTFult style, conventions...) and Ruby language is simple to learn. Performance will mainly depend on my architecture..and I pray that I will get the same performance issues as Twitter :-)

PHP: FYI, I have started with PHP & Kohana framework, but I couldn't simply deal with this (dirty) PHP language and the billions of framework around it.

ASP.NET was also envisaged but the youth of the ASP MVC framework plus a higher cost were downside that have counted in my choice

Java: it would have required a lot of configuration between multiple frameworks Spring, Hibernate AND development productivity in JAVA is low compared to Ruby or Groovy.

Grails: it was too risky although it was my primary choice. Grails is young and resources/documentations still to be built.

Python & Django : I didn' give him a chance. Why? No reason.

Again, thx for your answers.

+3  A: 

It largely comes down to personal preference.

All the options you list are languages, or written in languages, that you don't have any experience in. I wouldn't try to run a project in a brand new language if I could help it.

Given a background in Perl, I'd suggest Catalyst, but since you get the name of the language wrong, I'd imagine your Perl background isn't very strong.

If your Java is better, then Spring might be an option. I don't have any experience with it, but I've heard positive things.

David Dorward
+1 for "I wouldn't try to run a project in a brand new language if I could help it." >> that's a good way to fail : no experience, "a few months", "low building and maintenance costs", ...
Pascal MARTIN
Hello David,As you said , I am not very familiar with Perl. However, I do not want to choose the programming languages and related technologies based on my background. I plan to develop the web site for years AND I will hire developers or freelancers...so definitely my personal preference is not an issue.
fabien7474
Hello Pascal,I am aware of my lack of experience in web site building industry (but more than 10 years of experience in Software and Project Management industry). That's why, I do not plan to go alone :-)
fabien7474
You can find developers to develop in practically anything. Your personal preference really is an issue.
David Dorward
+1  A: 

This is highly subjective.

All the specifications you designated are addressed in most frameworks these days:

  • scalability (to a certain extent)
  • i18n
  • multiple DBs
  • dynamic apps
  • multiple clients (browers, iPhones, etc...)

All of these are handled in all the frameworks you mentioned.

It's going to come down to personal preference and experience you have with those frameworks - with which one do you feel the most comfortable developing in?

Yuval A
Hi Yuval,Thank you for your answer. What is i18n ? And why should I need multiple DBs? I am very familiar with C++ and Java but C# or Groovy are also interesting me. For PHP, it seems too "heavy" and "tricky" since I am a very Object-oriented programmer.
fabien7474
i18n stands for internationalization. He probably misread your requirements. You meant "many read/write accesses to the database", while he read it literally as "Multiple DBs".
Antonio Cangiano
A: 

I'd go for C# just because I love localisation in it. Well, and I also love C#. But I agree; whatever your are competent in.

Noon Silk
+3  A: 

Use something you're familiar with. Period. It's perfectly fine to use a new technology (or a technology new to you) if you're experimenting, but when you need to get the job done, stick with the familiar. Very few of us are being paid to experiment, especially when working on a new project.

Also, if you don't like a certain language, even though everyone seems to be using it, don't use it! Language tastes are quite subjective, and chances are you'll start to dislike the language even more. ("Why doesn't it contain feature X, I need this!" "Why is this so complicated?" "Gee, this looks ugly!")

Also, try not to re-invent too much: try to find components that do 95% of what you want. If they're open source, you might even get the final 5% yourself. ASP.NET MVC is cool (IMO), but being relatively new, there are few reusable components to speak of.

With this in mind, try to narrow down your options, and then look deeper into them.

Ruben
+1  A: 

Hi Fabian,

I'm intrigued that your list of possible answers didn't include any Java-based frameworks, despite your having a background in Java.

FWIW, some suggestions:

  • I'm with the other respondents here, definitely start with a language you know. Even though you say you don't want to limit your choices, it really seems like asking for trouble otherwise.
  • Any rich website these days will have a significant JavaScript aspect on the client. I'd suggest going with an environment where you can use JavaScript on the server as well, so as to avoid having two different languages to develop in. There are several server-side JavaScript things coming up, look into them to see whether they'll suit your needs.
  • Avoid a Windows-only solution unless you're prepared to pay above the odds for your server resources forever.

These days, Java has JavaScript built-in in the form of Rhino. Java also has a huge base of tech available for it that you can leverage, and it's (now) open source. Given you already have some familiarity, it may be a way to go. Caucho is doing some interesting resiliency and load balancing stuff with their JSP/servlet implementation Resin (caucho.com/resin). One fairly cool thing about Resin is that in addition to Java (and therefore JavaScript), if you have a cool PHP component you want to include (forum software, for instance), Resin has a PHP implementation that runs in the same container.

Good luck,
--
T.J. Crowder
tj / crowder software /com

T.J. Crowder
Hi,You are right about Java. But I didn't find a lot of public web sites written in Java...that's why I didn't mention it. Do you have examples? Also, the Java world seems to me, somehow, quite complicated for a web site but you are right to note that Javascript is indispensable and the use JavaScript on the server is mandatory. GWT, for instance, is a way to code only in Java.
fabien7474
+1  A: 

If I'd have to work in a big website now I'll choose to work with PHP or ASP.NET... The first because is very popular, big companies use it, it has a lot of documentation and very popular websites are written in PHP. ASP.NET with c# is a very good option... It has a lot of documentation too and it has a sintax similar to JAVA. I personally won't use JAVA because of my bad experience with it. It's more difficult to make a "well-done" website with MVC from scratch and I haven't used frameworks in JAVA. The other languages I haven't tried. Like other people could say: "If you have good skills designing the structure of your website use the language which you have more experience..."

l2mt
+1  A: 

I would prefer you to go with Rails , Since the development time is fast and you have limited resource of 2 .

Many people say that twitter is not Scalable , I would like to ask a question , can any one point out one website which has real time traffic every day , every minute ,every second like twitter .

Rails is the ultimate platform for Web 2.0 applications like social networking ,blog ,wiki etc and even if your going for semantic web i.e web 3.0 rails has features like Active RDF.

Its entirely my personal opinion . Atlast its your decision , your flexibility and your interests to choose your framework .

Good luck !

YetAnotherCoder
+2  A: 

So far, I read very useful answers and thanks for your help. The common answer is "Choose what you are familiar with"...Well, for my own situation, it does not really apply well because:

  1. I am familiar with C++ and Java mainly and it seems that C++ is not used for Web Development and concerning Java, there is not a lot of Java-based web sites out there. Do you know some ???
  2. I will hire 1 or 2 developers and I consider myself as a fast-learning person in programming area. So the "familiarity" aspect has less impact

Compiling your different answers, it seems that:

  1. ASP.NET : good option according to you but few told me that it is expensive. How much expensive? Operational costs (like web hosting) are much higher than other technologies (like PHP, Java or Rails that can run on Apache...) ? Do you know the price differences ?
  2. CMS (Joomla, Drupal) : no words about it. Is it too slow? Not enough flexible for big sites?
  3. Rails : One supporter. No performance issue. Easy to deploy. Might be the solution
  4. Grails : No words. I really like it but I think that it is too risky (I don't need to take additional risks). Am I right?
  5. PHP : The community is huge and frameworks manifold. It should be the obvious choice but as Ruben said "if you don't like a certain language, even though everyone seems to be using it, don't use it!" . And I am not a fan of PHP.
  6. Java : see above

So, if I narrow down the options, it seems that ASP.NET (but with what costs?), PHP (which frameworks?), Rails and Java (but who has chosen this solution?) are my current candidates.

fabien7474
Why downnoting this summary post ?
fabien7474
It's really rude isn't it?
jpartogi
Generally, summary posts are added as an edit at the bottom of the original question - but usually they'd let you know with a comment and not drive-by-downvote - which is a shame.
Zhaph - Ben Duguid
As far as developing an ASP.NET site goes - it can be free - the tools you need (VS Web Developer Express, SQL Server Express, etc) are free, it's the cost of hosting that's can hurt - generally around 2x more expensive, but if you look around you'll find some quite nice deals.
Zhaph - Ben Duguid
+2  A: 

Java

IMHO Java really excel in web-application that is really enterprisey. If your website do not need enterprisey feature, Java might be overweight for you. Besides that, to build a website with Java you would at least need a web framework otherwise it will be painful to build it only with Servlet+JSP. For an agile web-framework, Grails is a good candidate. Another thing you need to consider if building a website with Java is that you would need more investment in the human resource (as Java programmer tend to be more expensive) and infrastructure (as you would need quite large memory). The good thing about Java is the deployment as you can just deploy one war file to your appserver.

(+) Deployment

(-) Cost

PHP

PHP has been well known as an easy and straight forward programming language for developing websites. You can build a website without any framework. There's a good thing about this, is that as you go along, you can define the pattern that best fits you, and build a framework from there. Another good thing about PHP is that it has easy deployment, as you would only upload PHP files to your webserver. The downside of PHP is I reckon in the performance as it is still slower than Java and a bit slower than Rails.

(+) Deployment

(-) Performance

Ruby on Rails

Rails is really an agile opiniated web framework (although I think it's moving further away from being opiniated in Rails3). The good thing about Rails is that you can get really productive if your website has a lot of CRUD. The downside about Rails is the deployment which can be a little bit tricky, although there are already some hosting that ease the deployment of Rails webapp. And regarding performance, Rails is still slower compared to Java, but faster than PHP. Another thing is if you can also hava Rails to be deployed on Java appserver using JRuby which can be faster.

(+) Productivity

(-) Deployment


So there you go, pick your choice. Where do you want to put your money at? What is your top priority and concern?

jpartogi
Thanks. It will help me a lot. And what is your opinion on ASP.NET ?
fabien7474
Do you want to be tight to Microsoft technology? I've never used it before.
jpartogi
Btw, whoever downvote this is really harsh. I was trying to help the man. C'mon!
jpartogi
I don't understand why downnoting this answer. I still cannot vote (my reputation is 11) but as soon as I can, I will vote for your very interesting and helpful answer. Thx.
fabien7474
@jpartogi Rails Deployment is easy using capistrano and i have also deployed rails application in Shared environment ex BlueHost .Its difficult if you dont have a ssh access and Rails Server are Cost effective compared to that of Java Servers .Deployment is similar to any other php application
YetAnotherCoder
It's still not as easy as Java and PHP. IMHO.
jpartogi
I got some very useful answers, but this one has helped me a lot and was the closest to what I was expecting. I still didn't make my choice but I have narrow down my options by removing CMS, Grails and Rails from possible solutions. Currently, the odds are : 1. PHP with CakePHP 2. ASP.NET with MVC 3. Java with Spring/HibernateUnfortunately, nobody gave me inputs on my second requirement "Mobile Site", but I might ask another (and more precise) question for that.
fabien7474
@fabien, mobile site is no difference. It's just a matter of presentation. You just need to make a different page and stylesheet for users that is accessing from mobile device.
jpartogi
"although I think it's moving further away from being opiniated in Rails3" => This is not trye, it will still enforce the MVC pattern and all the other things that make rails great. It's just allowing more customization on the technologies used (jquery instead of prototype, for instance)
marcgg
Also, deployment in rails became easier using capistrano and mod_rails.
marcgg
@marcg, well that is what you call not opiniated anymore! Deployment in rails is not as easy as in Java.
jpartogi
A: 

For your social networking side you may want to look at using Drupal. It is written in PHP and it allows you to quickly add in features you need such as: profiles, forums, polls, comments, groups, IM; or you can roll your own quite easily if there isn't a module that suits your needs.

Nat Ryall
A: 

What is the problem in trying out Grails? Actually I am also in a similar dilemma. Need to create a Social Networking website with some more features than those provided by current lot. People have suggested me going for Grails because of the Java background that I have.

Also can you guys suggest on hosting. Like I was exploring GAE and EC2 but on GAE I read some articles which did not suggest it as a long term option since the data gets locked.

Ank