Este artículo de DZone es una lectura muy interesante (casi imprescindible) para todos aquellos que estáis trabajando con microservicios.
En el artículo se comparan las propuestas de Spring Cloud y Kubernetes, aunque la conclusión (no por esperada menos interesante) es que son dos herramientas para usar en combinación.
Permitidme que traduzca y comente el artículo:
Spring Cloud y Kubernetes son 2 tecnologías para crear Arquitecturas MSA (microservice-based architectures) en las que desarrollar y ejecutar microservicios.
En un sistema de microservicios tendremos cientos de servicios, por lo que es fundamental gestionarlos y gobernalos de forma centralizada.
Spring Cloud implementa una Arquitectura MSA sobre servicios funcionales (statistics service, account service y notification service) y servicios de infraestructura de soporte (log analysis, configuration server, service discovery, auth service):
Spring Cloud por contra no se encarga de la parte de integración continua, escalado, alta disponibilidad,… que son también muy importantes en una Arquitectura MSA y que si resuelve Kubernetes.
Si hablamos de las capacidades que debe tener una Arquitectura MSA:
Podemos ver cómo lo resuelve cada uno de ellos:
En base a esta tabla podemos concluir:
· Spring Cloud ofrece un complete conjunto de librerías Java para resolver todas las necesidades MSA en término de ejecución, como client-side service discovery, load balancing, configuration update, metrics tracking, schedulin, singleton application,…
· Kubernetes is políglota, no encaja solo en la Plataforma Java, y resuelve las necesidades de programación distribuida de una forma genérica para todos los lenguajes, ofreciendo: configuration management, service discovery, load balancing, tracing, metrics, singletons, scheduled jobs on the platform level fuera del stack de aplicación.
- En algunos puntos ambas plataformas se basan en las mismas herramientas.
- Existen áreas donde ambas plataformas son complementarias y pueden combinarse para crear una solución más potente (como KubeFlix y Spring Cloud Kubernetes).
En esta imagen queda más claro lo que resuelve cada una:
Podemos decir que usando ambas tecnologías podré crear una arquitectura MSA muy potente:
· Spring Boot para construir despliegues Single JAR
· Despliegues declarativos vía Docker
· Hystrix para resiliencia de lasolución
· Ribbon para balanceo de carga
· Kubernetes health checks, restart, autoescalado,…
Si comprobamos sus virtudes y defectos de nuevo concluimos que interesa usarlos en conjunto: Spring Cloud es muy potente dentro de la JVM y Kubernetes gestionando esas JVMS:
Lo que nos llevaría a un mix de este estilo:








Deja un comentario