¿Por qué debería elegir Quarkus en lugar de Spring para mis microservicios?

Imagen destacada de "¿Por qué debería elegir Quarkus en lugar de Spring?"

 A medida que crece el interés en los microservicios y los contenedores , los desarrolladores de Java han luchado por hacer que las aplicaciones sean más pequeñas y más rápidas para satisfacer las demandas y los requisitos actuales. En el entorno informático moderno, las aplicaciones deben responder a las solicitudes de forma rápida y eficiente, ser adecuadas para ejecutarse en entornos volátiles, como máquinas virtuales o contenedores, y admitir un desarrollo rápido. Debido a esto, Java y los tiempos de ejecución populares de Java a veces se consideran inferiores a los tiempos de ejecución en otros lenguajes como Node.js y Go .

El lenguaje y la plataforma Java han tenido mucho éxito a lo largo de los años, conservando Java como el lenguaje predominante en el uso actual. Los analistas han estimado el tamaño del mercado global de servidores de aplicaciones en $ 15,84 mil millones en 2020, con expectativas de crecimiento a una tasa del 13,2% de 2021 a 2028. Además, decenas de millones de desarrolladores de Java en todo el mundo trabajan para organizaciones que gestionan sus negocios utilizando Java. Frente a los desafíos actuales, estas organizaciones necesitan adaptarse y adoptar nuevas formas de construir e implementar aplicaciones. Renunciar a Java para otras pilas de aplicaciones no es una opción para muchas organizaciones. Implicaría volver a capacitar a su personal de desarrollo y volver a implementar los procesos para lanzar y monitorear aplicaciones en producción.

Java sigue siendo relevante

Con las adiciones a Java y los marcos de Java en los últimos años, Java puede conservar con orgullo su papel como el lenguaje principal para las aplicaciones empresariales. Quarkus , un proyecto de código abierto presentado por Red Hat, es uno de esos marcos que ha conquistado a la comunidad Java. Quarkus combina la productividad y la alegría de los desarrolladores con la velocidad y el rendimiento de Go.

Quarkus se integra con otros marcos y bibliotecas de Java modernos con los que muchos desarrolladores ya están familiarizados y probablemente utilicen. Entre las especificaciones y tecnologías subyacentes e integradas con Quarkus se encuentran Eclipse MicroProfile, Eclipse Vert.x, Contexts and Dependency Injection (CDI), Jakarta RESTful Web Services (JAX-RS), Java Persistence API (JPA), Java Transaction API ( JTA), Apache Camel e Hibernate, solo por nombrar algunos.

Quarkus y Spring abordan muchos de los mismos tipos de aplicaciones, pero debido a que nació en la época actual, Quarkus tiene la ventaja de comenzar con una pizarra limpia. Quarkus puede centrarse en la innovación en áreas modernas de desarrollo pertenecientes a aplicaciones escalables alojadas en la nube porque no tiene que adaptar nuevos patrones y principios a una base de código existente que ha evolucionado con el tiempo.

Pero ya conozco Spring …

Quarkus for Spring Developers presenta Quarkus a los desarrolladores de Java con un ojo especial en ayudar a quienes están familiarizados con los conceptos, construcciones y convenciones de Spring a aprender Quarkus rápidamente. Los desarrolladores de Spring deberían reconocer inmediatamente y ser capaces de aplicar patrones con los que ya están familiarizados y, en muchos casos, utilizar las mismas tecnologías subyacentes. ¿Utiliza Kotlin en sus aplicaciones de Spring? Genial, puede seguir usando Kotlin con Quarkus.

Los capítulos están dedicados a comenzar, aplicaciones RESTful, persistencia, servicios basados ​​en eventos y entornos en la nube como contenedores y Kubernetes . Cada capítulo ofrece ejemplos comparables y enfatiza los patrones de prueba y las prácticas con dichas aplicaciones, al tiempo que diferencia a Quarkus de Spring.

Además, Quarkus proporciona un conjunto de extensiones para varias API de Spring . Estas extensiones ayudan a simplificar el proceso de aprendizaje de Quarkus o la migración de aplicaciones Spring existentes a Quarkus, aprovechando el conocimiento de Spring de un desarrollador para acelerar la curva de aprendizaje para adoptar Quarkus. En algunos casos, una aplicación Spring existente puede incluso ejecutarse en Quarkus sin ningún cambio de código.

¿Cómo puede ayudarme Quarkus?

Quarkus tiene muchas características y capacidades que pueden ayudar tanto a los desarrolladores como a los equipos de operaciones.

