Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la...
Transcript of Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la...
![Page 1: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/1.jpg)
Microservicios parte 230 de Agosto 2019Versión para el área de ingeniería
![Page 2: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/2.jpg)
¿Qué no es microservicios?
MONOLÍTICA
Todo los módulos encapsulado en una misma aplicación.
![Page 3: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/3.jpg)
¿Qué no es microservicios?
MONOLÍTICAMICROSERVICIO
![Page 4: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/4.jpg)
¿Cómo escalan?
¿Qué pasa si detecto que la mayoría de mis usuarios utilizan una funcionalidad más que otras (prefieren pizza) ?
![Page 5: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/5.jpg)
¿Cómo escalan? - Monolítico
![Page 6: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/6.jpg)
¿Cómo escalan? - Microservicios
Puedo levantarla cantidad de instanciasque se requieren.
![Page 7: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/7.jpg)
Lo primero...
Usar y mantenermicroservicios es difícil!
![Page 8: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/8.jpg)
¿Qué es un microservicio?
A DUMB PIPE!!
![Page 9: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/9.jpg)
¿Qué es un microservicio?
A DUMP PIPE!!
![Page 10: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/10.jpg)
¿Qué es un microservicio?
Ejemplos de MS
CONVERTIR SHAPEFILE A TABLA POSTGIS
RECIBIR POSICIÓN DE UN CARRO (GPS) Y ALMACENARLO EN DB
RECIBIR POSICIÓN DE UN CARRO (GPS) Y ALMACENARLO EN DB
RECIBIR REGISTRO DEL RECOLECTOR, Y ALMACENARLO EN DB
![Page 11: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/11.jpg)
¿Cómo se comunican los MS?
?
![Page 12: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/12.jpg)
¿Cómo se comunican los MS?
Exponen APIConsumen API
Por lo tanto, se pueden comportar como servidor, como cliente, O ÁMBAS!
![Page 13: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/13.jpg)
¿Cómo se comunican los MS?
Suscripción a un evento“Escuchar cambios”“Notificar cambios”
EVENTSERVICE
![Page 14: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/14.jpg)
Entorno de desarrollo para microservicios
Hay muchas herramientas que nos facilitan el desarrollo de microservicios. Por
ejemplo para JAVA....
![Page 15: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/15.jpg)
¿Qué es SPRING?
Spring es un framework para el desarrollo de aplicaciones y contenedor de inversión
de control de código abierto para la plataforma Java.
Spring nos provee de Spring Boot, el cual se encuentra
diseñado para poner aplicaciones en funcionamiento de forma rápida, disponiendo de las
librerías necesarias y un servidor de aplicación (Tomcat)
![Page 16: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/16.jpg)
¿Qué es NETFLIX OSS?
Netflix Open Source Software Center
Conjunto de herramientas para libro uso, utilizadas por netflix para Big Data, Delivery Tools, Security, User Interface...
https://netflix.github.io/
![Page 17: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/17.jpg)
STACK - ¿Cómo podemos administrar los +20 hijos?
SPRING IOSPRING CLOUD: proporciona herramientas para que los desarrolladores construyan rápidamente algunos de los patrones comunes en sistemas distribuidos.
SPRING CLOUD CONFIG: Proporciona soporte para la configuración externa en un sistema distribuido, dando un lugar central para administrar las propiedades externas de todos los microservicios.
SPRING CLOUD BUS: Permite tratar los request pendientes mientras el servicio se reinicia para aplicar nuevos cambios.
![Page 18: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/18.jpg)
STACK - ¿Cómo podemos administrar los +20 hijos?
NETFLIX OSS
● EUREKA: Dada la gran cantidad de servicios ejecutándose, debemos monitorearlos, detectando su estado, su localización y otros datos relevantes.
● RIBBON: Es un equilibrador de carga del lado del cliente que brinda mucho control sobre el comportamiento de los clientes HTTP y TCP.
● HISTRIX: Biblioteca de latencia y tolerancia a fallas diseñada para detener la falla en cascada y permitir la resistencia en sistemas
● ZUUL: Es el API GATEWAY que nos provee NETFLIX OSS.
![Page 19: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/19.jpg)
STACK
Independientemente del lenguaje o stack que utilicemos siempre necesitamos las mismas herramientas.
![Page 20: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/20.jpg)
STACK
Recordemos que los microservicios, son políglotas, por lo tanto los podemos construir en cualquier lenguaje de Programación.
![Page 21: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/21.jpg)
Lo importante es siempre disponer de...
Servicio de configuración
de entorno
Descubrimiento y monitoreo
Balanceo de carga
Servicio decomunicación
API GATEWAY
![Page 22: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/22.jpg)
CONFIGURACIÓN
En un sistema monolítico, tener un archivo de configuración está bien.
Pero para 20 hijos, ¿vamos a tener 20 archivos de configuración?
![Page 23: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/23.jpg)
CONFIGURACIÓN
Debemos disponer de un servicio, que permita centralizar las variables de configuración de microservicios.
https://spring.io/projects/spring-cloud-config
![Page 24: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/24.jpg)
MICROSERVICES DISCOVERY
Dada la gran cantidad de servicios ejecutándose, debemos monitorearlos, detectando su estado, su localización y otros datos relevantes.
EUREKA
![Page 25: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/25.jpg)
BALANCEO DE CARGA
Si un microservicio responde a muchas solicitudes, es posible desplegar varias instancias del mismo, distribuyendo las peticiones que reciben.
![Page 26: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/26.jpg)
BALANCEO DE CARGA
Ej: si el servidor que contiene una instancia sobrepasa el 50% de su capacidad, deriva los request a otra instancia.
BALANCEADOR
CLIENT1
CLIENT2
CLIENT3
INSTANCE1
INSTANCE1
INSTANCE1
CAPACIDAD > 50%
![Page 27: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/27.jpg)
TOLERANCIA A FALLOS
Debido a la gran cantidad de servicios a desplegar, es obligatorio gestionar y mitigar los fallos que siempre van a ocurrir.
![Page 28: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/28.jpg)
TOLERANCIA A FALLOS
¿Qué es la falla en cascada?
Un fallo en un microservicio, puede generar un fallo en microservicios que dependen de él, y por lo tanto, de otros microservicios que dependen de esos microservicios generando un fallo en cascada.
HISTRIX = STOP CASCADE
![Page 29: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/29.jpg)
API GATEWAY
Es un sistema intermediario que proporciona una interfaz API REST o WebSocket para hacer de enrutador desde un único punto de entrada, el API Gateway, hacia un grupo de microservicios y/o API de terceros definidos. Interactúa como puerta de enlace “Gateway”.
![Page 30: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/30.jpg)
Comunicación entre servicios
Debemos disponer de un mecanismo que nos permita comunicar nuestros microservicios, por ejemplo, en el caso que un microservicio de usuarios reciba una nueva solicitud de creación, el microso servicio de correo debe enterarse de esto para notificar al usuario correspondiente.
![Page 31: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/31.jpg)
NETFLIX MICROSERVICESCaptura real del ingeniero de Netflix Bruce Wong de los microservicios que se ejecutan en Netflix, alrededor de 2014. “Por ahora, una imagen similar podría parecerse a una pared azul sólida”.
![Page 32: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/32.jpg)
Lo importante es siempre disponer de...
Servicio de configuración
de entorno
Descubrimiento y monitoreo
Balanceo de carga
Servicio decomunicación
API GATEWAY
![Page 33: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/33.jpg)
CASO USO DE EJEMPLO
USUARIO REQUIERE RECUPERAR CONTRASEÑA, RECIBIENDO UN CORREO
ELECTRÓNICO DE RECUPERACIÓN.
![Page 34: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/34.jpg)
STACK EJEMPLO
![Page 35: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/35.jpg)
Microservicios parte 230 de Agosto 2019Versión para el área de ingeniería
![Page 36: Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la plataforma Java. Spring nos provee de Spring Boot, el cual se encuentra ... Es el](https://reader034.fdocuments.mx/reader034/viewer/2022042223/5ec9705b38000a687d6ec2e2/html5/thumbnails/36.jpg)
RECURSOS
https://github.com/mfornos/awesome-microservices
mfornos/awesome-microservices
https://microservices.io/Microservicios IO