Icono del sitio ICPINFO

Construcción de aplicaciones de microservicio

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

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

 

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"
    ]
  }
}

 

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:

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.

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.

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)

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

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)

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
  }
}

Para ellos usamos los siguientes comandos.

cd ..
mkdir microservice
cd microservice
jhipster

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:

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:

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

Salir de la versión móvil