Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Microservicios con spring

206 views

Published on

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

Published in: Technology
  • Be the first to comment

Microservicios con spring

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

×