Spring Cloud es uno de los proyectos más importantes de Pivotal, donde introducen el concepto de aplicaciones cloud native: una disciplina que fomenta buenas prácticas en sistemas distribuidos (gestión de la configuración, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state).
Esta charla explica los distintos componentes del ecosistema Spring Cloud, mostrando cómo usarlos en Spring Boot. En particular, el foco estará en:
Configuración distribuida.
Service Discovery.
Log correlation.
1. MAD · NOV 24-25 · 2017
Practical Spring Cloud
Álvaro Sánchez-Mariscal
Software Engineer, Grails Team
2. Sobre mí
• Trabajando como programador desde 2001.
• Java, Spring, Groovy, Grails, Docker, Ansible, etc.
• Fundador de Salenda.
• Actualmente en Object Computing, Inc (OCI)
15. Problemas
• Los ficheros de configuración son difíciles de
mantener:
• Diferentes valores para diferentes entornos.
• Secretos (p.ej.: contraseñas).
• ¿JAR/WAR por entorno?
21. El problema
• En una arquitectura de microservicios, el
número de llamadas HTTP a realizar es alto.
• Configurar los clientes REST es complicado.
• ¿Entornos?
• ¿Máquinas? ¿Puertos?
• ¿Configuración SSL?
22. La solución
• Service discovery al rescate.
• Un servidor centralizado y en alta disponibilidad.
• Los clientes se registran ellos mismos, y además
piden los detalles sobre sus dependencias.
23. Service Discovery en Spring Cloud
• Opciones:
• Spring Cloud Netflix (Eureka Server).
• Consul con Spring Cloud Consul.
• Zookeeper con Spring Cloud Zookeeper.
27. El problema
• En un proceso que transcurre a través de
varios microservicios que se llaman unos a
otros, es difícil ver:
• Dónde está transcurriendo el tiempo.
• Cómo encontrar los logs de los distintos
servicios, agregados por petición.
28. La solución
• Spring Cloud Sleuth y Zipkin facilitan:
• Visualizar, para una operación end-to-end, el
tiempo que ha tardado cada servicio.
• Agregar los logs a través de un correlation ID.