Microservicios con Spring
por Matias Favale
Nuestras
locaciones
Nuestros
Panelistas
Matias Favale
Full-Stack Developer
Laura Rodrigo
Marketing Analyst
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
¿QUÉ
ES UN
MICROSERVICIO?
Aplicación monolítica
¿QUESTIONS?
#MicroServiciosBelatrix
Server
Products
Categories
CatalogClient Database
Microservicio
¿QUESTIONS?
#MicroServiciosBelatrix
Products
Service
Category
Service
Catalog
Service
Client
¿QUÉ
ESTAMOS
HACIENDO MAL?
Patron
Service
Discovery
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
Eureka
Ribbon
Hystrix
Zuul
Archaius
Otros..
Netflix OSS ¿QUESTIONS?
#MicroServiciosBelatrix
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
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
Problemas con Microservicios ¿QUESTIONS?
#MicroServiciosBelatrix
Escenario 1:
Un servicio se cae
Products
Service
Category
Service
Catalog
Service
Client
¿QUESTIONS?
#MicroServiciosBelatrix
Problemas con Microservicios ¿QUESTIONS?
#MicroServiciosBelatrix
Escenario 1:
Un servicio se cae
Solución:
Crear réplicas del servicio
Products
Service
Category
Service
Catalog
Service
Client
Category
ServiceCategory
Service
¿QUESTIONS?
#MicroServiciosBelatrix
Problemas con Microservicios ¿QUESTIONS?
#MicroServiciosBelatrix
Escenario 1:
Un servicio es lento
Products
Service
Category
Service
Catalog
Service
Client
¿QUESTIONS?
#MicroServiciosBelatrix
Request
Thread
Request
Thread
Thread
Thread
Request
Request
Request
Request
Proceso A
Proceso A
Proceso A
Proceso B
¿QUESTIONS?
#MicroServiciosBelatrix
Web Server
¿Cómo lo solucionamos?
Timeouts
¿QUESTIONS?
#MicroServiciosBelatrix
¿QUESTIONS?
#MicroServiciosBelatrix
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
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
Web Server
Request
Exitosa
Request
Timeout
Request
Request
Request
Request
Exitosa
Falla
Timeout
Timeout
¿QUESTIONS?
#MicroServiciosBelatrix
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
¿Qué hacer cuando corto el circuito?
● Devuelvo un error
● Devuelvo una respuesta por defecto.
● Devuelvo una respuesta cacheada previamente.
¿QUESTIONS?
#MicroServiciosBelatrix
¿Por qué Circuit Breakers?
● Fallar rápido
● Funcionalidad de fallback
● Recuperación automática
¿QUESTIONS?
#MicroServiciosBelatrix
Hystrix
¿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
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
¿Preguntas?
¡Muchas Gracias!
www.belatrixsf.com

Microservicios con spring