Prerrequisitos y primeros pasos.

Instalación de herramientas. Creación de aplicación de microservicio y gateway, despliegue de servidor de registro.

Para poder ejecutar todos los pasos del tutorial satisfactoriamente debemos tener instaladas y configuradas las siguientes herramientas:

Verificar el estado de instalación mediante los siguientes comandos:

java -version
git –version
npm –version
yarn –version
mvn –version
docker –version

tools check

De haber problema con alguna, revisar las variables de entornos home y path, asi como accesos y permisos a los binarios.

Una vez que las herramientas principales estén operativas vamos a instalar otras herramientas para la generación de código de jHipster.

yarn global add yo (Instalamos Yeoman)
yarn global add generator-jhipster (Instalamos el generador de código de jHipster)

Para verificar que todo este correcto podemos ejecutar.

yo --version
jhipster --version

 

generator check

Una vez que tengamos todo funcionando podemos proceder a crear las aplicaciones como tal.

Creamos una carpeta para mantener nuestras aplicaciones y configuraciones organizadas.

mkdir microservicios-spring/gateway
cd microservicios-spring/gateway

Vamos a comenzar con la aplicación de tipo Gateway. El generador de jHipster se puede usar de dos formas, mediante una serie de entradas en la consola o mediante un fichero JSON de configuración ubicado en la misma carpeta llamado: .yo-rc.json. En cualquier caso solo se necesita ejecutar el comando «jhipster».

{
  "generator-jhipster": {
    "promptValues": {
      "packageName": "com.mycompany.myapp",
      "nativeLanguage": "en",
      "microservicePath": "../microservice"
    },
    "jhipsterVersion": "4.14.0",
    "baseName": "gateway",
    "packageName": "com.mycompany.myapp",
    "packageFolder": "com/mycompany/myapp",
    "serverPort": "8080",
    "authenticationType": "jwt",
    "cacheProvider": "hazelcast",
    "enableHibernateCache": false,
    "websocket": false,
    "databaseType": "sql",
    "devDatabaseType": "h2Disk",
    "prodDatabaseType": "postgresql",
    "searchEngine": "elasticsearch",
    "messageBroker": false,
    "serviceDiscoveryType": "eureka",
    "buildTool": "maven",
    "enableSocialSignIn": false,
    "enableSwaggerCodegen": false,
    "jwtSecretKey": "634535e3ee93d261a1150edeb16ad1402fd43f26",
    "clientFramework": "angularX",
    "useSass": true,
    "clientPackageManager": "yarn",
    "applicationType": "gateway",
    "testFrameworks": [
      "gatling",
      "protractor"
    ],
    "jhiPrefix": "jhi",
    "enableTranslation": true,
    "nativeLanguage": "en",
    "languages": [
      "en",
      "es"
    ]
  }
}

 

  • Application type: Microservice gateway
  • Base name of the application: gateway
  • Port: 8080
  • Default package name: org.jhipster. gateway
  • JHipster Registry: Yes
  • Type of authentication: JWT
  • Type of database: SQL
  • Production database: PostgreSQL
  • Development database: H2 with disk-based persistence
  • Maven or Gradle: Maven
  • Other technologies: Elasticsearch
  • Client framework: Angular 4
  • Sass for CSS: Yes
  • Internationalization support: Yes
  • Native language: English
  • Additional languages: Spanish
  • Testing frameworks: Gatling, Protractor
  • Install other generators from the JHipster Marketplace: No

generator init

Luego de algunos minutos (dependiendo de la velocidad de internet) va a estar lista la aplicación.

Una vez creada la aplicación podemos agregar algunas entidades. Este paso generalmente implica:

  • Una tabla en la base de datos
  • Entrada de cambios en Liquibase
  • Una clase entidad de JPA
  • Una interfaz de repositorio de Spring Data
  • Una clase controladora de Spring MVC
  • Modelo, componente y servicio de Angular.
  • Páginas HTML
  • Pruebas unitarias
  • Pruebas de performance

La buena noticia es que jhipster tiene un sub-generador de entidades que hace todo ese trabajo, incluso puedes hacer uso de una herramienta online basada en modelos UML: https://start.jhipster.tech/jdl-studio/ que genera un fichero de extensión .jh que contiene en formato JSON las definiciones de cada entidad y sus relaciones. Usaremos un fichero de ejemplo que provee dicha herramienta: jhipster-jdl.jh.

jdl screen

Una vez descargado el fichero de ejemplo del sitio de JDL lo copiamos en la carpeta de nuestra aplicación ejecutamos el siguiente comando.

jhipster import-jdl jhipster-jdl.jh

Va a solicitar que confirme la sobreescritura de varias configuraciones, entre “a” a todas.

generator entities

