Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Microservicios parte 230 de Agosto 2019Versión para el área de ingeniería
¿Qué no es microservicios?
MONOLÍTICA
Todo los módulos encapsulado en una misma aplicación.
¿Qué no es microservicios?
MONOLÍTICAMICROSERVICIO
¿Cómo escalan?
¿Qué pasa si detecto que la mayoría de mis usuarios utilizan una funcionalidad más que otras (prefieren pizza) ?
¿Cómo escalan? - Monolítico
¿Cómo escalan? - Microservicios
Puedo levantarla cantidad de instanciasque se requieren.
Lo primero...
Usar y mantenermicroservicios es difícil!
¿Qué es un microservicio?
A DUMB PIPE!!
¿Qué es un microservicio?
A DUMP PIPE!!
¿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
¿Cómo se comunican los MS?
?
¿Cómo se comunican los MS?
Exponen APIConsumen API
Por lo tanto, se pueden comportar como servidor, como cliente, O ÁMBAS!
¿Cómo se comunican los MS?
Suscripción a un evento“Escuchar cambios”“Notificar cambios”
EVENTSERVICE
Entorno de desarrollo para microservicios
Hay muchas herramientas que nos facilitan el desarrollo de microservicios. Por
ejemplo para JAVA....
¿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)
¿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/
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.
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.
STACK
Independientemente del lenguaje o stack que utilicemos siempre necesitamos las mismas herramientas.
STACK
Recordemos que los microservicios, son políglotas, por lo tanto los podemos construir en cualquier lenguaje de Programación.
Lo importante es siempre disponer de...
Servicio de configuración
de entorno
Descubrimiento y monitoreo
Balanceo de carga
Servicio decomunicación
API GATEWAY
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?
CONFIGURACIÓN
Debemos disponer de un servicio, que permita centralizar las variables de configuración de microservicios.
https://spring.io/projects/spring-cloud-config
MICROSERVICES DISCOVERY
Dada la gran cantidad de servicios ejecutándose, debemos monitorearlos, detectando su estado, su localización y otros datos relevantes.
EUREKA
BALANCEO DE CARGA
Si un microservicio responde a muchas solicitudes, es posible desplegar varias instancias del mismo, distribuyendo las peticiones que reciben.
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%
TOLERANCIA A FALLOS
Debido a la gran cantidad de servicios a desplegar, es obligatorio gestionar y mitigar los fallos que siempre van a ocurrir.
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
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”.
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.
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”.
Lo importante es siempre disponer de...
Servicio de configuración
de entorno
Descubrimiento y monitoreo
Balanceo de carga
Servicio decomunicación
API GATEWAY
CASO USO DE EJEMPLO
USUARIO REQUIERE RECUPERAR CONTRASEÑA, RECIBIENDO UN CORREO
ELECTRÓNICO DE RECUPERACIÓN.
STACK EJEMPLO
Microservicios parte 230 de Agosto 2019Versión para el área de ingeniería
RECURSOS
https://github.com/mfornos/awesome-microservices
mfornos/awesome-microservices
https://microservices.io/Microservicios IO