SlideShare una empresa de Scribd logo
1 de 40
Erasmo Domínguez
http://www.meetup.com/es-ES/Dev_Ops_Tnf/
@erasmolpa
Introducción a Microservicios
• 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.
MONOLITO JAVA 
http://www.slideshare.net/Codemotion/refactor-microservices
MONOLITO JAVA 
http://www.slideshare.net/Codemotion/refactor-microservices
VERSIONANDO EL MONOLITO
http://www.slideshare.net/Codemotion/refactor-microservices
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.
You build it, you run it.
Werner Vogels
MARTIN FOWLER
“A particular way of designing
software applications as suites of
independently deployable
services.”
“Microservices is a software architecture
style in which complex applications are
composed of small, independent
processes communicating with each
other using language-agnostic APIs”
Y QUE PASA CON SOA?
• SOA  Service Oriented Architecture
• https://es.wikipedia.org/wiki/Arquitectura_orientada_a_servicios
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) ?
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.
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.
DOMAIN DRIVEN DESING “DDD”.
http://martinfowler.com/bliki/BoundedContext.html
Bounded context
Las 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.
FRAMEWORKS
• Node.js
• Senecajs
• Strongloop(Loopback )
• Java
• Spring Boot
• Spring Cloud “Netflix OSS”
• Dropwizard
@XEBECH
DEL MONOLITO HACIA MICROSERVICES
UNA DE TANTOS PLANTEAMIENTOS...
Monitoring
(logs)
Configuration
Management
Service Discovery
(Circuit Breaker)
Load
Balancer
Service
Registry
Edge
Service
(GateAway)
Service
Client
Central (Proxy) Loadbalancer
Service
Service
Service
Ejemplo
Ejemplo
Ejemplo
• 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
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
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
EUREKA
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
A single “bad” service can still bring your service down
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
Eureka, Zuul y Ribbon
VISUALIZACION DE DEPENDENCIAS
WTF!!!!
• 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
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
DEVOPS-CONTENEDORES
MICROSERVICIO 
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.
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/
Auto escalado?
En la próxima charla…Introducción a Kubernetes que ya toca!!!!

Más contenido relacionado

La actualidad más candente

Domain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledDomain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledNicola Costantino
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignRyan Riley
 
20190427 arquitectura de microservicios con contenedores
20190427 arquitectura de microservicios con contenedores20190427 arquitectura de microservicios con contenedores
20190427 arquitectura de microservicios con contenedoresRicardo González
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignNader Albert
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to MicroservicesMahmoudZidan41
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)Tom Kocjan
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMiki Lombardi
 
Arquitectura hexagonal
Arquitectura hexagonalArquitectura hexagonal
Arquitectura hexagonal540deg
 
A Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation SlidesA Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slidesthinkddd
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven DesignAndriy Buday
 
Dockers and containers basics
Dockers and containers basicsDockers and containers basics
Dockers and containers basicsSourabh Saxena
 
Domain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroDomain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroFabrício Rissetto
 
Microservicios y contenedores Docker
Microservicios y contenedores DockerMicroservicios y contenedores Docker
Microservicios y contenedores DockerPlain Concepts
 
Ansible Automation Platform.pdf
Ansible Automation Platform.pdfAnsible Automation Platform.pdf
Ansible Automation Platform.pdfVuHoangAnh14
 
Deploy 22 microservices from scratch in 30 mins with GitOps
Deploy 22 microservices from scratch in 30 mins with GitOpsDeploy 22 microservices from scratch in 30 mins with GitOps
Deploy 22 microservices from scratch in 30 mins with GitOpsOpsta
 

La actualidad más candente (20)

Micro Frontends
Micro FrontendsMicro Frontends
Micro Frontends
 
Domain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledDomain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) Distilled
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
 
20190427 arquitectura de microservicios con contenedores
20190427 arquitectura de microservicios con contenedores20190427 arquitectura de microservicios con contenedores
20190427 arquitectura de microservicios con contenedores
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - Plansoft
 
Arquitectura hexagonal
Arquitectura hexagonalArquitectura hexagonal
Arquitectura hexagonal
 
A Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation SlidesA Practical Guide to Domain Driven Design: Presentation Slides
A Practical Guide to Domain Driven Design: Presentation Slides
 
Introduction to DDD
Introduction to DDDIntroduction to DDD
Introduction to DDD
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Dockers and containers basics
Dockers and containers basicsDockers and containers basics
Dockers and containers basics
 