Una vez terminado el proceso puede abrir la aplicación con el IDE preferido, realizar todas las modificaciones que desee y subir el código fuente su repositorio.

Como es una aplicación de tipo Gateway requiere que esté ejecutándose un servidor de registro para poder funcionar correctamente, en este caso usaremos uno pre-construido por jhipster: que ya tiene todos nuestros componentes de arquitectura integrados y configurados.

Nos ubicamos en la carpeta contenedora: “microservicios-spring” y ejecutamos el siguiente comando:

git clone https://github.com/jhipster/jhipster-registry.git registry

El servidor de registro de JHipster esta basado en Spring Cloud Netflix y Spring Cloud Config. Incluye un servicio de descubrimiento (Eureka), tolerancia a fallos (Hystrix), servidor perimetral (Zuul) y balanceador de carga (Ribbon).

Para iniciarlo solo necesitamos ejecutar el siguiente comando.

mvn ; yarn start (Win) o mvn && yarn (Linux)

registry up

Luego de descargar todas las dependencias e iniciar la aplicación se puede acceder a la consola por la url:

http://localhost:8761/ user: admin, pass: admin

registry screen

Una vez que el registro se esté ejecutando procedemos a iniciar la aplicación Gateway de la misma forma que hicimos con el servidor de registro.

cd ..\gateway\
mvn ; yarn start (Win) o mvn && yarn (Linux)

gateway screen

Ya tenemos la aplicación Gateway y el servidor de registro funcionando, solo nos queda generar la aplicación de microservicios.

Usaremos el bondadoso generador de jhipster de forma similar que hicimos con el Gateway, pero esta vez con los siguientes parámetros:

{
  "generator-jhipster": {
    "promptValues": {
      "packageName": "org.jhipster.microservice",
      "nativeLanguage": "en"
    },
    "jhipsterVersion": "4.14.0",
    "baseName": "microservice",
    "packageName": "org.jhipster.microservice",
    "packageFolder": "org/jhipster/microservice",
    "serverPort": "8081",
    "authenticationType": "jwt",
    "hibernateCache": "no",
    "clusteredHttpSession": false,
    "websocket": false,
    "databaseType": "mongodb",
    "devDatabaseType": "mongodb",
    "prodDatabaseType": "mongodb",
    "searchEngine": false,
    "messageBroker": false,
    "serviceDiscoveryType": "eureka",
    "buildTool": "maven",
    "enableSocialSignIn": false,
    "jwtSecretKey": "ea21b5b635606be4d7937e29926166e0ee56abb1",
    "enableTranslation": true,
    "applicationType": "microservice",
    "testFrameworks": [
      "gatling"
    ],
    "jhiPrefix": "jhi",
    "skipClient": true,
    "skipUserManagement": true,
    "nativeLanguage": "en",
    "languages": [
      "en",
      "es"
    ],
    "clientPackageManager": "yarn",
    "cacheProvider": "no",
    "enableHibernateCache": false
  }
}
  • Application type: Microservice application
  • Base name of the application: microservice
  • Port: 8081
  • Default package name: org.jhipster. microservice
  • Type of authentication: JWT
  • Use JHipster Registry: Yes
  • Type of database: MongoDB
  • Maven or Gradle: Maven
  • Other technologies: None
  • Internationalization support: Yes
  • Native language: English
  • Additional languages: Spanish
  • Testing frameworks: Gatling
  • Install other generators from the JHipster Marketplace: No

Para ellos usamos los siguientes comandos.

cd ..
mkdir microservice
cd microservice
jhipster

microservice generator

Le agregamos una entidad utilizando el sub-generador, esta vez como sólo es una usaremos el método de entrada por consola:

jhipster entity product

Con las opciones:

  • Do you want to add a field to your entity? Yes
  • What is the name of your field? name
  • What is the type of your field? String
  • Do you want to add validation rules to your field? Yes
  • Which validation rules do you want to add? Required
  • Do you want to add a field to your entity? Yes
  • What is the name of your field? price
  • What is the type of your field? BigDecimal
  • Do you want to add validation rules to your field? Yes
  • Which validation rules do you want to add? Required
  • Do you want to add a field to your entity? No
  • Do you want to use separate service class for your business logic? No
  • Do you want pagination on your entity? Yes, with pagination links

microservice entity

Ahora le generamos el código de interfaz de usuario de la nueva entidad, en este caso en la aplicación Gateway.

cd ..\gateway
jhipster entity product

Entramos las siguientes opciones:

  • Do you want to generate this entity from an existing microservice? Yes
  • Enter the path to the microservice root directory: ../microservice
  • Do you want to update the entity? Yes
  • Overwrite src\main\webapp\app\entities\entity.module.ts? a

De este modo tendremos nuestras aplicaciones de gateway y de microservicios construida, sincronizadas y listas para ser desplegadas.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

%d