Mejora de la productividad de los desarrolladores

Desde su creación a principios de 2019, Quarkus se ha centrado en algo más que ofrecer funciones. La productividad y la alegría de los desarrolladores han sido objetivos fundamentales. Con cada característica nueva, Quarkus considera cuidadosamente la experiencia del desarrollador y cómo mejorarla.

El proceso de desarrollo es más rápido y agradable con la función de codificación en vivo de Quarkus. Quarkus puede detectar automáticamente los cambios realizados en Java y otros archivos de configuración y recursos, y luego volver a compilar y volver a implementar los cambios de forma transparente. Por lo general, en un segundo, puede ver la salida de su aplicación o los mensajes de error del compilador. Esta función también se puede utilizar con aplicaciones de Quarkus que se ejecutan en un entorno remoto. La capacidad remota es útil cuando se necesita un desarrollo rápido o la creación de prototipos, pero el aprovisionamiento de servicios en un entorno local no es factible ni posible.

Quarkus lleva este concepto un paso más allá con su función de prueba continua para facilitar el desarrollo basado en pruebas. A medida que se realizan cambios en el código fuente de la aplicación, Quarkus puede volver a ejecutar automáticamente las pruebas afectadas en segundo plano, brindando a los desarrolladores comentarios instantáneos sobre el código que están escribiendo o modificando.

¿Necesita una base de datos para su aplicación? Corredor de Kafka? Servidor Redis? ¿Agente de AMQP? ¿Servidor de autenticación OpenID Connect? Registro de API / esquema? Servicios de desarrollo de Quarkus para bases de datos (ver la demostración en video ), Servicios de desarrollo para Kafka (ver la demostración en video ), Servicios de desarrollo para Redis , Servicios de desarrollo para AMQP , Servicios de desarrollo para OpenID Connect (ver la demostración en video ) y Servicios de desarrollo para Apicurio El registro lo tiene cubierto. Dev Services acelera el desarrollo al proporcionar la infraestructura necesaria automáticamente, lo que elimina todos los problemas de configuración y aprovisionamiento necesarios. Se agregan nuevos servicios de desarrollo con cada nueva versión.

Siguiendo la filosofía de simplicidad y mejora de la productividad del desarrollador, crear una aplicación en una imagen nativa es extremadamente simple. Todo el trabajo pesado y la integración para consumir GraalVM lo hacen las herramientas de compilación de Quarkus. Los desarrolladores o los sistemas CI / CD simplemente necesitan ejecutar una compilación, como cualquier otra compilación de Java, para producir un ejecutable nativo. Incluso se pueden ejecutar pruebas contra el artefacto construido.

Nativo de Kubernetes

Desde el principio, Quarkus se diseñó en torno a filosofías nativas de Kubernetes, optimizándose para un uso bajo de memoria y tiempos de inicio rápidos. Se realiza la mayor cantidad de procesamiento posible en el momento de la compilación. Las clases que se usan solo al inicio de la aplicación se invocan en el momento de la compilación y no se cargan en la JVM en tiempo de ejecución, lo que reduce el tamaño y, en última instancia, la huella de memoria de la aplicación que se ejecuta en la JVM.

Este diseño tuvo en cuenta la compilación nativa desde el principio, lo que permitió que Quarkus fuera “nativo de forma nativa”. Las capacidades nativas similares en Spring todavía se consideran experimentales o beta y, en algunos casos, ni siquiera están disponibles. Junto con una plataforma de tiempo de ejecución como Kubernetes, se pueden implementar más aplicaciones de Quarkus dentro de un conjunto de recursos determinado que otras aplicaciones de Java o Spring.

¿Ser reactivo o no?

Con Spring, un desarrollador debe decidir por adelantado, antes de escribir una línea de código, qué arquitectura seguir para una aplicación. Esta elección determina el conjunto completo de bibliotecas que utiliza un desarrollador en una aplicación Spring. Quarkus no tiene tales limitaciones porque nació en la era reactiva. Quarkus, en su núcleo, se basa en una arquitectura completamente reactivo y de no bloqueo accionado por Eclipse Vert.x .

Quarkus se integra profundamente con Vert.x, lo que permite a los desarrolladores utilizar bibliotecas y API de bloqueo (imperativas) y no bloqueantes (reactivas). En la mayoría de los casos, los desarrolladores pueden usar API tanto de bloqueo como reactivas dentro de las mismas clases. Quarkus garantiza que las API de bloqueo se bloquearán adecuadamente mientras que las API reactivas permanecen sin bloqueo.

FUENTE