36
Microservicios parte 2 30 de Agosto 2019 Versión para el área de ingeniería

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

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

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

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

¿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

¿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

¿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

¿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

¿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

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

¿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

¿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

¿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

¿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

¿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

¿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

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

¿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

¿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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

RECURSOS

https://github.com/mfornos/awesome-microservices

mfornos/awesome-microservices

https://microservices.io/Microservicios IO