entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Como manejar varios proyectos en Java con pequeños cambios entre si

Tengo varios proyectos en java con pequeños cambios entre si para cada cliente, las diferencias entre ellos son:

  • jrxml de reportes diferentes
  • properties de configuración diferentes
  • Cambio en las clases estáticas

Cuando tengo que actualizar, hago los commit a un SVN y generando los WAR para cada proyecto (aprox 90mb c/u) usando el Jenkins.
Estos WAR los subo por FTP y los instalo en cada servidor.

El problema que estoy teniendo es el tiempo que me lleva hacerlo de esta manera, que está entre las 3 y 4 horas para 6 proyectos cada semana

  1. Es posible que todos los clientes se manejaran con un solo proyecto (un solo WAR) y separar las diferencias fuera del war?
  2. Cual seria la mejor manera de hacerlo?
  3. Esto es recomendable o hay alguna manera mejor de manejarlo?

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola Wilson,

lo que mencionás se encasilla dentro de la Ingeniería del Software en dos tópicos: Gestión de la Configuracuión y Despliegue (deploy).

Yo primero te recomendaría echar un vistazo a la bibliografía existente sobre el tema para comprender bien los aspectos de la cuestión. Podría ser en Ingeniería del Software de Pressman o en el de Sommerville

Por lo que contás, mucho del despliegue se puede automatizar mediante scripts que se conecten a los servidores y suban los archivos nuevos.

Lo de la configuración, hay varias formas de encararlo dependiendo de qué tan semejantes son los proyectos y de qué código comparten:

  • tener un proyecto y varias ramas (branch), una para cada cliente
  • tener un core central y que cada proyecto específico lo use, de manera tal de solo concentrarte en lo particular de cada cliente.
  • tener todo el software integrado con todas las funcionalidades y que, dependiendo de la configuración, cada uno funcione como es necesario.
  • aislar las interfaces para que se manejen por fuera del proyecto, de manera que un cambio visual no implique cambios en el funcionamiento.

Mucho de esto depende de la arquitectura, del paradigma de programación y un poco también de gustos.

Te dejo algunos enlaces sobre Gestión de la Configuración, hasta que encuentres los libros:

http://es.wikipedia.org/wiki/Gesti%C3%B3n_de_configuraci%C3%B3n_de_software
http://es.wikipedia.org/wiki/Software_Configuration_Management
http://www.monografias.com/trabajos99/gestion-configuracion-del-software/gestion-configuracion-del-software.shtml

Saludos!

0voto

Wilson comentado

Los proyectos entre si son en un 90-95 % iguales, solo cambian algunos reportes para las impresiones, configuracion y una o dos funcionalidades. el proyecto usa MVC2 y AOP.
en donde el mayor tiempo al actualizar esta en el despliege de los nuevos WAR en los clientes.

que me recomendas para este caso, que lo maneje en ramas o de alguna otra forma?

0voto

Leonardo-Tadei comentado

Hola Wilson,

si el despliegue consiste en poner los 6 WAR vía FTP en cada servidor, podrías hacer un script que lo automatice. Si luego de subir los WAR tenés que hacer alguna tarea administrativa, tendrías que ver si es posible crear un script en el propio servidor que la haga. Incluso si podés trabajar del lado del servidor, podrías hacer que sea el propio servidor el que traiga el WAR y haga las tareas.

Los scripts serán distintos dependiendo de la plataforma. Acá todos los servidores que usamos con GNU/Linux y la mayoría Debian, con lo que este tipo de tareas se escriben en BASH (la mayoría) o en PERL o en PHP CLI, y algunos, después de la actualización relanzan servicios y hasta ejecutan alguna prueba de funcionamiento.

Eso sí, el tiempo de transferencia a los servidores depende de la velocidad de la conexión, y nada de esto lo mejora.

Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta