Arquitectura del repositorio de librerías MADEJA

RECU-0329 (Recurso Ficha Técnica)

Descripción

Introducción

Con la finalidad de:

  • Garantizar la corrección de las librerías instaladas
  • Organizar el conjunto de librerías en base a una serie de criterios
  • Definir un único punto de acceso al conjunto de librerías

El repositorio de librerías MADEJA se organiza en base a un diseño arquitectónico cuyas principales características se pueden observar a continuación

Uso en MADEJA

El repositorio de librerías de MADEJA está orientada principalmente a la gestión de entregas software, más que al desarrollo propio. Por este motivo, se requiere un organización del repositorio distinta a las que viene siendo el estandar de facto orientado a releases y snapshots.

Arquitectura lógica

Esta ficha presenta la arquitectura del repositorio de librerías corporativo de MADEJA. Las ideas claves de la siguiente arquitectura son:

  • Definir diferentes repositorios en función del tipo de artefacto que se va a almacenar en él. Se tendrán en cuenta criterios como si el artefacto está publicado ya en algún repositorio o no, si el artefacto es de libre distribución o no, y si el artefacto está generado dentro del ámbito de algún proyecto de la Junta de Andalucía.
  • Agrupar los diferentes repositorios citados anteriormente en función de las necesidades

A continuación se muestra el diagrama con la arquitectura lógica del repositorio:

Arquitectura lógica del repositorioArquitectura lógica del repositorio

El repositorio MADEJA queda representado por el recuadro en rojo. El repositorio a su vez, se compone de tres grandes repositorios:

  • LEGACY: este repositorio tiene como objetivo extender la vida de los proyectos que estaban utilizando el repositorio anterior. De esta manera este repositorio LEGACY, se configurará como proxy a MADEJA Artifactory.
  • Internal: éste será el nuevo repositorio MADEJA de cara a la Intranet de la Junta, que contendrá la nueva organización de los artefactos atendiendo a la necesidades detectadas:
    • JA-PROXY. Grupo de repositorios proxy-caché a los repositorios publicados por terceras partes(Maven Central, etc). En caso que un determinado proyecto necesite de un artefacto publicado en un repositorio (por ejemplo las librerías de Jboss), habrá que dar de alta dicho repositorio como proxy.
    • JA-FREE. Este repositorio será el encargado de recoger el conjunto de artefactos de libre uso que no estén disponibles en ningún repositorio maven, si y solo si esté permitida su libre distribución.
    • JA-NON-FREE. Este repositorio será el encargado de recoger el conjunto de artefactos de libre uso que no estén disponibles en ningún repositorio maven, pero que sin embargo no esté permitida su libre distribución.
    • JA-ARTIFACTS. Este repositorio será el destino de todos los artefactos generados a partir de los proyectos de la Junta de Andalucía.
  • External: éste será el nuevo repositorio MADEJA de cara a Internet. Estará formado por los mismos repositorios de Internal descritos anteriormente exceptuando JA-NON-FREE, ya que este repositorio contendrá artefactos cuya licencia no permite distribuirlos libremente.

Este será el repositorio al que deben apuntar los proveedores para la construcción de los proyectos.

El nuevo repositorio interactúa con distintos elementos:

  • HUDSON. Este elemento se encarga de compilar y construir los proyectos. Para ello solicita al repositorio MADEJA el conjunto de artefactos que tiene como dependencia. Además, HUDSON se ocupará de desplegar en el repositorio MADEJA aquellos artefactos que han sido construidos a partir del código fuente de los proyectos.
  • Artifactory LEGACY. Este elemento representa al anterior repositorio maven existente.
  • 3rd Party Repositories. Este elemento representa a cualquier repositorio maven de terceras partes, en el que publican sus propios artefactos para que otros puedan utilizarlo.
  • Repository Administrator. Este elemento representa al administrador de Artifactory, que normalmente será la Oficina de Testing de CEIC. Ésta será la encargada gestionar las dependencias de los proyectos, y localizar aquellas dependencias que no estén publicadas en ningún sitio para desplegarla en los repositorios FREE y NON-FREE
  • JA Dedicated Repositories. Este elemento representa a los repositorios que las distintas consejerías u organismos tienen para publicar sus propios artefactos. En estos repositorios sólo deberían tener cabida aquellos artefactos cuyo groupId fuera del tipo 'es.juntadeandalucia.*'. Todo artefacto que esté publicado en internet ya sea en un repositorio maven o por descarga del autor, no estarán en este repositorio. Al entregar la consejería u organismo el código fuente de un proyecto, debe subir a este repositorio el conjunto de librerías (sólo aquellas con groupId del tipo "es.juntadeandalucia.*") que el proyecto necesita para construirse.

Arquitectura física

Como materialización de la arquitectura lógica, se presenta a continuación la arquitectura física. Esta información puede ampliarse con el Esquema lógico de la infraestructura de la Junta de Andalucía, incluyendo información sobre direccionamiento.

A continuación se propone dos opciones (básica y avanzada) para la implantación del repositorio. Principalmente se diferencian por el volumen de infraestructuras utilizado. Ambas opciones permitirían la instalación del sistema en condiciones satisfactorias e incluso podrían ejecutarse en 2 fases: ejecutando primero la opción básica para una rápida implantación del sistema, y posteriormente ampliar las infraestructuras para cubrir los requisitos de la opción avanzada.

Propuesta básica

En la siguiente figura se puede apreciar la propuesta de arquitectura física básica:

Esta opción tiene las siguientes ventajas e inconvenientes:

  • Ventajas:
    • Menor volumen de infraestructuras
    • Mayor rapidez y simplicidad en la implantación
  • Inconvenientes:
    • No proporciona características de alta disponibilidad
Propuesta avanzada

En la siguiente figura se puede apreciar la propuesta de arquitectura física avanzada:

Esta opción tiene las siguientes ventajas e inconvenientes:

  • Ventajas:
    • Proporciona características de alta disponibilidad en configuración activo-pasivo
  • Inconvenientes:
    • Mayor volumen de infraestructuras
    • Mayor dificultad en la implantación

Jerarquía de repositorios

A continuación se presenta la jerarquía de repositorios definidas en Artifactory en la que se identifican el tipo de repositorio creado, y como se relacionan entre ellos.

Se aprecia como tanto ja-internal como ja-external se organizan internamente prácticamente de la misma manera. La única excepción es que ja-external no integra el repositorio ja-non-free-repo para evitar problemas de licenciamiento de librerías de terceros.