MicroProfile overview

Advertisements

La creación de microservicios y aplicaciones nativas en la nube puede proporcionar algunos beneficios a nivel empresarial y también a nivel técnico. Sin embargo, trae cierta complejidad a nivel técnico, por ejemplo:

  • cómo detectar cuando un servicio está inactivo y hacer que otros servicios sean resistentes a eso.
  • cómo proporcionar un contrato para nuestros microservicios
  • cómo hacer que una compilación (instalador) se ejecute en muchos entornos diferentes (local, ensayo, producción), sin necesidad de compilar nuevamente.
  • Cómo monitorear el rendimiento (solicitudes por minuto/segundo, tiempo de respuesta, uso de memoria o cpu) de la aplicación en tiempo real.

Afortunadamente, MicroProfile nos ayuda a reducir esa complejidad, brindándonos muchas funciones útiles en nuestros servicios y habilitando nuestra aplicación Cloud Native con el mínimo esfuerzo.

¿Qué es MicroProfile? 

MicroProfile es una iniciativa de código abierto, también administrada por la Fundación Eclipse. MicroProfile optimiza Enterprise Java para microservicios. Tiene soporte completo en frameworks como: Jakarta EE, Quarkus, Helidon y soporte parcial en Micronaut.

La última versión en el momento de escribir este artículo es MP 5.0, y proporciona muchas características interesantes listas para usar, sin configuraciones complejas, que incluyen:

Podemos ver el código de MicroProfile aquí

Manos a la obra!

¡La mejor manera de entender cómo interactúan estas dos tecnologías entre sí y cómo podemos aprovecharlas es mirar un poco de código! Usaremos los proyectos en este repositorio, y veremos cómo, con el mínimo esfuerzo, podemos usarlos para obtener varias funcionalidades.

Advertisements

Nuestra aplicación de ejemplo consta de dos aplicaciones web: el items-service y el stock-service.

  • El items-service retorna datos sobre diferentes tipos de artículos (libros, alimentos, etc).
  • The stock-service retorna información de inventario sobre un item (disponibilidad, cantidad, estado).
  • EL items-service consume al stock-service para ver más detalles sobre un item.

Como mencioné, MicroProfile es compatible con diferentes marcos, este ejemplo usa Jakarta EE, pero lo mismo se aplica a otros.

Nuestra aplicación de ejemplo desde el lado Jakarta EE

Desde el lado de Jakarta EE, aprovecharemos JAX-RS para crear servicios Restful fácilmente y CDI para implementar nuestras clases de servicio con lógica empresarial. En una aplicación real, también podemos usar las especificaciones JPA y JTA para acceder a una base de datos. Sin embargo, para este blog, no profundizaremos en JPA y JTA.

<dependency>
    <groupId>jakarta.platform</groupId>
    <artifactId>jakarta.jakartaee-api</artifactId>
    <version>8.0.0</version>
    <scope>provided</scope>
</dependency>
@ApplicationScoped
@Path("/books")
public class BookResource{

   @Inject
   private BookService service;
    
   @GET
   @Produces(MediaType.APPLICATION_JSON)
   public List getAll() {
      return service.getAll();
   }
   @GET
   @Produces(MediaType.APPLICATION_JSON)
   @Path("/{id}") 
   public Book findById(@PathParam("id") Long id) {
      return service.findById(id)
            	.orElseThrow(NotFoundException::new);
   }

Agregando Micro-profile a nuestro proyecto

¡Ahora es el momento de MicroPerfil! Habilitamos las funciones básicas de MicroProfile simplemente agregando la siguiente dependencia al proyecto.

<dependency>
    <groupId>org.eclipse.microprofile</groupId>
    <artifactId>microprofile</artifactId>
    <version>3.3</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>

Módulos de Microprofile

En las próximas páginas de este artículo, veremos algunos de los módulos más importantes de MicroProfile, explicando el propósito y algunos ejemplos.

Table of contents:

Advertisements

Pages: 1 2 3 4 5 6 7 8

Leave a Reply

Your email address will not be published. Required fields are marked *