Buen día señores, vengo a pedir opinión en base a su experiencia más que a resolver un problema técnico para tomar la mejor elección.
Tengo un proyecto personal, de desarrollar una aplicación que esté disponible de manera gratuita con una versión de pago que lleve más características como más reportería, manejo de múltiples empresas y múltiples monedas, etc. Quiero desarrollarlo como una aplicación web, es decir trabajar con ella de forma web pero tambien con clientes móbiles que sean mas que todo para ver informacion rapida y sacar reportes (ya sean aplicaciones nativas o aplicaciones web adaptadas al formato de móbiles) en iOS y Android, por tal razón debo de hacer la lógica de negocios bien desacoplada, en forma de web services RESTful preferiblemente. Lo que quiero hacer es algo parecido a Openbravo, no en que sea un ERP sino en el modelo gratis y de pago con más funcionalidades.
El dilema que tengo es que, pensando de manera optimista la aplicación podría llegar a tener muchos usuarios usando la versión gratuita y esperando tener usuarios de pago obviamente, pero como no tengo una estimación pues yo quisiera hacer mi aplicación lo más optimizada posible, es decir que aproveche al máximo los recursos del servidor donde se encuentre alojada y que soporte la mayor carga de usuarios posibles de acuerdo siempre a los recursos.
Bueno, como habran notado por el foro en que lo puse pues esta aplicación deseo hacerla en JAVA ya que es en lo que yo tengo experiencia de varios años, he podido trabajar con algunos frameworks como Struts 1&2 y Seam 2, no puedo Spring pero me parece muy interesante así como otras alternativas. Como servidor de aplicaciones quiero utilizar Jboss 7 u 8 (Wildfly) y como base de datos PostgreSQL 9.3 . En estos momentos poseo un servidor dedicado pero podría moverme a utilizar un PAAS para dicho fin como Openshift. Las características de mi servidor dedicado son:
CentOS 6.5 64-Bit
Intel® Core™ i5 - 4 núcleos
4 GB RAM
300 GB HDD
10TB de ancho de banda mensual
Entonces, mi duda está a nivel de desarrollo respecto a los frameworks que debería utilizar o si no debería utilizar ninguno, es decir hacerlo utilizando puro Servlets y JSP con RESTful web services, o utilizar un framework como Spring MVC, si utilizar o no utilizar Hibernate para trabajar con la base de datos o usar SQL puro (aunque auxiliandome de alguna librería como Apache DBUtils). También considerando utilizar algún framework javascript para trabajar la parte del cliente como AngularJS solo pegandose a los servicios REST. Mi duda sobre usar un framework JAVA como Spring o usar Hibernate para la persistencia es porque me imagino que, aunque brinda muchas posibilidades y facilidad de desarrollo se que eso puede hacer más pesada la aplicación en terminos de rendimiento y consumo de recursos del servidor, y esto pues traducirse a no poder procesar tantos usuarios concurrentes como debería.
Aunque tengo bastante experiencia en JAVA nunca desarrollé una aplicación utilizando simplemente JSP y Servlets o haciendolo de la forma más básica, tuve que aprender de un solo ya usando Struts 1 para mi primer trabajo, entonces no conozco cuales serían los beneficios de trabajar puramente con JSP/Servlets sobre usar un framework, si la ganancia en rendimiento será lo suficientemente significativa como para justificar el no utilizar un framework (porque el no usar un framework también me tocaría hacer varias cosas a patita). El tiempo no es un problema ni el tener que pasar por un proceso de aprendizaje para aprender Spring o algun framework javascript, al final lo que yo quiero lograr es una aplicación que haga buen uso de los recursos, que soporte una gran cantidad de usuarios, robusta y segura.
De antemano gracias.