2012-09-18 22 views
7

He estado usando java + spring en tomcat durante los últimos 2 años y mi aplicación se está volviendo notablemente enorme. El tiempo de inicio es ahora de casi 3 minutos y consume muchos recursos durante el desarrollo.¿Cómo se desarrollan/despliegan GRANDES aplicaciones empresariales en java

Así que estoy interesado en ideas sobre cómo hacer que el desarrollo de software vuelva a ser divertido. He visto el plano de Spring DM/Gemini para hacerlo modular, pero la experiencia no fue conveniente.

Ahora están a punto de agregarse más módulos, pensando en desarrollar otra aplicación web y utilizar la integración de Spring para enviar mensajes. Aparentemente, esta será una experiencia muy dolorosa para desarrollarla en una computadora de escritorio.

¿Alguien ha tenido alguna experiencia con el desarrollo de la nube? ¿Cómo puedo mejorar todas estas tareas que consumen tiempo y recursos? ¿Me ayudará el desarrollo en la nube?

+0

¿La pregunta actual está relacionada con la reducción del tiempo de implementación de tomcat en su máquina de desarrollo? ¿Has investigado jRebel? – Affe

Respuesta

8

Es un problema muy común con aplicaciones web java + spring típicas. Con la edad comienzan a hincharse y Context Loading comienza a ser doloroso. Puedo sugerir algunos consejos para mitigar el problema, pero solo usted podrá juzgar mejor para usted según el contenido exacto de su aplicación.

  1. No dependa en gran medida del servidor mientras se desarrolla. Escriba pruebas unitarias y ejecútelas fuera del contenedor de servlets. Spring tiene un excelente soporte para esto.

  2. Divida su lógica de negocio en los servicios web de Rest/Soap (con cuidado y cuidado). Esto le da la libertad de desarrollar y probar la interfaz de usuario independientemente de la lógica comercial central.

  3. Si usa maven/gradle, intente el plugin jetty. Puede seguir buscando cambios y volver a cargar la aplicación web automáticamente (creo que el complemento Tomcat puede hacer lo mismo). Tiene la capacidad de almacenar sesiones entre reinicios, por lo que no se verán afectados por los reinicios. Consulte esto para obtener más detalles How can I speed up Maven and Netbeans

  4. [Opción de pago] puede probar JRebel.

  5. Utilice el servidor de CI, que sigue integrando/probando/implementando su aplicación, quitando algo de carga de sus máquinas de desarrollo.

+0

¡Gracias! Tu respuesta es algo que estaba buscando. Estoy especialmente interesado en el servidor de CI. Así que vamos a desarrollar otras dos aplicaciones de primavera más. El servidor de CI me salvará del dolor de ejecutar dos aplicaciones paralelas en mi computadora local (que todavía tiene una posibilidad de NO ejecutarse correctamente debido a la limitación de recursos). – beku8

+1

Me alegra que haya ayudado. El servidor CI realmente brillará cuando tenga una buena cobertura de prueba. El servidor de CI puede seguir implementando las aplicaciones en un servidor de desarrollo y mientras se desarrolla en su máquina local, puede apuntar al servidor de desarrollo común cuando accede a la funcionalidad proporcionada por otras aplicaciones, de modo que debe ejecutar solo una aplicación localmente. – kunal

8

Primero, cuide los cuellos de botella. Tienen una tendencia a introducirse en los proyectos a medida que crecen. El diseño original se ha visto comprometido una y otra vez para cumplir con las fechas de entrega locas y ahora el abotagamiento ha matado a una aplicación que alguna vez estuvo animada.

No adivine el problema, pero utilice datos reales para determinar qué hace que su aplicación sea lenta. Utilice un perfilador como jProfiler: http://www.ej-technologies.com/products/jprofiler/overview.html

A continuación, utilice lo que ha aprendido para hacer que los nuevos módulos sean más eficientes. El resultado final es que la tecnología cambiante no es una solución para todos, ya que todas las tecnologías pueden presentar cuellos de botella. Debe encontrar la razón detrás del problema y arreglarlo.

Una vez que solucione los cuellos de botella, podría crear algunos proyectos de prueba con una nueva tecnología para ver si es más rápido, más fácil, hace lo que necesita. Pero, lo más probable es que solo arregles los problemas en tu pila actual es todo lo que se necesita.

+0

Gracias por el comentario, pero supongo que los perfiladores tienen más que ver con el rendimiento de producción que con el inicio del desarrollo (¿cuál fue la pregunta original que quería hacer)? – beku8

Cuestiones relacionadas