tutorial practicas libros example escritorio crear con aplicaciones aplicacion java deployment web-applications configuration maven-2

practicas - javafx tutorial netbeans



Solución de implementación automatizada para múltiples aplicaciones web Java (9)

Estoy buscando soluciones, preferiblemente de código abierto, que puedan administrar implementaciones de múltiples aplicaciones web Java interdependientes.

La solución requiere la capacidad de crear y almacenar una especificación de lanzamiento que contenga múltiples elementos para las versiones específicas de cada aplicación y otros artefactos relevantes (configuración de base de datos, configuración de apache, etc.).

La especificación debe analizarse y cada elemento debe implementarse / ejecutarse en un entorno de destino. El entorno de destino está basado en Linux. Las aplicaciones web son guerras de vainilla que se ejecutan en un servidor de aplicaciones estándar j2ee.

Mucho que preguntar

Actualmente creo que todos los bits están en su lugar: los artefactos binarios se publican con el complemento de versión maven y, por lo tanto, están disponibles en nuestro repositorio de maven para la implementación, la base de datos está versionada con dbdeploy y la configuración apache está versionada en svn . Sin embargo, no conozco ninguna herramienta que pueda juntar todos estos pasos en múltiples aplicaciones.

Mi enfoque preferido actual es usar una forma de compilación parametrizada para hudson para crear la especificación. Luego, una segunda compilación parametrizada para seleccionar una especificación creada previamente y desplegarla / ejecutarla en un entorno elegido.

Sin embargo, esto parece ser mucho trabajo y una solución personalizada menos que óptima.

¿Alguien sabe alguna idea mejor precompilada? o sugerencias sobre cómo abordar esto: ¿tal vez un motor de flujo de trabajo sería mejor que Hudson? Tal vez una aplicación web personalizada?

Notas:

Los entornos de destino están preconstruidos con todos los requisitos establecidos, por ejemplo, java y el servidor de aplicaciones instalado, la base de datos ejecutándose, etc. Esta es una pregunta de configuración de entorno menos y más una pregunta de implementación.

La automatización de la implementación de aplicaciones individuales es un problema con muchas soluciones, por ejemplo, la carga, los scripts de implementación de hormigas, etc. Sin embargo, necesito algo que pueda envolver múltiples implementaciones. Por ejemplo, iniciar la carga en versiones específicas de múltiples aplicaciones y sus requisitos.


Dado que este hilo antiguo aparece primero en la búsqueda de google, quiero agregar una nueva alternativa:

Ansible ejecuta comandos sobre SSH y es muy fácil de configurar y usar. Solo toma unas pocas horas entender los conceptos y comenzar a escribir sus propias tareas.

Extracto del sitio:

Además de no requerir demonios ni bootstrapping, el lenguaje Playbook de Ansible es el lenguaje de administración de sistemas más simple que existe. Se lee como inglés. Creemos que tiene otro trabajo que hacer, por lo que queremos que haga las cosas rápidamente y se salga de su camino.


El despliegue es un negocio complicado. Maven tiene muchos de los complementos que podría necesitar para administrar una implementación, pero se necesita algo de configuración para que haga exactamente lo que quiere. A continuación se describe cómo se podrían abordar cada uno de sus problemas. Aunque dependiendo de su entorno, podría ser más problemático de lo que vale.

El complemento de carga de Maven se puede utilizar para implementar las aplicaciones. Obviamente, esto puede ser bastante complicado, pero Cargo es una herramienta bastante buena para administrar implementaciones.

El proceso de compilación podría empaquetar la configuración de apache como un contenedor independiente y desplegarlo en el repositorio, luego descargarlo / publicarlo para usarlo en su contenedor de implementación (el complemento de dependencia se puede usar para extraer el archivo de configuración del repositorio). Alternativamente, Maven tiene una api de scm que se puede usar para invocar comandos arbitrarios contra su repositorio de SCM (consulte esta respuesta para ver un complemento de ejemplo que utiliza la API de SCM).

Por lo que sé, no hay un complemento de Maven para dbdeploy, pero esta publicación del blog muestra cómo se puede usar el maven-antrun-plugin script de la implementación.


Mi sugerencia es usar una combinación de herramientas (separación de inquietudes, la herramienta correcta para el problema correcto) que le ayudará a lograr su objetivo, permítame mencionar algunas de las que he usado:

Además de las herramientas mencionadas anteriormente, hay otras que pueden ser útiles y puede usarlas de acuerdo con las necesidades de su proyecto: http://www.oracle.com/technetwork/articles/java/deployment-tools-2227133.html

