Me uní a una nueva compañía hace aproximadamente un mes. La compañía es bastante pequeña y tiene una sensación de "arranque" bastante fuerte. Estoy trabajando como desarrollador de Java en un equipo de 3 personas más. La compañía vende principalmente un servicio para que las personas de negocios o negocios lo usen para comunicarse entre ellos.¿Cuál es la mejor manera de migrar una aplicación web desordenada existente a MVC elegante?
Una de las cosas principales que he estado trabajando en, es el sitio web principal de la empresa: desde que se vende el servicio, los usuarios existentes inician sesión para verificar su servicio y pagar sus facturas, los nuevos usuarios pueden firmar para una prueba, etc. Actualmente se trata de una aplicación JSP implementada en Tomcat, con acceso a una base de datos a través de una capa de persistencia escrita por la propia empresa.
Una frustración repetida y cada vez mayor que estoy teniendo aquí (y estoy bastante contento con el trabajo en general, por lo que este no es un "oh no, no me gusta mi trabajo" tipo de publicación) es la falta de cualquier diseño o arquitectura más grande para esta aplicación web. La aplicación se compone de varias docenas de páginas JSP, con casi ninguna lógica existente en Servlets o Beans o cualquier otro tipo de marco. Muchas de las páginas JSP son miles de líneas de código, jsp:include
otras páginas JSP, la lógica empresarial está mezclada con HTML, los fragmentos de código utilizados con frecuencia (como la obtención de una conexión de servicio web) se cortan y pegan en lugar de reutilizarse, etc. En otras palabras, la aplicación es un desastre.
Hubo algunos rumores dentro de la compañía de tratar de rediseñar este sitio para que se ajuste mejor a MVC; Creo que los desarrolladores y los superiores están empezando a darse cuenta de que este patrón actual de código de spaghetti no es sostenible o muy fácilmente escalable para agregar más características para los usuarios. Los superiores y los desarrolladores son reacios a reescribir por completo el tema (con buenas razones, ya que esto implicaría varias semanas o meses de trabajo para volver a escribir la funcionalidad existente), pero hemos tenido algunas discusiones sobre (lentamente) escribir ciertas áreas del sitio en un nuevo marco.
¿Cuáles son algunas de las mejores estrategias para permitir mover la aplicación y la base de código en esta dirección? ¿Cómo puedo realmente, como desarrollador, ayudar a avanzar en esto, y rápidamente, sin parecer el tipo nuevo que entra en un trabajo y les dice a todos que lo que han escrito es basura? ¿Hay alguna estrategia o experiencia probada que hayas utilizado en tu propia experiencia laboral cuando te encuentras con este tipo de cosas?