views:

94

answers:

3

I'm going to create a fairly large (from my point of view anyway) web project with a friend. We will create a site with roads and other road related info.

Our calculations is that we will have around 100k items in our database. Each item will contain some information like location, name etc. (about 30 thing each). We are counting on having a few hundred thousand unique visitors per month.

The 100k items and their locations (that will be searchable) will be the main part of the page but we will also have some articles, comments, news and later on some more social functions (accounts, forums, picture uploads etc.).

We were going to use Google AppEngine to develop our project since it is really scalable and free (at least for a while). But I'm actually starting to doubt that AppEngine is right for us. It seems to be for webbapps and not sites like ours.

Which system (language/framework etc.) would you guys recommend us to use? It doesn't really mater if we know the language since before (we like learning new stuff) but it would be good if it's something that is future proof.

A: 

If once of your concerns is scalability, and you don't want to depend on expensive or commercial tools, I would recommend that you take a look at this tech stack:

  1. Erlang - A programming language designed for concurrency and distribution.
  2. Nitrogen - An Erlang web framework with a lot of cool stuff, like transparent AJAX.
  3. NoSQL scalable databases, such as CouchDB or Riak - Save the the hassle of SQL code and are more scalable than plain MySQL. Both has direct native Erlang API.

To be honest, I don't know if this tool set is your cup of tea; These are not mainstream solutions. I just suggest these to everyone who ask about size-sensitive web applications.

Little Bobby Tables
Yeah Erlang feels a little too hard core for us. But thanks for the suggestion!
BenIOs
A: 

All serious web frameworks will provide you with what you need. The real issues (for example scalability) might be tackled in a different way depending on what you use, but you wont be limited if you choose a well-known one. The choice of database system might be more important for that (sql vs nosql), even if both of those will do fine too.

It's all about

  1. knowing how to use
  2. enjoying to use

the tool(s) you've chosen.

In either case, name-dropping some suggestions:

  • Rails (Ruby)
  • Django (Python)
  • Nitrogen (Erlang)
  • ASP.NET MVC (C#)

And please note, if you really want to learn everything from the bottom, you'd be fine with any of these (or one of the other gazillion out there). But if you want to perform your best, choose one that supports a language you know well or uses techniques/tools you have experience of etc. Think twice about how you value this is fun and we learn a lot against we want to be productive and do a really good job.

Jakob
Thanks for the suggestions, we suspected that Ruby, Python and asp would be suggested. But is there any reason you didn't mention PHP?
BenIOs
Only my own religious reasons :) If you know PHP, then it has obvious advantages over the other. Ones own familiarity with a tool is very important. I mean, some people can use a slide ruler and beat a calculator in speed. But that doesn't mean we should all stop using calculators. <religion>If you don't know PHP, I would not even mention it as a suggestion. Languages usually complement each other and are useful for different things. PHP breaks this pattern. I just can't see when PHP would be the best choice. Learn something else if you can.</religion>
Jakob
+2  A: 

I think that GAE can do the job. Google claims that Google App Engine is able to handle 5 million visitors for free and you will have to start paying only if you exceed their free quota.

It's also pretty easy to get started. If you don't have experience on administrating websites and choose a regular hosting service, you will have to worry about several things that you don't even imagine now.

My only concern would be with respect of the kind of data and queries you will have to do, since it does not have a relational database. Anyway, there is an open source project for GAE, called GeoModel that gives GAE the ability to do complex geo spacial queries, like proximity fetch. Have a look at their tutorial and the demo app.

About your impression that GAE was intended only for small web apps, there are a couple of CMS that run on it.

Good luck!

jbochi
It would be really really great if we could use GAE. I'll take a look at those links. Thanks!
BenIOs