I'm working at a site similar to Foursquare and Yelp, with approximately 100000 unique requests each week that generates content, growing steadily. We are currently using:
- Seam as Java web framework.
- MySQL as DB
- Hibernate as ORM
- Hibernate Search as Index
- EhCache for Caching.
Since our site is slowly growing out of the current setup and has a lot of legacy code, it is time for us to start thinking about a major refactoring/changing setup.
Web framework
We are not ready to change the language but we are leaning towards Spring Web Framework, since:
- Seam is no more.
- Almost all of us have worked with Spring and liked it.
DB and ORM
We have done a little research and we are thinking about MongoDB.
Index
Do we need to have a separate Index if we use MongoDB?
Cache
?
So my question is basically:
If you take Spring Web Framework and MongoDB into consideration, how would a good setup be for a web application that is growing and handles a lot of logged in users generating input and performing searches?
EDIT I would like to thank all of you for taking the time to answer me, but the answer I'm looking for should be more specific:
"We choose Spring as our web framework and Freemarker as our template language since freemarker is fast.... If you use MongoDB you will not need a separate index for doing geo searches since MongoDB supports location-based queries out-of-the-box... I very good cache solution to this setup is.... In my previous project we chose to use Apache Solr as our search platform because this solved the issue with fast updates..."
Thank you // Jakob