iProfesionaliProfesional

¿Por qué Quarkus es una opción para aplicaciones nativas en la computación en la nube?

Su arquitectura reactiva se apalanca sobre Eclipse Vert.x, que a su vez utiliza Netty, para administrar operaciones de entrada/salida
17/05/2023 - 11:11hs
¿Por qué Quarkus es una opción para aplicaciones nativas en la computación en la nube?

A lo largo del tiempo hemos presenciado la aparición de diversas tecnologías, prácticas, marcos de trabajo y filosofías para el desarrollo y la distribución de software de manera rápida y minimizando los costos: "build once, run everywhere" (Java Virtual Machine), servidores de aplicaciones, contenedores y orquestadores, interfaz de programación de aplicaciones (API, sigla en inglés), microservicios, y la lista continúa.

En el último tiempo, la industria ha avanzado hasta llegar al concepto de nativo de computación en la nube. La Cloud Native Computing Foundation (CNCF), una organización parte de la fundación Linux, sostiene lo siguiente:

"La computación cloud native utiliza software 'open source' para desplegar aplicaciones como microservicios, empaquetando cada parte en su propio contenedor, y dinámicamente orquestando esos contenedores para optimizar la utilización de recursos".

Entre las recomendaciones de la CNCF, hay una que es muy relevante a la hora de desarrollar aplicaciones. Se trata de la utilización de Quarkus. ¿Qué es? Es una estructura ("framework") que fue creada de acuerdo con los principios de nativo en la computación en la nube. Hay algunos puntos sobre los que se destaca el uso de Quarkus, que revisaremos a continuación.

Ventajas para el desarrollo nativo de computación en la nube

Éste es uno de los aspectos más interesantes para analizar. Quarkus provee de un gran número de librerías, muchas de las más reconocidas y utilizadas en el desarrollo de Java, que ya están examinadas, quitándole la carga de inspeccionarlas a cada uno de los desarrolladores.

El resultado es que podemos obtener aplicaciones nativas de manera directa, utilizando lenguajes, librerías y herramientas ya conocidas para los programadores Java, lo que implica una curva de aprendizaje más suave con respecto a otra que requiera el aprendizaje de otros conjuntos tecnológicos completos.

La evolución del software hacia el concepto nativo en la computación en la nube exige replantearse si las herramientas y tecnologías que utilizamos en el desarrollo de software siguen siendo vigentes.
La computación en la nube exige replantearse si las herramientas que utilizamos en el desarrollo de software son vigentes.

Experiencia del desarrollador

Donde Quarkus contribuye en este aspecto es a través de las distintas facilidades para mejorar la experiencia del desarrollador ("Developer eXperience" o DX):

  • Recarga en vivo: si hay algo que es repetitivo al momento de programar es la secuencia Modificar código - Guardar cambios - Recompilar - Ejecutar. El "framework" se ocupa de hacerlo desde el vamos, sin ninguna configuración adicional.
  • Pruebas continuas: apalancado sobre la recarga en vivo, cada ciclo también dispara la ejecución de los test. Esto viene habilitado por omisión, pero puede desactivarse por configuración.
  • Librerías conocidas: Quarkus ofrece un gran número de librerías populares ya preparadas para la compilación nativa. Esto acelera el desarrollo ya que los programadores pueden trabajar con librerías que ya han utilizado en el pasado.
  • Servicios de desarrollo: al igual que en el caso de la recarga en vivo de las aplicaciones, el mismo enfoque se implementa para las dependencias externas. Quarkus provee una funcionalidad a la que llama "Dev Services", la cual, normalmente a través de recipientes de prueba, se ocupa de iniciar los servicios necesarios en lo que respecta a la comunicación con una base de datos o el envío de mensajes por algún corredor de mensajería.
  • Implementación de estándares: el hecho de que implemente estándares permite que, en gran medida, las aplicaciones construidas con Quarkus sean portables a otras estructuras sin incurrir en enormes costos debido a que una gran porción del código debiera funcionar sin cambios en otra plataforma que implemente los mismos estándares.

Programación reactiva

En arquitecturas en la nube las aplicaciones comparten los recursos (CPU, memoria, etc.), por lo que lograr que las mismas sean eficientes es un factor fundamental.

Los sistemas reactivos cumplen con una serie de principios (definidos en el denominado Reactive Manifesto) que conforman la base de las buenas prácticas a la hora de construir sistemas distribuidos. Siguiendo estos principios se pueden crear servicios que hagan un uso eficiente de los recursos.

Quarkus está construido con el concepto de reactividad desde el inicio. La arquitectura reactiva de Quarkus se apalanca sobre Eclipse Vert.x, que a su vez utiliza Netty, para administrar operaciones de entrada/salida (I/O) de manera no bloqueante.

Conclusión

La evolución del software hacia el concepto de nativo en la computación en la nube exige replantearse si las herramientas y tecnologías que utilizamos en el desarrollo de software siguen siendo vigentes.

Mariano Ludueña
Mariano Ludueña

Quarkus es un "framework" moderno, que pretende acercar el desarrollo nativo en la computación en la nube a un gran número de programadores Java, buscando preservar lo más posible el ecosistema conocido por ellos, a la vez que promueve estándares y buenas prácticas y facilita la experiencia de desarrollo.

(*) Desarrollador de redbee

Temas relacionados