Iniciar sesión / Registrar Cuenta
Jump to section

Spring en Kubernetes

Copiar URL

Red Hat® OpenShift® es la mejor opción para desarrollar y ejecutar aplicaciones de Spring y Spring Boot directamente en Kubernetes.

Spring es uno de los marcos de Java más populares para diseñar aplicaciones con una arquitectura distribuida de microservicios. Su modelo de programación y configuración para las aplicaciones basadas en este lenguaje se concentra en el mantenimiento, de modo que los desarrolladores pueden enfocarse en la lógica empresarial de las aplicaciones y no dependen de ningún entorno de implementación específico. Por su parte, Spring Boot permite empaquetar y configurar fácilmente las aplicaciones para que sean ejecutables y autónomas, y puedan implementarse como contenedores en Kubernetes.

Ejecución de Spring directamente en Kubernetes

Al igual que muchos otros marcos tradicionales de Java, Spring no reconoce que se está ejecutando en un contenedor en una plataforma como Kubernetes. Este marco incluye varios elementos que facilitan el diseño y la implementación de las aplicaciones distribuidas, como Spring Boot, Spring Cloud, Spring Web y muchos otros, que posibilitan la detección de servicios, el equilibrio de carga, el enrutamiento de solicitudes, etc. Kubernetes permite delegar muchos de estos aspectos a la plataforma de contenedores subyacente para generar una aplicación que se integre de manera más eficiente con la plataforma en la que se ejecuta. Si desea aprovechar el potencial de la combinación de Spring y Kubernetes, es fundamental diseñar las aplicaciones de Spring con estas rutas optimizadas de acceso al código.

Las aplicaciones de Spring pueden utilizar Kubernetes y sus funciones para prestar los servicios necesarios de nube que permitan el desarrollo eficiente en esa plataforma, entre los que se incluyen las colas de mensajes, las bases de datos, el almacenamiento permanente y la memoria caché.

Registro de servicios

Las arquitecturas de microservicios suelen implicar la adaptación dinámica de los servicios individuales en una nube privada, híbrida o pública, donde no siempre se pueden predecir o configurar el número ni la dirección de los hosts de manera estática y anticipada. La replicación y la adaptación de los servicios son funciones esenciales en Kubernetes, así que no es necesario que el cliente conserve la memoria caché ni que se encargue de las fallas en el registro de los servicios. Por ejemplo, Ribbon de Netflix (que suele utilizarse con las aplicaciones de Spring) se puede configurar de manera declarativa para que utilice Kubernetes en lugar de un registro de servicios, sin tener que modificar el código.

Equilibrio de la carga

Para las llamadas de los clientes a los servicios sin estado que se alojan en las aplicaciones de Spring, la alta disponibilidad implica la necesidad de buscar el servicio en el registro y equilibrar la carga entre las instancias disponibles. Kubernetes brinda una sola dirección del servicio, donde se equilibra la carga de las llamadas y se las envía a la instancia adecuada. Dentro de un clúster de Kubernetes, el nombre del servicio determina su dirección IP y puede utilizarse para llegar al equilibrador de carga. También se puede configurar una dirección IP externa para las llamadas desde el exterior o para evitar el enrutador.

Tolerancia a los errores

Debido al carácter altamente distribuido de los microservicios, hay un mayor riesgo de que se produzcan fallas a medida que aumentan las llamadas externas. La implementación de los patrones de tolerancia a los errores siempre ha sido responsabilidad del desarrollador; sin embargo, los proyectos que utilizan una malla de servicios (por ejemplo, Istio) alivian esta carga y brindan un control operativo mucho mayor sobre los servicios de Spring que se ejecutan en el clúster.

Configuración externalizada

Las soluciones de gestión de la configuración externalizada ofrecen una buena alternativa a la combinación clásica de archivos de configuración, argumentos de la línea de comandos y variables de entorno que se utilizan para que las aplicaciones sean más portátiles y flexibles ante los cambios externos. Se pueden utilizar los objetos ConfigMap de Kubernetes para almacenar información detallada, como las propiedades individuales, o la información general, como los archivos completos de configuración o blobs JSON. Además, brindan mecanismos para integrar los datos de la configuración en los contenedores y la mantienen separada de las aplicaciones de Spring, aunque les permiten acceder a ella mediante anotaciones como @ConfigProperty.

