2009-08-31 11 views
12

Estoy buscando hacer un sitio web que probablemente reciba un tráfico pesado y repetitivo. ¿Grails está a la altura de la tarea?¿Cuán escalable es Grails?

+1

Lo que es pesado? ¿Cuántas solicitudes de inspección por segundo? ¿Cuántos en promedio?¿Cuántos servidores frontend? ¿Qué especificaciones? Lo mismo para servidores de bases de datos. Equilibradores de carga? ¿Sesiones pegajosas? Tu pregunta es muy falta. –

Respuesta

18

Estoy de acuerdo con lael, también porque está basada en las tecnologías de Java, hay una gran cantidad de herramientas comprobadas de clustering y 'enterprise' disponibles que le permiten escalar fácilmente en múltiples servicios de aplicaciones.

Las herramientas en la nube alrededor de Grails también se están volviendo muy buenas y hacen que la implementación en una nube como EC2 sea muy fácil. Recientemente he estado usando Cloud Foundry y me pareció muy bueno.

Como el primer póster señala, sin embargo, puede escribir una aplicación de bajo rendimiento en cualquier marco/lenguaje. Una cosa que recomendaría es obtener una buena comprensión de Hibernate, que es la biblioteca de persistencia subyacente. Si entiendes cómo funciona eso, te ayudará a evitar cometer errores tontos en el nivel DB. Por este lado, una herramienta como p6spy es ideal para verificar el funcionamiento de la base de datos durante el uso normal. Debería ayudarlo a detectar cualquier consulta repetitiva.

8

La escalabilidad de su aplicación web no dependerá realmente del idioma/marco que elija usar, sino más bien de cómo se construye su aplicación. Puede crear una aplicación web escalable en Grails, del mismo modo que puede crear una aplicación increíblemente lenta en C++. Si Grails es el marco que le gustaría usar, entonces úselo; siempre puede volver a escribir las partes lentas en Java u otro idioma rápido, si es necesario. (Después de todo, eso es lo que hizo con Twitter Scala.)


de responsabilidad: En realidad nunca he utilizado Grails.

+3

Twitter usó Schala. http://www.artima.com/scalazine/articles/twitter_on_scala.html. Aún así JVM sin embargo. – GmonC

+1

Bueno, me refería más al hecho de que reescribieron una parte en un lenguaje más rápido. Al final, el lenguaje real no importa, siempre y cuando sea "lo suficientemente rápido". No creo que hubiera sido muy diferente para ellos si hubiera sido Java. –

+0

Acepto, es por eso que dije que puede estar en JVM porque en este caso particular, al final no importa, como dijiste. Editaría tu publicación solo para agregar esta pequeña aclaración (sigue siendo interesante señalar exactamente lo que hicieron para evitar futuros errores), pero no tengo suficiente reputación. – GmonC

6

Grails es esencialmente una capa delgada en la parte superior de Spring Framework, que muchos consideran un marco muy escalable en el mundo empresarial. Spring + Hibernate se ha convertido en un estándar en muchas tiendas Java de todo el mundo.

Si se encuentra con cuellos de botella de rendimiento en Groovy, siempre puede volver a escribir esas partes en Java.

Eche un vistazo a Success Stories para ver ejemplos de sitios escritos en Grails. El Testamonials también es un buen lugar para buscar ejemplos. Utilizará un poco más de memoria (montón y permgen) que una aplicación Java vainilla, pero puede sintonizarla como lo haría con cualquier otra aplicación Java.

En el extremo inferior no encontrará $ 3/mes opciones de alojamiento que podría con la pila de PHP (por ejemplo). Dicho esto, hay algunas buenas soluciones de almacenamiento en caché para las aplicaciones de Grails EhCache, MemCache, etc. Además, también puedes configurar una capa de Apache para almacenar en caché recursos estáticos o lo que necesites.

1

Grails se ejecuta en la JVM. En pocas palabras, no encontrará una plataforma de tiempo de ejecución más escalable, sólida y robusta que la JVM, en cualquier lugar. Esa es la gran ventaja de Grails sobre, digamos, PHP o RoR.

4

No significa apilar aquí. Ya has obtenido algunas excelentes respuestas, pero solo quiero agregar cosas que me recordaron recientemente. La escalabilidad depende no solo del software que escribe (independientemente del idioma/marco) sino también del entorno de despliegue. Una aplicación muy bien escrita implementada en un servidor de tamaño insuficiente o mal configurado no se escalará en absoluto. Si usa Grails o cualquier otro framework basado en Java, la configuración predeterminada en su contenedor (Tomcat, JBoss, etc.) probablemente no sea lo que necesita.

Sólo es algo a tener en cuenta, de Dave