Microservicios parte 2 30 de Agosto 2019 Versión para el área de … · 2019-09-13 · para la...

Preview:

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