Ir al contenido principal

Guía tutorial de Red Hat: Cómo crear Microservicios con persistencia con Quarkus

Hoy vamos a ver como enfoca Red Hat la creación de Microservicios con Quarkus, una herramienta que no solo facilita el desarrollo ágil, sino que también contribuye al crecimiento de nuestro negocio. Quarkus se destaca por su capacidad de generar microservicios con un peso mínimo y un consumo de memoria eficiente. Está especialmente diseñado para su despliegue en entornos de contenedores, entornos sin servidor, así como en entornos de nube y Kubernetes.

En publicaciones anteriores, hemos abordado integraciones con Red Hat, que puedes consultar aquí, específicamente hablamos de Red Hat Fuse, ahora conocido como Red Hat Integration. Esta solución de Red Hat se centra en integrar sistemas con una visión actualizada y orientada a la nube, conocido comúnmente como ESB en sistemas más legacy. 

¿Qué es Red Hat Quarkus? 

Quarkus es un framework Java, que está especialmente orientado a crear y desplegar aplicaciones Java en la nube, con un tamaño y consumo mínimo. Adaptado para seguir los estándares empresariales de Jakarta, se apoya en los frameworks MicroProfile, RESTEasy o Hibernate para la creación de los microservicios. 

Todo esto, por supuesto, respaldado por el soporte de Red Hat, una empresa multinacional que proporciona soluciones de software de código abierto a nivel empresarial. Está perfectamente integrado en un ecosistema de aplicaciones líderes en el sector como Kubernetes, ActiveMQ, Kafka, OpenShift, etc.

Cómo crear Microservicios con persistencia con Quarkus

En este apartado, se detalla un tutorial de Red Hat que te guiará paso a paso en la creación de microservicios con Quarkus, abarcando desde la fase de desarrollo hasta el despliegue final.

1- Desarrollo

Partiendo desde cero, lo mejor es crear la estructura del proyecto con ayuda de un arquetipo. Y esto también lo podemos realizar con una de las herramientas que nos proporciona Red Hat. En este caso el plugin quarkus-maven-plugin y el siguiente comando:

mvn com.redhat.quarkus.platform:quarkus-maven-plugin:2.13.8.Final-redhat-00004:create \
    -DprojectGroupId=com.chakray.example -DprojectArtifactId=ms-with-panache

Para no hacerlo demasiado básico, añadiremos persistencia al microservicio. Lo cual nos permitirá tener el comienzo para generar un microservicio más complejo que nos permita la consulta, creación y edición de datos de una base de datos. En nuestro caso, contaremos con las siguientes librerías principales:

  • Creación de API REST: quarkus-resteasy-reactive
  • Transformación y acceso a datos: quarkus-hibernate-orm-panache
  • Formato de los mensajes: quarkus-resteasy-reactive-jackson

La generación de la API que permite al microservicio ofrecer una interfaz a terceros sistemas, puede ser una de las partes más sencillas, sobre todo si tienes experiencia previa con frameworks de Java empresariales. Aún así daremos una pequeña explicación de cómo poder generar cualquier método:

  • @Path(“/book”): Nos permite indicar cual es la raíz del microservicio, en que contexto atiende a llamadas. También se usa en cada uno de los recursos, si tiene un contexto posterior diferente.
  • @GET, @DELETE, etc : Indica el verbo HTTP con el cual realizaremos la invocación.
  • @QueryParam : Nos permite indicar parámetros que viajan en la URL
  • @PathParam: Nos permite indicar parámetros que forman parte del contexto. Han debido indicarse en la anotación @Path. 
  • @Produces y @Consumes: Nos permite indicar el formato de la salida y de lo que espera de entrada. 

Para la parte de la persistencia utilizaremos Panache, que pondrá a nuestra disposición dos patrones distintos para llevarla a cabo. 

Por un lado tendremos el patrón Repository, donde crearemos una clase intermedia que será la encargada de realizar las operaciones contra la base de datos. Y que al extender de la clase PanacheRepository, pondrá a nuestra disposición un conjunto amplio de métodos básicos de acceso. 

@ApplicationScoped
@Transactional
public class BookRepository implements PanacheRepository<Book>{ }

Y por otro lado contaremos con el patrón Active Record, donde será la propia entidad la que pondrá a disposición del programador, los distintos métodos de persistencia. 

@Entity
@Table(name = "BOARDGAME")
public class BoardGame extends PanacheEntity {
    //Cuidado! Con PanacheEntity no necesitamos ni getter/setter ni id
    public String designer;
    public String name;    
}

Aquí podemos ver la clase principal de nuestro microservicio:

@Path("/boardgame")
public class BoardGameResource {
    @GET
    @Path("/{id}")
    @Produces(MediaType.APPLICATION_JSON)
    public BoardGame getBoardGameById(@PathParam("id") final Long id) {
        return BoardGame.findById(id);
    }

    @POST
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    @Transactional
    public BoardGame persist(final BoardGame newBoardGame) {
        BoardGame.persist(newBoardGame);
        return newBoardGame;
    }
}

2- Configuración de un microservicio con Quarkus

Para poder configurar las distintas características, lo podremos hacer a través del fichero application.properties. Este es el fichero único de configuración y a través del mismo podremos configurar no solo cualquier librería a utilizar dentro del proyecto sino que también indicar valores por entornos. Aquí indicamos algunas:

  • quarkus.http.port: Podemos indicar en qué puerto admite las llamadas
  • quarkus.datasource.username/password/jdbc.url: Podemos indicar la conexión a la BBDD. 
  • quarkus.hibernate-orm: Tiene múltiples opciones para indicar si queremos o no que se genere el esquema de la BBDD al iniciar la aplicación y los ficheros para ello. 

3- Despliegue

Una vez que hemos desarrollado y configurado el proyecto, vamos a proceder a arrancarlo. Como estamos en desarrollo, utilizaremos el comando:

mvn quarkus:dev

Otro punto a favor del uso de Red Hat con microservicio Quarkus, es que podemos recargar fácilmente la aplicación y comprobar los cambios, simplemente pulsando la tecla ‘s’ en la consola donde lo tengamos ejecutando. 

Y, por supuesto, si añadimos más configuración y extensiones Quarkus que lo posibiliten, podemos generar imágenes nativas que vayan a ser utilizadas por Kubernetes.

Conclusión

En resumen, al contar con el apoyo de Red Hat y Chakray, puedes disponer de microservicios que ayuden al desarrollo de tu negocio. Te beneficiarás de una tecnología que está en alza, que genera proyectos ágiles, ligeros y orientados a su despliegue en la nube. 

Si necesitas ayuda y soporte de Red Hat, aquí estamos para ayudar a tu empresa, ¡contáctanos hoy mismo!

¡Habla con nuestros expertos!

Contacta con nuestro equipo y descubre las tecnologías de vanguardia que potenciarán tu negocio.

contactarnos