I want to know the different choices of architectures and the best choice for a sample internet application I want to build using Java. The DAO layer I want to use is Hibernate. For proof of concept, I want to use session beans talking to hibernate. Later, based on your feedback, spring or ejb 3.0 can come in. The application deals with a massive database having several hundreads of tables with millions of records each. A lot of analysis on this global level data needs to be done as well. Analysis is mostly based on particular regions. What arcitecture should I employ? A single place where all the resources are pooled or local servers and databases at each region and a single control centre to manage global-level analysis?