Resumen
Con Red Hat® OpenShift®, puede desarrollar y ejecutar las aplicaciones de Spring y Spring Boot directamente en Kubernetes.
Respaldo de Kubernetes para los desarrolladores de Spring
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 de manera estática y por adelantado el número y la dirección de los hosts. 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
Dado que los microservicios son altamente distribuidos por naturaleza, hay un mayor riesgo de falla en las llamadas externas a medida que aumentan. La implementación de los patrones de tolerancia a los errores, como los disyuntores, siempre ha sido responsabilidad de los desarrolladores; 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.
Optimización de Spring para 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.
Ventajas de Red Hat OpenShift para los desarrolladores de Spring
Red Hat OpenShift ofrece muchas ventajas a los desarrolladores de Spring. A continuación, mencionamos algunos de ellos:
Optimización para Kubernetes y DevOps
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 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.
Integración previa en toda la stack
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.
- Compilación de OpenJDK de Red Hat optimizada para ejecutar aplicaciones Java en un entorno de contenedores.
- Servicios originales de Kubernetes a través de Red Hat Application Services, que se integran con Spring Cloud Kubernetes, Spring Security (con el inicio de sesión único de Red Hat), Spring Caching (con Red Hat Data Grid), Spring Messaging (con Red Hat AMQ), Spring Web y Spring Data, entre otras.
- Posibilidad de implementar los patrones tradicionales de integración empresarial en los servicios de las aplicaciones utilizando Spring Boot y Red Hat Fuse (basado en Apache Camel).
Compatibilidad con las aplicaciones modernas
Aproveche el conocimiento sobre Spring para desarrollar aplicaciones modernas utilizando tecnología de vanguardia.
- Aplicaciones de Spring sin servidor con Camel-K y Kafka.
- Uso de API de Spring conocidas para diseñar aplicaciones Java en contenedores con Quarkus.
- Procesos empresariales originales de Kubernetes con Kogito.
- Posibilidad de usar los operadores de Kubernetes para crear y vincular las aplicaciones de Spring de manera natural con las API originales de Kubernetes a través de Halkyon.