Seguimiento distribuido e indicadores de aplicaciones

Si bien la arquitectura de microservicios tiene muchas ventajas, puede ser difícil analizarla y solucionar los problemas que se presenten en ella. Cada solicitud comercial genera múltiples llamadas a los servicios individuales (y entre ellos) en varias capas. El seguimiento distribuido vincula todas esas llamadas y genera un número de identificación único para asociarlas con una solicitud. Además, los indicadores permiten acceder a los datos de las aplicaciones de Spring y examinar su estado en detalle. Cuando se combinan las herramientas de seguimiento (por ejemplo, Jaeger) con el conjunto de indicadores de Prometheus y Grafana, se obtiene una base sólida para supervisar y resolver los problemas de las aplicaciones de Spring en Kubernetes.

A medida que las aplicaciones de Spring se transforman en conjuntos de servicios descentralizados, se torna más difícil gestionar la comunicación y la seguridad entre ellos. La combinación de Red Hat OpenShift y Red Hat Runtimes ofrece a los desarrolladores las herramientas, los marcos y las integraciones originales de Kubernetes que se requieren para diseñar y gestionar las aplicaciones ajustables de Spring en la plataforma de nube híbrida para los contenedores y Kubernetes líder del sector.

Red Hat OpenShift ofrece muchas ventajas a los desarrolladores de Spring. A continuación mencionamos algunas de ellas:

El uso de Spring Boot en OpenShift ofrece a los desarrolladores una experiencia natural en Kubernetes, tanto con las aplicaciones actuales de Spring como con las nuevas.

  • Posibilidad de desarrollar aplicaciones directamente en la nube con Spring y Spring Boot.
  • Integración de las funciones de Kubernetes, que reemplazan a los recursos independientes y tradicionales que la aplicación utiliza a través de la red.
    • Configuración externalizada: ConfigMap de Kubernetes e integración con Spring Cloud Kubernetes
    • Detección de servicios: servicios de Kubernetes
    • Equilibrio de carga: controlador de replicación de Kubernetes
    • Reinicio automático: comprobaciones de estado de Kubernetes e integración con Spring Actuator
    • Indicadores: Prometheus, Grafana y la integración con Spring Cloud Sleuth
    • Seguimiento distribuido con Istio y Jaeger
  • Herramientas de Red Hat OpenShift y Red Hat CodeReady Studio para los desarrolladores, las cuales posibilitan la creación rápida de proyectos de Spring, el acceso a las API de Spring que ya conoce en su IDE preferido y la implementación en OpenShift.

Utilice las API de Spring que ya conoce y obtenga las ventajas de la plataforma y los servicios subyacentes de Kubernetes en Red Hat OpenShift y Red Hat Application Services.

Aproveche el conocimiento sobre Spring para desarrollar aplicaciones modernas utilizando tecnología de vanguardia.

Más información

Actividades prácticas

Entorno de aprendizaje

Aprenda a desarrollar aplicaciones de Spring y Spring Boot en Kubernetes y OpenShift mediante actividades prácticas.

Documentación

Arquitectura de referencia

Aprenda a diseñar aplicaciones distribuidas de Spring en OpenShift.

Comunidad

Open source

Obtenga más información sobre el enfoque abierto de Red Hat para el diseño y la compatibilidad de las aplicaciones de Spring originales de la nube por medio del proyecto SnowDrop.

La base de Kubernetes para el desarrollo de las aplicaciones modernas

Red Hat OpenShift

Red Hat OpenShift

Plataforma de contenedores para implementar con mayor rapidez las aplicaciones desarrolladas en la nube.

Red Hat OpenShift

Red Hat OpenShift Streams for Apache Kafka

Servicio de nube gestionado para diseñar, implementar y ajustar aplicaciones.

Red Hat Runtimes

Red Hat Runtimes

Selección de marcos y tiempos de ejecución para el desarrollo de aplicaciones en la nube.

Red Hat OpenShift

Red Hat OpenShift Data Foundation

Almacenamiento definido por software para los contenedores.

Illustration - mail

Obtenga más contenido como este

Suscríbase a nuestro boletín informativo: Red Hat Shares.