Actualmente estoy trabajando para una empresa que ejecuta una aplicación web heredada basada en Java Servlets (el sistema es anterior a las JSP, aunque ahora las usa al compilar páginas nuevas)) La base del código es un gran revoltijo, ya que tiene alrededor de 10 años de construcción sobre un marco desactualizado. Tienen muy poca consistencia en la base de código (la aplicación ha sido desarrollada por varias personas a lo largo de los años, la mayoría de las cuales ya no funcionan aquí), ningún concepto de DRY (básicamente, cada página se crea desde cero) una gran cantidad de ilegible/críptico código y, en general, una infraestructura muy inconsistente.Recomendaciones para migrar una aplicación web heredada a un marco moderno
Como he estado trabajando aquí, he estado agregando funciones modernas/tratando de limpiar un poco la base de códigos. Agregué un poco de jQuery a donde estaba expuesto, introduje un poco de seguridad con las validaciones de entrada, limpié algunos de los módulos para emplear principios de JavaScript discretos, etc. Mi trabajo aquí es en módulos nuevos, así que no estoy expuesto a muchos de los viejos lógica. He tratado de introducir las mejores prácticas para todo mi trabajo en su infraestructura actual, pero me veo obligado a llamar a gran parte de su código anterior para que mis cosas sean consistentes.
Han llegado a un punto en el que ahora están considerando una actualización masiva del sistema. Quieren mejorar la capacidad de mantenimiento de la base de código e intentar pasar a algún tipo de aplicación moderna de tipo marco/MVC. Gran parte del sistema es anterior a XHTML con marcado estilístico en línea, llamadas a javascript: función(), sin pruebas de unidades, anterior a Hibernate, etc. Hay una mezcla de out.println html generation y llamada jsp's dentro del Servlet.
Algunas aplicaciones que han estado buscando incluyen Wicket, Struts, Tapestry y posiblemente Grails. El problema es que el cambio a cualquiera de estos puede requerir una gran reescritura de un sistema que ya está en uso y no pueden volver a comenzar.
Mi pregunta es: ¿Cuál sería la mejor manera de migrar una base de código heredado como este a un marco más moderno manteniendo la lógica de negocios existente (no tiene sentido reescribir cosas que han sido probadas y funcionan).
Algunas de las ideas que se están pensado incluyen:
escribir una en casa sistema de plantillas que trabajaría con su infraestructura actual (generar páginas de manera coherente)
código de puerto a una marco como el tapiz (reutilizando gran parte de su código anterior)
reescribe el sistema desde cero utilizando un marco moderno pero copiando la lógica del sistema antiguo (si es posible)
mantener el sistema antiguo como es y simplemente actualizar las páginas de front-end para darle un aspecto más moderno (podría ser mejor dado tiempo/dinero, etc.)
cuál es la mejor manera de actualizar el legado Código Java Servlet a un marco moderno (utilizando prácticas modernas para un mantenimiento sencillo, pruebas unitarias, DRY) manteniendo la lógica intacta.
cualquier idea es bienvenida.