Domain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroDomain Driven Design: Zero to Hero
Domain Driven Design: Zero to Hero
 
Terraform Ansible v3.0
Terraform Ansible v3.0Terraform Ansible v3.0
Terraform Ansible v3.0
 
Microservicios y contenedores Docker
Microservicios y contenedores DockerMicroservicios y contenedores Docker
Microservicios y contenedores Docker
 
Ansible Automation Platform.pdf
Ansible Automation Platform.pdfAnsible Automation Platform.pdf
Ansible Automation Platform.pdf
 
Deploy 22 microservices from scratch in 30 mins with GitOps
Deploy 22 microservices from scratch in 30 mins with GitOpsDeploy 22 microservices from scratch in 30 mins with GitOps
Deploy 22 microservices from scratch in 30 mins with GitOps
 

Destacado

Sane Sharding with Akka Cluster
Sane Sharding with Akka ClusterSane Sharding with Akka Cluster
Sane Sharding with Akka Clustermiciek
 
Microservices with SenecaJS (part 2)
Microservices with SenecaJS (part 2)Microservices with SenecaJS (part 2)
Microservices with SenecaJS (part 2)Designveloper
 
Container Orchestration Wars (Micro Edition)
Container Orchestration Wars (Micro Edition)Container Orchestration Wars (Micro Edition)
Container Orchestration Wars (Micro Edition)Karl Isenberg
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudEberhard Wolff
 
Kubernetes API - deep dive into the kube-apiserver
Kubernetes API - deep dive into the kube-apiserverKubernetes API - deep dive into the kube-apiserver
Kubernetes API - deep dive into the kube-apiserverStefan Schimanski
 
Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introductionDongwon Kim
 
Deploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows ContainersDeploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows ContainersBen Hall
 
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with KubernetesTips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with KubernetesBen Hall
 
Docker and kubernetes
Docker and kubernetesDocker and kubernetes
Docker and kubernetesDongwon Kim
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to KubernetesImesh Gunaratne
 
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...SlideShare
 

Destacado (12)

Introducción a Kubernetes
Introducción a KubernetesIntroducción a Kubernetes
Introducción a Kubernetes
 
Sane Sharding with Akka Cluster
Sane Sharding with Akka ClusterSane Sharding with Akka Cluster
Sane Sharding with Akka Cluster
 
Microservices with SenecaJS (part 2)
Microservices with SenecaJS (part 2)Microservices with SenecaJS (part 2)
Microservices with SenecaJS (part 2)
 
Container Orchestration Wars (Micro Edition)
Container Orchestration Wars (Micro Edition)Container Orchestration Wars (Micro Edition)
Container Orchestration Wars (Micro Edition)
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
 
Kubernetes API - deep dive into the kube-apiserver
Kubernetes API - deep dive into the kube-apiserverKubernetes API - deep dive into the kube-apiserver
Kubernetes API - deep dive into the kube-apiserver
 
Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introduction
 
Deploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows ContainersDeploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows Containers
 
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with KubernetesTips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
 
Docker and kubernetes
Docker and kubernetesDocker and kubernetes
Docker and kubernetes
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
 
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
 

Similar a Introducción a microservicios

An evening with... Microservices - Session 1
An evening with... Microservices - Session 1An evening with... Microservices - Session 1
An evening with... Microservices - Session 1Arkhotech
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Eduardo Castro
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsErnesto Anaya
 
Patrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración ModernaPatrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración ModernaFrancisco Arturo Viveros
 
Mecanismos y patrones para acelerar adopción en arquitecturas de microservicios
Mecanismos y patrones para acelerar adopción en arquitecturas de microserviciosMecanismos y patrones para acelerar adopción en arquitecturas de microservicios
Mecanismos y patrones para acelerar adopción en arquitecturas de microserviciosSoftware Guru
 
.Net Conf UY 2017: Un paseo por Azure Service Fabric
.Net Conf UY 2017: Un paseo por Azure Service Fabric.Net Conf UY 2017: Un paseo por Azure Service Fabric
.Net Conf UY 2017: Un paseo por Azure Service FabricGuillermo Javier Bellmann
 
Microservicios con Net Core y Azure Service Fabric
Microservicios con Net Core y Azure Service FabricMicroservicios con Net Core y Azure Service Fabric
Microservicios con Net Core y Azure Service FabricBelatrix Software
 
