Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Quarkus, microservicios y Serverless

Alex Soto
  • Escrito por Alex Soto el 17 de Julio de 2019
  • 2 min de lectura | DevOps
Quarkus, microservicios y Serverless
El reproductor de video será cargado en breves instantes.

Seguro que has oído o leído en muchas ocasiones que Java está muerto y que no sirve para los desarrollos modernos. Te contamos los motivos por los que surgió esa opinión, y te explicamos también por qué Quarkus ha cambiado todo eso.

¿Java está realmente muerto?

Desde hace años se ha ido a extendiendo la idea de que Java está muerto, que ya no es un lenguaje de programación para realizar microservicios, para integrarse con arquitecturas tipo serverless, para crear Functions as a Services (FaaS) e integraciones de este tipo.

Pero la verdad es que Java se está comportando muy bien, a pesar que mucha gente desde el 2006 dice que está muerto y que siempre habrá un sustituto. Muchos lenguajes han intentado sustituir a Java, pero la verdad es que Java está yendo muy bien.

Esto se demuestra en varios estudios:

  • Este estudio de Red Monk demuestra que Java está dentro de los 3 lenguajes más utilizados.
  • En el estudio de Tiobe podemos ver que está en el número 1
  • Y en el estudio de Hacker Rank está entre el puesto 1 y el 2.

Imagen 0 en Quarkus, microservicios y Serverless

Como podemos ver en estos rankings, Java sigue siendo un lenguaje muy popular.

Problemas al utilizar Java y contenedores

Uno de los problemas que habido en Java es cuando ha aparecido toda la complejidad en contenedores, ya que cuando se ha empezado a añadir Java dentro de un contenedor Linux, el problema es que hemos puesto a Java como dentro de una prisión.

Imagen 1 en Quarkus, microservicios y Serverless

Ya no es tanto por la JVM (Java Virtual Machine) o el lenguaje como tal, si no es por la unión del concepto de contenedor y Java, por diferentes motivos:

  • Java antes de la versión 11 no tenía conciencia de lo que pasaba con un contenido, de tal forma que, por defecto, lo que intenta es utilizar el máximo de recursos posibles tanto de CPU, de memoria, etcétera.
  • Un contenedor está muy restringido en el uso de recursos.
  • Además, si se usa Java 8, como intenta utilizar más memoria y más CPU de la que puede soportar un contenedor, lo que acaba pasando es que el kernel de Linux dónde están corriendo estos contenedores cierra el contenedor al comprobar que se está saliendo de sus límites definidos. De esta forma, con Java 8, se puede tener la aplicación corriendo y al cabo de un tiempo el contenedor se cierra.

Todo esto se ha mejorado, pero aun así se debe configurar muy bien todos los parámetros de Java.

Problemas al utilizar Java y contenedores

El problema no solo ocurre con Docker, sino que podemos ver muchas opiniones que dicen que también hay problemas en serverless, dónde estamos en entornos muy limitados en CPU, en memoria y en tiempo de arrancada y primera respuesta.

Imagen 2 en Quarkus, microservicios y Serverless

En serverless lo importante es que todo funciona bajo demanda, por lo que si no hay requests del sistema pasa a un estado de stand-by, y cuando hay una request vuelve a arrancar.

Si este arranque es muy lento implica que el usuario que necesita esta funcionalidad, seguramente se termine cansando y no espere el tiempo de arrancada.

Por tanto con Java, con el que tenemos un problema de arrancada, ya que puede tardar varios segundos, implica que no resulta una solución muy válida para arquitecturas serverless.

Quarkus como solución

Pero todo esto ocurría antes de la llegada Quarkus, ya que gracias al mismo todo esto se soluciona.

Quarkus lo que hace es cambiar un poco todo el paradigma y hacer que nuestras aplicaciones enterprise se puedan compilar a nativo.

De esta forma, al compilar a un ejecutable nativo, veremos que nuestra aplicación Java o nuestro servicio Java en lugar de tardar varios segundos en arrancar, va a tardar milisegundos en hacerlo.

Gracias a esta compilación en nativo seguro que Java va a para pasar a ser un lenguaje para poder desarrollar arquitecturas serverless y microservicios de una forma tan buena o mejor como con otros lenguajes compilados en nativo, como puede ser Go.

Relacionado

Te dejamos una selección de cursos, carreras y artículos

Especialista en Automatización DevOps

Especialista en Automatización DevOps

carrera

Incluye 6 cursos:

  • Fundamentos Generales: Orquestación y Automatizacion IT
  • Curso de Ansible
  • Curso Online de Vagrant

y 3 cursos más!

Duración: 22 horas y 32 minutos

Curso de Quarkus

Curso de Quarkus

curso

Con este curso aprenderás:

  • Aprenderás a crear microservicios usando Quarkus.
  • La importancia de Quarkus cuando queremos poner una aplicación Java dentro de un contenedor.
  • Aprenderás como empezar a usar Java en el mundo serverless.

Duración: 5 horas y 15 minutos

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars