Back y Arquitectura

Guía de uso de Initializr

Un Initializr es un API que permite crear un proyecto con sus dependencias de manera rápida y sencilla. En el caso de Onesait, contamos con un Initializr que tiene como principal función proporcionar un arquetipo de inicialización al usuario con el propósito de acelerar la creación de un Microservicio con estructura y estándares Onesait, y que incluye Maven y Spring.

La herramienta permite crear un nuevo proyecto en blanco, o bien añadir una serie de módulos y librerías de manera automatizada gracias a la selección de los mismos desde los cuadros seleccionables. Las nuevas utilidades serán añadidas al proyecto mediante la inclusión automática de dependencias en el pom.xml de la nueva aplicación y la inclusión de las clases de configuración de cada funcionalidad en el caso de que fuesen necesarias.

Si queréis probar la herramienta y tenéis permisos de acceso, podéis descargaros el CLI de Initializr desde nuestro GitLab.

Tecnologías

Para el desarrollo del proyecto, se hace uso de las siguientes tecnologías:

  • Maven: Para la resolución de dependencias.
  • Java: Para la implementación del módulo de aplicación.
  • Lombok: Para la simplificación del uso de métodos de clase.
  • Jenkins: Ficheros de configuración para la conexión al pipeline de arquitectura. Para más información consultar el apartado de instrucciones de configuración de Jenkins.
  • Swagger Codegen: utilizado para la generación de código.

Módulos y librerías disponibles

A continuación mostramos un listado con todos los módulos y librerías que pueden importarse al nuevo proyecto. Las versiones de las librerías vienen aportadas por el «architecture-dependencies», el cual aporta las versiones más actuales de las dependencias más utilizadas.

Librerías incluidas generadas por el Initializr

LibreríaDescripciónVersión incluida
architecture-
dependencies
Librería que añade las versiones de las librerías más utilizadas de Spring y de arquitectura.0.0.1-SNAPSHOT
audit-libLibrería que permite auditar las operaciones de nuestro servicio para almacenar dichos registros y que, posteriormente, puedan ser explotados.0.0.4-SNAPSHOT
architecture-
extrautilities-
currency
Librería para facilitar el cambio de valor entre diferentes divisas.0.0.3-SNAPSHOT
architecture-
extrautilities-time
Librería para facilitar el uso y conversión entre diferentes franjas horarias.0.0.3-SNAPSHOT
architecture-utilsDependencia que engloba una serie de funcionalidades que podrán ser útiles a lo largo del desarrollo de microservicios.1.0.5-SNAPSHOT
drools-platformServicio para hacer uso de reglas de negocio alojadas en OP.1.0.2.RELEASE
hazelcast-platformServicio para agilizar el uso de HazelCast y abstraernos de la configuración, todo ellos sobre la OP.1.0.5.RELEASE
logback-fluentdDependencias y configuración para enviar logs a Fluentd.
onesaitplatform-
iotclient4springboot
Librería Java preparada para funcionar sobre Spring Boot y que simplifica el acceso al DigitalBroker de la Onesait Platform.2.0.2-RELEASE
onesaitplatform-web-
security-client
Dependencia de seguridad delegada en la OP.1.5.0-RELEASE
spring-boot-admin-starter-clientDependencia para la monitorización mediante Spring Boot Admin.2.3.0
spring-cloud-starter-
config
Dependencia y configuración para un cliente que recoge su configuración de un servidor de Spring Cloud Config.2.2.5.RELEASE
spring-cloud-starter-
kubernetes-config
Dependencia y configuración para un cliente que recoge su configuración de ficheros de configuración de Kubernetes.1.1.6.RELEASE
spring-data-jpaDependencia de notificaciones a la
Plataforma usando Spring Data JPA.
spring-data-mongoDependencia de notificaciones a la Plataforma usando Spring Data Mongo.
user-administratorLibrería para facilitar el uso y abstracción de la gestión de usuarios de la OP.1.2.4.RELEASE

Módulos incluidos generados por el Initializr

MóduloDescripciónVersión incluida
api-validator-
pipeline
Pipeline de jenkins para realizar test periódicos a una API.
app-
monitoring
Monitorización de microservicios mediante Spring Boot Admin.0.0.1-SNAPSHOT
login-backendMódulo de inicio de sesión por oauth2 contra la OP, incluye la libreria user-administrator.1.0.0-RELEASE
springbatch-
example
Ejemplo de uso y configuración de Spring Batch.
spring-cloud-configMódulo con función de servidor encargado de recoger coniguraciones de una fuente de datos y servirlas a proyectos clientes.0.0.1-SNAPSHOT
user-
administrator
Módulo para facilitar el uso y abstracción de la gestión de usuarios de la OP.1.2.4.RELEASE

Estructura del proyecto generado

Seguidamente, vamos a detallar la estructura generada por una ejecución de un ciclo de operaciones como el «init». Si observamos la ejecución, vemos que bajo la ruta especificada se ha generado el proyecto con el nombre de «onesait-<artifactId>». Bajo este directorio, se generará la siguiente estructura:

  • Directorio «/sources»:
    • pom.xml: dependencias Spring Boot, Spring Security, repositorios de la Onesait Platform, plugin package de Maven, librería de utilidades de Onesait, etc.
    • podTemplate.yaml
    • settings.xml
    • JenkinsFile
    • /docker: Dockerfile básico para la aplicación.
    • /src/main/java/com/minsait/onesait/<artifactId>:
      • /configuration: añade las clases de configuración de OpenApi y Spring Security.
      • /controllers: contiene un controlador REST de ejemplo. En caso de que se especifique el fichero YAML de descripción de las APIs, se crearán las clases correspondientes.
      • /model: contiene unos modelos de ejemplo. En caso de que se especifique el fichero YAML, se crearán las clases correspondientes.
      • /service: contiene los servicios y sus implementaciones de ejemplo.
      • Application.java

Configuración

Fichero YAML

Adicionalmente a la hora de crear un microservicio haciendo uso del Initializr, se puede adjuntar un fichero YAML de descripción de las APIs del proyecto. Con esto, el Initializr, aparte de generarnos el microservicio base con las dependencias que le hayamos configurado, generará los controladores y modelos para dicha documentación.

Instrucciones de configuración de Jenkins

Los proyectos generados contienen una configuración por defecto para utilizar el pipeline de Jenkins vinculado a un repositorio de Git. Para ello, se proporciona un fichero JenkinsFile y un PodTemplate.yaml, que deben ser modificados para que apunten al repositorio en cuestión. También se incluye un fichero settings.xml que proporciona los accesos al Nexus de arquitectura por defecto.

Además de la modificación de dichos ficheros, se deberá de pedir la creación del pipeline al equipo de DevOps, que cuelgue de la seed correspondiente.

Imagen de cabecera: modificado de Luke Thornton en Unsplash

✍🏻 Author(s)

Deja una respuesta