Download - Introducción a microservicios
![Page 1: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/1.jpg)
Erasmo Domínguez
http://www.meetup.com/es-ES/Dev_Ops_Tnf/
@erasmolpa
Introducción a Microservicios
![Page 2: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/2.jpg)
Arquitectura de Software
![Page 3: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/3.jpg)
• Definir algo (software), en componentes y sus interacciones.
Structura
Visión
Solución
• Se toman decisiones significativas del diseño del software.
• El resultado ha de ser un producto que solucione el problema planteado y facilite futuras obras de mejoras y mantenimiento.
![Page 4: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/4.jpg)
Arquitectura Monolítica
![Page 5: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/5.jpg)
MONOLITO JAVA http://www.slideshare.net/Codemotion/refactor-microservices
![Page 6: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/6.jpg)
MONOLITO JAVA http://www.slideshare.net/Codemotion/refactor-microservices
![Page 7: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/7.jpg)
VERSIONANDO EL MONOLITOhttp://www.slideshare.net/Codemotion/refactor-microservices
![Page 8: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/8.jpg)
Características
• Fácil de “testear” y depurar.
• Fácil de escalar horizontalmente.
• El código está centralizado en un mismo sitio, integrado en un IDE.
• Equipo Dev y equipo Ops centralizados y claramente identificado.
![Page 9: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/9.jpg)
You build it, you run it.Werner Vogels
![Page 10: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/10.jpg)
MARTIN FOWLER
“A particular way of designing software applications as suites of independently deployable services.”
![Page 11: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/11.jpg)
“Microservices is a software architecture style in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs”
![Page 12: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/12.jpg)
Y QUE PASA CON SOA?
• SOA Service Oriented Architecture• https://es.wikipedia.org/wiki/Arquitectura_orientada_a_servicios
![Page 13: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/13.jpg)
CARACTERÍSTICAS I• Principio responsabilidad única.”Independencia”,”Aislamiento”.
• Entregas rápidas y facilidad de marcha atrás
• Independencia en la entrega entre diferentes equipos / servicios.
• Tecnología /framework / lenguaje adecuado para cada problema. ”Implementación y configuración óptima”.
• Domain Driven Desing “DDD”.
• “Mantenibilidad”
• Incrementa la agilidad y productividad de negocio. ”Entrega contínua”.
• Facilita la escalabilidad. Horizontal y vertical. ”Sólo crece lo que necesita crecer”
• Fundamental aplicar “DevOps”.Eje: (1 Microservicio = Container) ?
![Page 14: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/14.jpg)
CARACTERÍSTICAS II
• Organizado alrededor de capacidades de negocio.
• Se crean componentes que son servicios. Actualizables y fácil de sustituir por otra pieza.
• Enfocado a producto y no a proyecto.
• Automatización de la infraestructura.
• Diseñado para el fallo.
![Page 15: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/15.jpg)
A TENER EN CUENTA….• Deploy independientes
• Cultura de Automatización
• Estrategia de escalado
• Testing Necesidad de probar el “ecosistema” al completo. No es suficiente con pruebas centradas en el microservicio. Tolerancia a fallos.
• Monitorizar el ecosistema Ejm usando frameworks como ELK
• Service Discovery “Auto descubrimiento” No es fácil de gestionar / optimizar.
• Sistemas distribuidos (latencia, tolerancia a fallos…)
• “Fan out” de peticiones Aumento conciderable de tráfico.
![Page 16: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/16.jpg)
DOMAIN DRIVEN DESING “DDD”.
http://martinfowler.com/bliki/BoundedContext.html
Bounded contextLas fronteras de estos contextos son los puntos por los cuales se pueden comunicar los subdominio de un contexto con otro, Esta comunicación se hace mediante servicios.
![Page 17: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/17.jpg)
FRAMEWORKS• Node.js
• Senecajs
• Strongloop(Loopback )
• Java
• Spring Boot
• Spring Cloud “Netflix OSS”
• Dropwizard
![Page 19: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/19.jpg)
UNA DE TANTOS PLANTEAMIENTOS...
Monitoring(logs)
ConfigurationManagement
Service Discovery(Circuit Breaker)
Load Balancer
Service Registry
Edge Service
(GateAway)
Service Client
Serv
icio
de
Cach
é Se
rvic
io d
e Se
gurid
ad
Central (Proxy) Loadbalancer
Service Service
Service
![Page 20: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/20.jpg)
Ejemplo
![Page 21: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/21.jpg)
Ejemplo
![Page 22: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/22.jpg)
Ejemplo
![Page 23: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/23.jpg)
• Zuul Punto de entrada al ecosistema.• Eureka Registro y descubrimiento de servicios.
• Ribbon Balanceo de carga.
• Hystrix Circuit Breaker.Tolerancia a fallos.
https://netflix.github.io/
ALGUNAS PIEZAS DE NETFLIX
![Page 24: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/24.jpg)
ZUUL• Punto de entrada al ecosistema de microservicios y será el encargado de enrutar, balancear,
securizar, monitorizar las peticiones.
• Wiki oficial del desarrollo de Zuul: https://github.com/Netflix/zuul/wiki
![Page 25: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/25.jpg)
EUREKA• Se encargar de registrar las diferentes instancias de microservicios existentes, su localización,
estado, metadatos.
• Cada microservicio durante su arranque se comunicará con el servidor Eureka para notificar que está disponible. Eureka consulta “heartbeats” cada x tiempo si el servicio esta disponible y en caso contrario , tras varios reintentos lo elimina de su registro.
• Integrado con Spring Cloud Config y Asgard.
• Wiki oficial del desarrollo de Eureka: https://github.com/Netflix/eureka/wiki
![Page 26: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/26.jpg)
EUREKA
![Page 27: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/27.jpg)
HYSTRIX• Gestiona las interacciones entre servicios en sistemas distribuidos añadiendo lógica de
latencia y tolerancia a fallos. Es el famoso patrón circuit Breaker y nos permite programar que hacer en caso de fallo.
• Esto hay que verlo ttps://github.cohttps://github.com/Netflix/Hystrix/wiki/How-it-Works#Flowm/Netflix/Hystrix/wiki/How-it-Works#Flow
• Demo https://github.com/marcelbirkner/docker-hystrix-demo
• Wiki oficial del desarrollo de Hystrix https://github.com/Netflix/Hystrix/wiki
![Page 28: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/28.jpg)
![Page 29: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/29.jpg)
A single “bad” service can still bring your service down
![Page 30: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/30.jpg)
RIBBON• Se encarga de la comunicación entre procesos en la nube que realiza balanceo de carga en el
lado cliente.
• Wiki oficial del desarrollo de Ribbon: https://github.com/Netflix/ribbon/wiki
![Page 31: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/31.jpg)
Eureka, Zuul y Ribbon
![Page 32: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/32.jpg)
VISUALIZACION DE DEPENDENCIASWTF!!!!
![Page 33: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/33.jpg)
• Cuantas dependencias tiene mi servicio?
• Cuál es el volumen de llamadas a mi servicio?
• Que hago si mi servicio falla? .Es un fallo en mi invocación? Es un fallo por un servicio que invoco?.
• Cuál de mis procesos de negocio es el más lento. Caso de uso más “pesado”
• Podría responder a la pregunta, de cuantos y que tipos de errores he tenido en peticiones a mi servicio en los últimos x minutos?
http://neo4j.com/graphgist/4f1e5fe25088209dcc26/
DEPENDENCIAS ENTRE SERVICIOS
![Page 34: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/34.jpg)
OTROS PROYECTOS DE NETFLIX• Spring Cloud Netflix http://cloud.spring.io/spring-cloud-netflix/
• Cloud -config https://github.com/spring-cloud/spring-cloud-config
• Turbine https://github.com/Netflix/Turbine/wiki
• Asgard https://github.com/Netflix/asgard/wiki
• Simian Army https://github.com/Netflix/SimianArmy
• Archaius https://github.com/Netflix/archaius
![Page 35: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/35.jpg)
![Page 36: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/36.jpg)
DEVOPS-CONTENEDORES
![Page 37: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/37.jpg)
MICROSERVICIO
![Page 38: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/38.jpg)
Conclusiones• Apps Monolíticas Ideales para organizaciones pequeñas.
• MicroServices Presenta multiples ventajas con respecto a un planteamiento más tradicional.
• Tu compañía / proyecto necesita Escalar?
• Proveedor de Cloud son el entorno ideal para este tipo de arquitecturas. Auto Scalado!
• NetflixOSS Proporciona todas las librerias y piezas de infraestructura para montar la arquitectura.
![Page 39: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/39.jpg)
MÁS SITIOS….
• http://es.slideshare.net/AmazonWebServices/convert-your-code-into-a-microservice-using-aws-lambda
• http://martinfowler.com/bliki/BoundedContext.html
• http://martinfowler.com/bliki/CircuitBreaker.html
• http://www.oodesign.com/command-pattern.html
• http://fabric8.io/presentations/kubernetes-for-java-developers/#/
• http://microservices.io/index.html
• http://start.spring.io/
![Page 40: Introducción a microservicios](https://reader033.vdocumento.com/reader033/viewer/2022061407/58792f9c1a28ab7c448b6259/html5/thumbnails/40.jpg)
Donde va todo esto? Auto escalado?
En la próxima charla…Introducción a Kubernetes que ya toca!!!!