Ahora hablando del problema. Lo primero que noté es que mencionó que ya tiene sus artefactos de lanzamiento en su administrador de repositorios (como Artifactory), por lo que el siguiente paso que debemos hacer es una forma de orquestar el despliegue de estos artefactos al mismo tiempo. Creo que una opción es usar la Compilación Paremeterizada ( https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build , donde debe definir múltiples parámetros que contendrán las diferentes versiones de los artefactos que desea para implementar, una vez que el usuario complete estos valores, los utilizaremos para pasar como parámetros a un trabajo de revisión (rundeck es una herramienta que le ayuda a organizar tareas en diferentes nodos), este trabajo maestro de implementación de revisión recibirá los parámetros y organizará los Implementación de sus artefactos Algunos ejemplos de los pasos que contendrá un trabajo de revisión son: detener su contenedor, hacer una copia de seguridad de sus componentes actuales, iniciar su contenedor, descargar sus artefactos desde su administrador de repositorio, crear recursos i n su contenedor, implemente sus componentes en su contenedor, ejecute su despliegue de base de datos, envíe un correo electrónico si el proceso falla, etc. Generalmente, cada uno de estos pasos son sub-trabajos (que también reciben parámetros), y al final creamos uno trabajo maestro que utiliza / orquesta todos estos sub-trabajos.

Permítanme agregar algunos ejemplos de imágenes de este tipo de proceso de CD. Este ejemplo solo implementa artefactos de Guerra / Oído, pero puede ayudarte a ver el panorama general:

https://drive.google.com/folderview?id=0B-FVAopZZjDWdGl0WlNjX1RnRDQ&usp=sharing

Espero que esto pueda ser de ayuda.


Parece que Apache Ace resolverá tu problema con alguna otra herramienta como Aries. ACE realiza un seguimiento de las dependencias. Puedes cotejar tu característica y formar una distribución. A continuación, puede seleccionar los destinos en los que se debe implementar la distribución. Proporciona API RESTful también.

Apache ACE

Apache ACE es un marco de distribución de software que le permite administrar y distribuir centralmente los componentes de software, los datos de configuración y otros artefactos a los sistemas de destino. Se construye utilizando OSGi y se puede implementar en diferentes topologías. Los sistemas de destino generalmente también están basados ​​en OSGi, pero no tienen que serlo.

http://ace.apache.org/


Parece que necesitas un chef para cocinar tu configuración :)



Tengo requisitos muy similares. Centrándose en las implementaciones de aplicaciones en lugar de implementaciones de entornos, ¡parece que http://www.kwatee.net/product encaja perfectamente!

  • Interfaz web para crear / configurar y controlar los despliegues.
  • Soporte de despliegue multiplataforma
  • Gestión de versiones, implementaciones de actualizaciones incrementales.
  • Utilice los comandos de shell del plan cuando sea necesario
  • Ligero y fácil de usar entender y administrar

Visite ControlTier , una herramienta de implementación de código abierto basada en un repositorio de Base de Datos de Gestión de la Configuración (CMDB) que pretende ser un sistema completo, listo para la empresa, para automatizar la implementación y la administración de servicios de aplicaciones distribuidas y de múltiples niveles . Según su website :

ControlTier es un sistema de software multiplataforma impulsado por la comunidad que se utiliza para coordinar las actividades de administración de servicios de aplicaciones en múltiples nodos y niveles de aplicaciones. El proyecto es totalmente de código abierto y muchas de las contribuciones del proyecto provienen del trabajo de consultoría en curso de DTO Solutions para operaciones de comercio electrónico a gran escala, software como servicio y servicios financieros. Vaya a Installation para obtener e instalar el software.

texto alternativo http://controltier.org/mediawiki/images/d/d2/ControlTier_HighLevel.png


glu parece ser una muy buena opción para automatizar implementaciones. Descripción de su sitio web:

¿Qué es glu?

glu es una plataforma de automatización de monitoreo y despliegue de código abierto.

¿Qué problemas resuelve Glu?

Glu está resolviendo los siguientes problemas:

  • desplegar (y monitorear) aplicaciones en un gran conjunto arbitrario de nodos:
    • eficientemente
    • con mínimo / sin interacción humana
    • de forma segura
    • de una manera reproducible
  • garantizar la consistencia en el tiempo (evitar la deriva)
  • detectar y solucionar problemas rápidamente cuando surgen problemas

¿Como funciona?

glu toma un enfoque muy declarativo , en el cual usted describe / modela lo que quiere, y glu puede entonces:

  • Calcule el conjunto de acciones para implementar / actualizar sus aplicaciones.
  • Asegurarse de que se mantenga constante en el tiempo.
  • Detecta y te alerta cuando hay un desajuste.

Es mantenido por Yan Pujante y se originó en LinkedIn, que lo usó internamente.