Introducción a arquitecturas basadas en microservicios.

24
Introducción a arquitecturas basadas en microservicios Introducción a arquitecturas basadas en microservicios

Transcript of Introducción a arquitecturas basadas en microservicios.

Page 1: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Introducción a arquitecturasbasadas en microservicios

Page 2: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

¿Qué son los microservicios?

“Microservices is a software architecture style, in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs. These services are small, highly decoupled and focus on doing a small task.”

Page 3: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Arquitecturas monolíticas vs arquitecturas de microservicios

Arquitecturas monolíticas (pre-SOA) Arquitecturas SOA Microservicios

Page 4: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Beneficios de arquitecturas basadas en microservicios

Principio de responsabilidad única: Cada microservicio hará una cosa, pero la hará bien.

“VS”

MicroserviciosMonolítica

Page 5: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Desarrollo más eficiente al ser servicios más pequeños y especializados.

Beneficios de arquitecturas basadas en microservicios

“VS”

MicroserviciosMonolítica

Page 6: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Escalado eficiente, elástico y horizontal en función de la demanda.

Beneficios de arquitecturas basadas en microservicios

“VS”

MicroserviciosMonolítica

Page 7: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Beneficios de arquitecturas basadas en microservicios

Políglota, cada servicio puede estar desarrollado con una tecnología diferente.

Beneficios de arquitecturas basadas en microservicios

“VS”

MicroserviciosMonolítica

Page 8: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Despliegue independiente de cada microservicio.

Beneficios de arquitecturas basadas en microservicios

“VS”

MicroserviciosMonolítica

Page 9: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Casos de uso

Page 10: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Desafíos derivados de una arquitectura de microservicios

Page 11: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

¿Qué necesitamos en una arquitectura basada en microservicios?

Page 12: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Arquitectura de microservicios

Edge Service

Registry

Load Balancer

RibbonRibbon

Microservicio

Configuración

Logging

Circuit Breaker

Page 13: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Vista general en una arquitectura basada en microservicios: Netflix

Zuul

EurekaServer

Ribbon

RibbonRibbon

Microservicio

Configuración

Logging

Hystrix

(Spring, Cloud, Config, etc.)

(Log4, Blitz4J, ELK, etc.)

Page 14: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Registry: Autodescubrimiento con Eureka

@Configuration@EnableAutoConfiguration@EnableEurekaClient@RestControllerpublic class EurekaClientApplication {

@RequestMapping("/") public String home() { return "Hello World" ; }

public static void main(String[] args) { SpringApplication .run(EurekaClientApplication.class, args); }

}

Cliente Eureka

@SpringBootApplication@EnableEurekaServer@EnableDiscoveryClientpublic class EurekaServerApplication {

public static void main(String[] args) { SpringApplication .run(EurekaServerApplication.class, args); }

}

Servidor Eureka

Page 15: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Load Balancer: Ribbon

Instancia 2

Instancia n

Instancia 1

EurekaServer

Ribbon

...

Page 16: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Edge Service: Zuul

Page 17: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Circuit Breaker: Hystrix

Page 18: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Circuit Breaker: Hystrix

Page 19: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Circuit Breaker: Hystrix

Ejemplo de monitorización en tiempo real de un microservicio utilizando Hystrix

Page 20: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Monitorización: Turbine y Graffite

Ejemplo de dashboard en tiempo real de varios microservicios utilizando Turbine

Page 21: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Configuración: Spring Cloud Config y/o Archaius

Page 22: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Logging: Log4J 2.0 + RSyslog

Page 23: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

¡A programar!

"Lo que tenemos que aprender lo aprendemos haciéndolo"

Aristóteles

Page 24: Introducción a arquitecturas basadas en microservicios.

Introducción a arquitecturas basadas en microservicios

Muchas gracias :)