Dev ops with Data
Dev ops with DataDev ops with Data
Dev ops with Datannakasone
 
Microservicios con ASP.NET Core
Microservicios con ASP.NET CoreMicroservicios con ASP.NET Core
Microservicios con ASP.NET CoreEduardo Campañó
 
Symfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony FrameworkSymfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony Frameworkexcedesoft
 
eMobc Android Startup
eMobc Android StartupeMobc Android Startup
eMobc Android Startupemobc
 
Web App Container
Web App ContainerWeb App Container
Web App ContainerCDS
 
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...ssuserc860fb
 

Similar a Introducción a microservicios (20)

An evening with... Microservices - Session 1
An evening with... Microservices - Session 1An evening with... Microservices - Session 1
An evening with... Microservices - Session 1
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOps
 
Patrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración ModernaPatrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración Moderna
 
"Al rico" PHP
"Al rico" PHP"Al rico" PHP
"Al rico" PHP
 
Mecanismos y patrones para acelerar adopción en arquitecturas de microservicios
Mecanismos y patrones para acelerar adopción en arquitecturas de microserviciosMecanismos y patrones para acelerar adopción en arquitecturas de microservicios
Mecanismos y patrones para acelerar adopción en arquitecturas de microservicios
 
.Net Conf UY 2017: Un paseo por Azure Service Fabric
.Net Conf UY 2017: Un paseo por Azure Service Fabric.Net Conf UY 2017: Un paseo por Azure Service Fabric
.Net Conf UY 2017: Un paseo por Azure Service Fabric
 
Microservicios con Net Core y Azure Service Fabric
Microservicios con Net Core y Azure Service FabricMicroservicios con Net Core y Azure Service Fabric
Microservicios con Net Core y Azure Service Fabric
 
Dev ops with Data
Dev ops with DataDev ops with Data
Dev ops with Data
 
SOA Open Source
SOA Open SourceSOA Open Source
SOA Open Source
 
M vs m
M vs mM vs m
M vs m
 
Microservicios con ASP.NET Core
Microservicios con ASP.NET CoreMicroservicios con ASP.NET Core
Microservicios con ASP.NET Core
 
Cloud Native Development in the JVM
Cloud Native Development in the JVMCloud Native Development in the JVM
Cloud Native Development in the JVM
 
Symfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony FrameworkSymfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony Framework
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
 
Microservicios
MicroserviciosMicroservicios
Microservicios
 
eMobc Android Startup
eMobc Android StartupeMobc Android Startup
eMobc Android Startup
 
Web App Container
Web App ContainerWeb App Container
Web App Container
 
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOpsMeetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
 
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
Orquestación de Microservicios Introducción a arquitecturas de desarrollo mod...
 

Último

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 

Último (10)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Introducción a microservicios

  • 2.
  • 3. • 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.
  • 4.
  • 8. 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.
  • 9. You build it, you run it. Werner Vogels
  • 10. MARTIN FOWLER “A particular way of designing software applications as suites of independently deployable services.”
  • 11. “Microservices is a software architecture style in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs”
  • 12. Y QUE PASA CON SOA? • SOA  Service Oriented Architecture • https://es.wikipedia.org/wiki/Arquitectura_orientada_a_servicios
  • 13. 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) ?
  • 14. 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.
  • 15. 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.
  • 16. DOMAIN DRIVEN DESING “DDD”. http://martinfowler.com/bliki/BoundedContext.html Bounded context Las 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.
  • 17. FRAMEWORKS • Node.js • Senecajs • Strongloop(Loopback ) • Java • Spring Boot • Spring Cloud “Netflix OSS” • Dropwizard
  • 18. @XEBECH DEL MONOLITO HACIA MICROSERVICES
  • 19. UNA DE TANTOS PLANTEAMIENTOS... Monitoring (logs) Configuration Management Service Discovery (Circuit Breaker) Load Balancer Service Registry Edge Service (GateAway) Service Client Central (Proxy) Loadbalancer Service Service Service
  • 23. • 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
  • 24. 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
  • 25. 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
  • 27. 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
  • 28.
  • 29. A single “bad” service can still bring your service down
  • 30. 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
  • 31. Eureka, Zuul y Ribbon
  • 33. • 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
  • 34. 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
  • 35.
  • 38. 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.
  • 39. 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/
  • 40. Auto escalado? En la próxima charla…Introducción a Kubernetes que ya toca!!!!