Ask HN: Choice of framework for development of a large scale web application?
Ruby on Rails, Django or Symfony2
Please state your reasons as why you would pick said choice. From prior research I found out that RoR and Django are more expensive to scale than any php framework, however I am confused why a lot of Silicon Valley Companies use RoR as their primary framework.<p>Thanks,
Clockwork189
9 comments
[ 2.9 ms ] story [ 31.2 ms ] threadDjango would be easier, and RoR is a bit harder.
All this fades away if you go with something like Microsoft Azure which just automagically handles everything for you.
I like python, so, I would go with Django.
As a second point, all three of those frameworks are solid choices to build a web application with. Selecting one purely for scalability reasons smells like premature optimization.
Unless you know you are going to be hitting truly massive scale, all three frameworks can be plugged into a share-nothing-architecture and made to scale horizontally.
The only thing I could guess is that the apps are memory bound, and Django/RoR take more memory than the PHP alternative.
I personally like Grails which uses Groovy for the programming language. To enhance performance and obtain near Java like speed there is a statically typed extension called Groovy++. Because it operates heavily off of type inference it is extremely non-intrusive when being introduced to existing code.
Once you have this, you can optimize your application to handle all kinds of workloads without getting bogged down by whatever framework you're using. Heck, write your CPU-intensive code in C++ if you're so kooky about performance, use SQL or OODBs, whatever. Distribute you application across the globe. Your application is ultimately just responding to HTTP requests.
Use Django for the frontend. Use whatever you want for your backend. Using Python for both would be nice. If you're really worried about performance, use a JVM language like Scala. Ultimately, this choice will be driven by what kind of computation you're doing on your backend. E.g, if I was doing scientific computation I'd use Python because it has NumPy and SciPy. Let the backend decision be driven by what language has the libraries you need. You absolutely _do not_ want to write code when you can avoid it.
That said, I must bring your attention to a few points:
(1) Premature optimization is bad. If you don't know whether you'll need it, then you won't need it.
(2) Just-in-time scaling, i.e, scaling right when you start facing performance problems is going to be hard. If you know you will totally definitely 100% need it, plan for it now.
(3) 99% of web applications don't need to worry about scaling. Throwing more hardware at the problem, intelligent caching, and some basic Algorithms 101 techniques go a long way towards making things fast.
(4) I'm not in the Valley, and I've never built a large scale web application ;)
I don't agree. I haven't seen one feature of PHP frameworks that would make them scale better than RoR or Django frameworks.
They'll have similar scaling issues which will revolve around scaling the database.