En las plataformas modernas, términos como alta disponibilidad, despliegue continuo, time-to-market, devops, independencia en el desarrollo...etc han puesto de moda el concepto de arquitecturas basadas en microservicios. En esta charla abordamos estos conceptos y proponer herramientas que faciliten la construcción de estas aplicaciones.
Ponentes: Raúl Galán y Miguel Garrido.
Más información: http://www.meetup.com/Tecnologias-para-la-Transformacion-Digital/events/227431189/
2. 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.”
3. Introducción a arquitecturas basadas en microservicios
Arquitecturas monolíticas vs arquitecturas de microservicios
Arquitecturas monolíticas (pre-SOA) Arquitecturas SOA Microservicios
4. 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
5. 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
6. 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
7. 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
8. Introducción a arquitecturas basadas en microservicios
Despliegue independiente de cada microservicio.
Beneficios de arquitecturas basadas en microservicios
“VS”
MicroserviciosMonolítica
11. Introducción a arquitecturas basadas en microservicios
¿Qué necesitamos en una arquitectura basada en microservicios?
12. Introducción a arquitecturas basadas en microservicios
Arquitectura de microservicios
Edge Service
Registry
Load Balancer
Ribbon
Ribbon
Microservicio
Configuración
Logging
Circuit Breaker
13. Introducción a arquitecturas basadas en microservicios
Vista general en una arquitectura basada en microservicios: Netflix
Zuul
Eureka
Server
Ribbon
Ribbon
Ribbon
Microservicio
Configuración
Logging
Hystrix
(Spring, Cloud,
Config, etc.)
(Log4, Blitz4J,
ELK, etc.)
14. Introducción a arquitecturas basadas en microservicios
Registry: Autodescubrimiento con Eureka
@Configuration
@EnableAutoConfiguration
@EnableEurekaClient
@RestController
public class EurekaClientApplication {
@RequestMapping("/")
public String home() {
return "Hello World" ;
}
public static void main(String[] args) {
SpringApplication .run(EurekaClientApplication.class, args);
}
}
Cliente Eureka
@SpringBootApplication
@EnableEurekaServer
@EnableDiscoveryClient
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication .run(EurekaServerApplication.
class, args);
}
}
Servidor Eureka
15. Introducción a arquitecturas basadas en microservicios
Load Balancer: Ribbon
Instancia
2
Instancia
n
Instancia
1
Eureka
Server
Ribbon
...
19. Introducción a arquitecturas basadas en microservicios
Circuit Breaker: Hystrix
Ejemplo de monitorización en tiempo real de un
microservicio utilizando Hystrix
20. Introducción a arquitecturas basadas en microservicios
Monitorización: Turbine y Graffite
Ejemplo de dashboard en tiempo real de varios microservicios utilizando Turbine