Separando el extremo delantero del extremo trasero - Tomcat

7

Actualmente estoy trabajando con una compañía que utiliza Java / Tomcat / Spring para el back-end de nuestras aplicaciones web. Como desarrollador de front-end, me siento cada vez más convencido de que el back-end debe ser un proyecto separado del front-end, por varias razones:

1) Construyendo el proyecto : muchos proyectos modernos se construyen con gruñido y otras herramientas frontales. Los objetivos de desarrollo de front-end (concatenación, minificación, pruebas de front-end, pre-procesamiento de CSS) son completamente diferentes de los objetivos de back-end (compilar el código java, pasar las pruebas de back-end, desplegar en un servidor de integración continua)

2) Implementación: Cuando confirmo un archivo javascript o html en nuestro repositorio git, no tiene sentido que nuestra herramienta de implementación continua deba reconstruir y volver a implementar todo el proyecto, pero no tiene forma de diferenciar entre una confirmación de front-end y una confirmación de back-end.

Entonces, ¿cómo reestructurarías un proyecto que anteriormente se implementaba automáticamente desde un solo archivo war, viviendo en un solo repositorio de git, para hacer un back-end y un front end separados? ¿Puedo realmente hacer esto, dado que usamos Spring Framework?

Ahora mismo, mis archivos viven en una mezcla del directorio /webapp/WEB-INF (para las páginas html / plantillas de velocidad) y el directorio /webapp/resources para todo lo demás (js, css, imágenes). Estoy un poco confundido acerca de cómo debo hacer esto cuando Tomcat implementa una gran cantidad de archivos en el directorio /target , también. Si mantengo un repositorio git separado para los archivos front-end, ¿no se eliminará si re-implemento el proyecto back-end?

(Originalmente vengo de un fondo de Apache, donde me pareció tan agradable y simple ...)

    
pregunta yochannah 30.12.2013 - 12:57

1 respuesta

14

En jClarity definitivamente hemos seguido este enfoque. Tenemos un extremo frontal HTML5 "puro": AngularJS, HTML, CSS y una gran cantidad de micro marcos de Javascript, que es un proyecto independiente para el backend - vert.x con una variedad de verticles codificados en idiomas JVM separados según sea apropiado.

El truco es tener una API de mensajería bien definida entre las dos que está probada por las pruebas de integración de estilo JUnit / TestNG (backend) y las pruebas de Jasmine / Selenium (front end).

Ha funcionado realmente bien, una gran separación de inquietudes, ya que la única dependencia es la API de mensajería entre el extremo frontal y el final. Usamos un poco de magia inteligente de Maven para verificar que las dependencias sean correctas entre las dos, así como las pruebas de extremo a extremo.

A pesar de los costos iniciales para configurar todo esto, me ha sorprendido ver con qué rapidez se pueden agregar nuevas funciones con confianza utilizando este enfoque estructurado. Aún mejor, no hay una lógica UI / View apestosa en nuestro código del lado del servidor y viceversa.

En resumen, lo recomiendo altamente :-).

    
respondido por el Martijn Verburg 30.12.2013 - 14:06

Lea otras preguntas en las etiquetas