Haremos una introducción a microservicios a partir de una demo, la cual vamos a construir utilizando Spring frameworks, a través de unos pequeños servicios rest. Adicionalmente los haremos comunicar entre ellos y luego aplicar algunos patrones con módulos de Spring Cloud que han adoptado las librerías open source de Netflix para el fácil mantenimiento. Por último veremos el soporte a la alta disponibilidad de este tipo de servicios.
Mira nuestro seminario web aquí: https://bit.ly/2YWx3cg
4. Agenda
● Introducción a Microservicios
● Nuestra primera aplicación Spring Boot Rest
● Comunicación entre servicios
● Service Discovery
● Tolerancia a fallas y resiliencia
¿QUESTIONS?
#MicroServiciosBelatrix
10. Client Side Load Balancing ¿QUESTIONS?
#MicroServiciosBelatrix
Service 1
Service 2Client
Service 3
Service
Discovery
¿Dónde
está el
servicio 1?
127.0.0.1:8080
127.0.0.1:8081
127.0.0.1:8082
En
127.0.0.1:8080
Get
Catalogo
12. 1. Crear el discovery server
2. Configurar los servicios como eureka clients
a. Agregar la dependencia de eureka
b. Incluir @EnableEurekaClient en la clase de Application
c. Agregar @LoadBalanced a todos los que necesitan comunicación con otros servicios.
Como configurar Eureka? ¿QUESTIONS?
#MicroServiciosBelatrix
13. Tolerancia a fallos y resiliencia ¿QUESTIONS?
#MicroServiciosBelatrix
Tolerancia a fallos es la capacidad es una arquitectura en sobrevivir o
sobrellevar problemas en el sistema, evitando que se propaguen a todo el
sistema.
Resiliencia es la capacidad de recuperarse a esos fallos
23. Patrón Circuit Breaker
● Detectar que algo anda mal/lento
● Tomar acciones temporales para evitar empeorar la situación
● Desactivar el componente con problemas para que no afecte
a componentes dependientes.
¿QUESTIONS?
#MicroServiciosBelatrix
24. Su funcion basica es cortar el flujo cuando detecta un
problema.
A diferencia de un fusible, que se rompe a la primera,
puede ser reseteado de manera manual o automática.
Patrón Circuit Breaker
¿QUESTIONS?
#MicroServiciosBelatrix
26. Parámetros
● Los ultimos N requests a considerar
● Cuántos de esos pedidos fallan?
● Duración del timeout
● Cuánto tiempo esperar hasta reintentar?
¿QUESTIONS?
#MicroServiciosBelatrix
27. ¿Qué hacer cuando corto el circuito?
● Devuelvo un error
● Devuelvo una respuesta por defecto.
● Devuelvo una respuesta cacheada previamente.
¿QUESTIONS?
#MicroServiciosBelatrix
30. ¿Cómo configurarlo?
● Agregar la dependencia spring-cloud-starter-netflix-hystrix
● Agregar @EnableCircuitBreaker al application class.
● Agregar @HystrixCommand al/los métodos necesarios.
● Configurar los parámetros
¿QUESTIONS?
#MicroServiciosBelatrix
31. Algunos links
● Repositorio de la demo:
https://github.com/mafavale/spring-microservices-demo
● Spring Initializer: https://start.spring.io/
● Documentación Spring Cloud: https://spring.io/projects/spring-cloud
¿QUESTIONS?
#MicroServiciosBelatrix