SlideShare una empresa de Scribd logo
Meetup Microservicios - Orquestando microservicios
Orquestando microservicios
como lo hace Netflix
Meetup Microservicios - Orquestando microservicios
Grupo de meetup Microservicios
¡ Bienvenidos !
Meetup Microservicios - Orquestando microservicios
BIO
Borja Gómez
Arquitecto Software@Paradigma Digital
bgomez@paradigmadigital.com
@borjagomez
Meetup Microservicios - Orquestando microservicios
Grupo de meetup Microservicios
‘Orquestando Microservicios
como lo hace Netflix’
Meetup Microservicios - Orquestando microservicios
Objetivos de la sesión
● ¿Por qué orquestación de microservicios?
● Características orquestación
● Netflix Conductor
● Demo
Meetup Microservicios - Orquestando microservicios
¿Por qué la orquestación?
La primera aproximación es la de mediación. También son llamados servicios de
segundo nivel, o microservicios de negocio.
En algunos casos esta alternativa es buena. Pero cuando los tiempos o la
complejidad aumentan, parece necesario tener una lógica más enfocada a los
procesos.
Meetup Microservicios - Orquestando microservicios
¿Por qué la orquestación?
Los microservicios muchas veces no aportan valor por sí mismos.
- ¿Qué me aporta funcionalmente insertar un registro en una tabla de
auditoría?
- ¿De qué me sirve tener codificado un video si no lo subo al catálogo?
La problemática con microservicios es similar a la que vivimos con SOA: lo que
aporta valor al negocio es la funcionalidad, y en multitud de ocasiones esta
funcionalidad se implementa con un flujo de negocio, y no una llamada única.
Meetup Microservicios - Orquestando microservicios
¿Por qué la orquestación?
Consultar Cliente
en BD
Insertar en BD
Clientes
Insertar cuenta en
BD Cuentas
Creación Cuenta
Editar el estilo de texto del patrón
Orquestación VS Coreografía
Meetup Microservicios - Orquestando microservicios
Orquestación VS Coreografía
La orquestación de microservicios implica tener una entidad central que gobierna
el flujo de trabajo, decidiendo a qué servicios invocar y cuándo.
La coreografía prescinde de esta entidad central, delegando en los microservicios el
control del flujo.
Meetup Microservicios - Orquestando microservicios
Orquestación VS Coreografía
Con la orquestación, es necesario una pieza central que lo gobierne. Entonces…
Mejor la coreografía, ¿no? ¿Por qué hablamos de orquestación?
LET ME THINK
Meetup Microservicios - Orquestando microservicios
Orquestación VS Coreografía
Pese a que la orquestación necesita de un componente central, tiene ventajas:
● Los microservicios no tienen que conocer el proceso de negocio.
○ Cumplen el Principio de Responsabilidad Única.
● Tenemos una pieza central a la que podemos preguntar por el estado de los procesos,
estadísticas, etc.
● Permite la migración de versiones de procesos comenzados.
La coreografía por su parte tiene las siguientes desventajas:
● Es complicado escalar en funcionalidad. Cualquier cambio en un servicio impacta al flujo
completo.
● Es muy complejo conocer el estado de los procesos.
● Los microservicios deben conocer el proceso, y por lo tanto tienen una complejidad
mayor.
Editar el estilo de texto del patrón
Netflix Conductor
Meetup Microservicios - Orquestando microservicios
Netflix Conductor
¿Qué es?
Un orquestador de flujos que corre en entornos cloud y que permite implementar
cada una de las tareas mediante el uso de microservicios.
El reto de Netflix era crear un producto que permitiese orquestar los flujos
manteniendo las ventajas de usar un sistema basado en microservicios.
Meetup Microservicios - Orquestando microservicios
Netflix Conductor: Arquitectura de la Solución
Meetup Microservicios - Orquestando microservicios
Netflix Conductor: Tareas
● Tareas de Sistema
1. Fork: crea una bifurcación en paralelo.
2. Fork_join_dynamic: realiza la paralelización en función de la expresión de entrada.
3. Join: hace un join de un flujo previamente bifurcado.
4. Decide: condicional, de forma similar a un “case switch”.
5. Sub_workflow: arranca un flujo como una tarea. El flujo queda pausado hasta que el subflujo termina.
6. Wait: introduce un punto de parada asíncrono en el flujo. Se mantiene en estado in_progress hasta que se actualiza con estado
completed o failed.
7. HTTP: ejecuta la llamada a un microservicio a través de HTTP. Dicha invocación se regirá por la política de reintentos declarada al
definir la tarea.
8. Eventos: pueden arrancar una instancia de un flujo, y marcar una tarea como fallida o completada.
● Tareas simples: implementadas en el worker. Son las tareas enfocadas al negocio en sí. Las tareas se comunican con Conductor
mediante un sistema de polling para recuperar tareas programadas del tipo configurado, y la devuelven actualizada. En ese momento es
cuando Conductor continúa el flujo a partir de la tarea actualizada.
Meetup Microservicios - Orquestando microservicios
Netflix Conductor: Tareas
Meetup Microservicios - Orquestando microservicios
Netflix Conductor: Editor de Flujos
Una de las ventajas de Conductor es que huye de notaciones complejas, apostando por la simplicidad de JSON.
Los flujos se definen como una sucesión de tareas y eventos, que se definen en base a unos parámetros:
- Nombre: nombre de la tarea.
- Tipo de Tarea: tipo formal de la tarea.
- Recuento:
- Numero máximo de intentos.
- Tipo de Reintento. Fijo cada x segundos o exponencial en función del número de reintentos.
- Timeout. Fijado en
- Política de timeout: reintentar, marcar flujo como timed_out o simplemente informar.
- Parámetros de entrada salida.
Todo esto, se ve muy fácilmente en un visor de flujos incorporado en la herramienta.
JSONPath
Meetup Microservicios - Orquestando microservicios
Netflix Conductor: Contexto de Datos
Conductor permite el intercambio de información entre los compomentes del flujo.
Tiene dos contextos: workflow y task..
El binding de los datos se realizará mediante el uso de JSONPath, que implementa la mayoría de funcionalidad
de XPath para JSON.
${SOURCE.input.phoneNumbers[:1].number}
Y todos los que hemos trabajado con XPath…
Sabemos que con XPath puedes hacer (casi) cualquier cosa. JSONPath
Meetup Microservicios - Orquestando microservicios
Netflix Conductor: Contexto de Ejecución
Meetup Microservicios - Orquestando microservicios
Netflix Conductor: Monitorización
Conductor usa Spectator para la recolección me métricas de uso. Destacan las siguientes métricas:
1. workflow_server_error: Porcentaje de errores en servidor
2. workflow_failure: Contador para flujos que han fallado
3. workflow_start_error: Contador de errores al arrancar un flujo
4. workflow_running: Contador de flujos en estado “running”
5. task_queue_wait: Tiempo que lleva una tarea en la cola
6. task_execution: Tiempo que ha tardado en completarse la tarea
7. task_poll : Tiempo que ha tardado la tarea en ser asignada
8. task_queue_depth: Tareas en espera de asignación
9. task_timeout: Contador de tareas que han caído en time-out.
Meetup Microservicios - Orquestando microservicios
Netflix Conductor: Configuración
Una de las ventajas de conductor frente a otros orquestadores es la fuerte modularización. Casi todas las capas
son pluggables, de forma que podemos cambiar el producto que usamos e incluso la implementación.
Para ello es necesario implementar las siguientes interfaces para cada backend.
//Store for workflow and task definitions
com.netflix.conductor.dao.MetadataDAO
//Store for workflow executions
com.netflix.conductor.dao.ExecutionDAO
//Index for workflow executions
com.netflix.conductor.dao.IndexDAO
//Queue provider for tasks
com.netflix.conductor.dao.QueueDAO
Meetup Microservicios - Orquestando microservicios
Netflix Conductor: Configuración
Para realizar la configuración, contamos con un fichero de configuración:
Meetup Microservicios - Orquestando microservicios
Demo
Demo
Meetup Microservicios - Orquestando microservicios
Demo: por si hay efecto demo
Meetup Microservicios - Orquestando microservicios
Nuestra Experiencia
Editar el estilo de texto del patrón
Mutua Madrileña. Definición Arquitectura de Aplicaciones
Orquestación de Procesos vs Orquestación de Servicios
Condiciones del Servicio / Entendimiento y enfoque de requisitos / Arquitectura Final/ Orquestación
Orquestación de Procesos (BPM) Orquestación de Servicios
Control de estado Sin estado
Larga duración Duración generalmente corta (no necesariamente)
Alta interacción con usuario (formularios, tareas manuales) Sin interacción con usuario.
UI para creación de flujos. Fácilmente entendible por negocio Generalmente carecen de IDE. Exigen más conocimiento técnico.
Muy completo: timers, events, tasks, relanzamiento, fault… Menor funcionalidad
Puede convertirse en un punto crítico del sistema Alto rendimiento. Perfecto encaje en modelo de microservicios
Ofrece mecanismos de compensación Es necesario implementar los mecanismos de compensación
We are hiring
people@paradigmadigital.com

Más contenido relacionado

La actualidad más candente

Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Lucas Jellema
 
Observability
ObservabilityObservability
Observability
Martin Gross
 
Spring Webflux
Spring WebfluxSpring Webflux
Spring Webflux
Carlos E. Salazar
 
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
YongSung Yoon
 
Designing a complete ci cd pipeline using argo events, workflow and cd products
Designing a complete ci cd pipeline using argo events, workflow and cd productsDesigning a complete ci cd pipeline using argo events, workflow and cd products
Designing a complete ci cd pipeline using argo events, workflow and cd products
Julian Mazzitelli
 
Observability vs APM vs Monitoring Comparison
Observability vs APM vs  Monitoring ComparisonObservability vs APM vs  Monitoring Comparison
Observability vs APM vs Monitoring Comparison
jeetendra mandal
 
Observability
ObservabilityObservability
Observability
ObservabilityObservability
Observability
Diego Pacheco
 
Observability
ObservabilityObservability
Observability
Ebru Cucen Çüçen
 
API Microservices with Node.js and Docker
API Microservices with Node.js and DockerAPI Microservices with Node.js and Docker
API Microservices with Node.js and Docker
Apigee | Google Cloud
 
Monitoring with Prometheus
Monitoring with PrometheusMonitoring with Prometheus
Monitoring with Prometheus
Shiao-An Yuan
 
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Matt Raible
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1
Toshiaki Maki
 
OpenTelemetry Introduction
OpenTelemetry Introduction OpenTelemetry Introduction
OpenTelemetry Introduction
DimitrisFinas1
 
More Than Monitoring: How Observability Takes You From Firefighting to Fire P...
More Than Monitoring: How Observability Takes You From Firefighting to Fire P...More Than Monitoring: How Observability Takes You From Firefighting to Fire P...
More Than Monitoring: How Observability Takes You From Firefighting to Fire P...
DevOps.com
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche Devops
Romain Chalumeau
 
Releasing Software Quickly and Reliably with AWS CodePipline
Releasing Software Quickly and Reliably with AWS CodePiplineReleasing Software Quickly and Reliably with AWS CodePipline
Releasing Software Quickly and Reliably with AWS CodePipline
Amazon Web Services
 
Observability
Observability Observability
Observability
Enes Altınok
 
Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018
Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018
Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018
Scrum Breakfast Vietnam
 
Observability For Modern Applications
Observability For Modern ApplicationsObservability For Modern Applications
Observability For Modern Applications
Amazon Web Services
 

La actualidad más candente (20)

Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
 
Observability
ObservabilityObservability
Observability
 
Spring Webflux
Spring WebfluxSpring Webflux
Spring Webflux
 
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
 
Designing a complete ci cd pipeline using argo events, workflow and cd products
Designing a complete ci cd pipeline using argo events, workflow and cd productsDesigning a complete ci cd pipeline using argo events, workflow and cd products
Designing a complete ci cd pipeline using argo events, workflow and cd products
 
Observability vs APM vs Monitoring Comparison
Observability vs APM vs  Monitoring ComparisonObservability vs APM vs  Monitoring Comparison
Observability vs APM vs Monitoring Comparison
 
Observability
ObservabilityObservability
Observability
 
Observability
ObservabilityObservability
Observability
 
Observability
ObservabilityObservability
Observability
 
API Microservices with Node.js and Docker
API Microservices with Node.js and DockerAPI Microservices with Node.js and Docker
API Microservices with Node.js and Docker
 
Monitoring with Prometheus
Monitoring with PrometheusMonitoring with Prometheus
Monitoring with Prometheus
 
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1
 
OpenTelemetry Introduction
OpenTelemetry Introduction OpenTelemetry Introduction
OpenTelemetry Introduction
 
More Than Monitoring: How Observability Takes You From Firefighting to Fire P...
More Than Monitoring: How Observability Takes You From Firefighting to Fire P...More Than Monitoring: How Observability Takes You From Firefighting to Fire P...
More Than Monitoring: How Observability Takes You From Firefighting to Fire P...
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche Devops
 
Releasing Software Quickly and Reliably with AWS CodePipline
Releasing Software Quickly and Reliably with AWS CodePiplineReleasing Software Quickly and Reliably with AWS CodePipline
Releasing Software Quickly and Reliably with AWS CodePipline
 
Observability
Observability Observability
Observability
 
Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018
Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018
Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018
 
Observability For Modern Applications
Observability For Modern ApplicationsObservability For Modern Applications
Observability For Modern Applications
 

Similar a Orquestando microservicios como lo hace Netflix

Creando y Orquestando APIs en MuleSoft
Creando y Orquestando APIs en MuleSoftCreando y Orquestando APIs en MuleSoft
Creando y Orquestando APIs en MuleSoft
Larry Magallanes
 
Arquitectura_de_microservicios.pdf
Arquitectura_de_microservicios.pdfArquitectura_de_microservicios.pdf
Arquitectura_de_microservicios.pdf
DavidMurillo97
 
Argentesting 2017_KeyNote_Federico Toledo - Keynote Cierre
Argentesting 2017_KeyNote_Federico Toledo - Keynote CierreArgentesting 2017_KeyNote_Federico Toledo - Keynote Cierre
Argentesting 2017_KeyNote_Federico Toledo - Keynote Cierre
Argentesting
 
Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...
Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...
Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...
Fernando Leandro
 
ESB y SOA, Plataforma de integracion.
ESB y SOA, Plataforma de integracion.ESB y SOA, Plataforma de integracion.
ESB y SOA, Plataforma de integracion.
Julio Cejas
 
Que es un workflow
Que es un workflowQue es un workflow
Que es un workflow
Roberto Rojas
 
Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...
Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...
Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...
jorgelebrato
 
Guia para el diseño modular de sistemas
Guia para el diseño modular de sistemasGuia para el diseño modular de sistemas
Guia para el diseño modular de sistemas
Oscar Centeno
 
Sistema de Monitoreo Nagios Core
Sistema de Monitoreo Nagios CoreSistema de Monitoreo Nagios Core
Sistema de Monitoreo Nagios Core
Yeider Fernandez
 
02 webinar gestion_expedientes_v0.6.1-intix
02 webinar gestion_expedientes_v0.6.1-intix02 webinar gestion_expedientes_v0.6.1-intix
02 webinar gestion_expedientes_v0.6.1-intixRoger CARHUATOCTO
 
Linkerd a fondo
Linkerd a fondoLinkerd a fondo
Linkerd a fondo
Paradigma Digital
 
Máquinas de estado con Logic App & Automate sobre CDS
Máquinas de estado con Logic App & Automate sobre CDSMáquinas de estado con Logic App & Automate sobre CDS
Máquinas de estado con Logic App & Automate sobre CDS
Demian Raschkovan
 
Optimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-MemoryOptimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-Memory
Gonzalo Chacaltana
 
Observabilidad: Todo lo que hay que ver
Observabilidad: Todo lo que hay que verObservabilidad: Todo lo que hay que ver
Observabilidad: Todo lo que hay que ver
Software Guru
 
Webinar oracle adf12c… descubre todo su potencial
Webinar oracle adf12c… descubre todo su potencialWebinar oracle adf12c… descubre todo su potencial
Webinar oracle adf12c… descubre todo su potencial
atSistemas
 
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas  de rendimiento de Aplicaciones WebPylot : Herramienta para pruebas  de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
Deisy Sapaico
 
SEVILLA Meetups23032023.pdf
SEVILLA Meetups23032023.pdfSEVILLA Meetups23032023.pdf
SEVILLA Meetups23032023.pdf
Francisco Javier Toscano Lopez
 
Programación Asíncrona en Node JS
Programación Asíncrona en Node JSProgramación Asíncrona en Node JS
Programación Asíncrona en Node JS
Javier Vélez Reyes
 
Devops meetup 21 de Junio 2017
Devops meetup 21 de Junio 2017Devops meetup 21 de Junio 2017
Devops meetup 21 de Junio 2017
Eduardo Diaz
 

Similar a Orquestando microservicios como lo hace Netflix (20)

Creando y Orquestando APIs en MuleSoft
Creando y Orquestando APIs en MuleSoftCreando y Orquestando APIs en MuleSoft
Creando y Orquestando APIs en MuleSoft
 
Arquitectura_de_microservicios.pdf
Arquitectura_de_microservicios.pdfArquitectura_de_microservicios.pdf
Arquitectura_de_microservicios.pdf
 
Argentesting 2017_KeyNote_Federico Toledo - Keynote Cierre
Argentesting 2017_KeyNote_Federico Toledo - Keynote CierreArgentesting 2017_KeyNote_Federico Toledo - Keynote Cierre
Argentesting 2017_KeyNote_Federico Toledo - Keynote Cierre
 
Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...
Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...
Tutorial Microsoft Power Automate: Automatización de flujos de trabajo para m...
 
ESB y SOA, Plataforma de integracion.
ESB y SOA, Plataforma de integracion.ESB y SOA, Plataforma de integracion.
ESB y SOA, Plataforma de integracion.
 
Que es un workflow
Que es un workflowQue es un workflow
Que es un workflow
 
Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...
Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...
Meetup Madrid 6 Marzo 2024 - MuleSoft en el mundo real: ejemplos de casos de ...
 
Guia para el diseño modular de sistemas
Guia para el diseño modular de sistemasGuia para el diseño modular de sistemas
Guia para el diseño modular de sistemas
 
Exposicion nagios core
Exposicion nagios coreExposicion nagios core
Exposicion nagios core
 
Sistema de Monitoreo Nagios Core
Sistema de Monitoreo Nagios CoreSistema de Monitoreo Nagios Core
Sistema de Monitoreo Nagios Core
 
02 webinar gestion_expedientes_v0.6.1-intix
02 webinar gestion_expedientes_v0.6.1-intix02 webinar gestion_expedientes_v0.6.1-intix
02 webinar gestion_expedientes_v0.6.1-intix
 
Linkerd a fondo
Linkerd a fondoLinkerd a fondo
Linkerd a fondo
 
Máquinas de estado con Logic App & Automate sobre CDS
Máquinas de estado con Logic App & Automate sobre CDSMáquinas de estado con Logic App & Automate sobre CDS
Máquinas de estado con Logic App & Automate sobre CDS
 
Optimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-MemoryOptimización de aplicaciones web con base de datos NoSQL In-Memory
Optimización de aplicaciones web con base de datos NoSQL In-Memory
 
Observabilidad: Todo lo que hay que ver
Observabilidad: Todo lo que hay que verObservabilidad: Todo lo que hay que ver
Observabilidad: Todo lo que hay que ver
 
Webinar oracle adf12c… descubre todo su potencial
Webinar oracle adf12c… descubre todo su potencialWebinar oracle adf12c… descubre todo su potencial
Webinar oracle adf12c… descubre todo su potencial
 
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas  de rendimiento de Aplicaciones WebPylot : Herramienta para pruebas  de rendimiento de Aplicaciones Web
Pylot : Herramienta para pruebas de rendimiento de Aplicaciones Web
 
SEVILLA Meetups23032023.pdf
SEVILLA Meetups23032023.pdfSEVILLA Meetups23032023.pdf
SEVILLA Meetups23032023.pdf
 
Programación Asíncrona en Node JS
Programación Asíncrona en Node JSProgramación Asíncrona en Node JS
Programación Asíncrona en Node JS
 
Devops meetup 21 de Junio 2017
Devops meetup 21 de Junio 2017Devops meetup 21 de Junio 2017
Devops meetup 21 de Junio 2017
 

Más de Paradigma Digital

Ddd + ah + microservicios
Ddd + ah + microserviciosDdd + ah + microservicios
Ddd + ah + microservicios
Paradigma Digital
 
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Paradigma Digital
 
Have you met Istio?
Have you met Istio?Have you met Istio?
Have you met Istio?
Paradigma Digital
 
Horneando apis
Horneando apisHorneando apis
Horneando apis
Paradigma Digital
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the future
Paradigma Digital
 
Programación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFluxProgramación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFlux
Paradigma Digital
 
Meetup microservicios: API Management
Meetup microservicios: API ManagementMeetup microservicios: API Management
Meetup microservicios: API Management
Paradigma Digital
 
Meetup de kubernetes, conceptos básicos.
Meetup  de kubernetes, conceptos básicos.Meetup  de kubernetes, conceptos básicos.
Meetup de kubernetes, conceptos básicos.
Paradigma Digital
 
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptxDocker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Paradigma Digital
 
Implementando microservicios
Implementando microserviciosImplementando microservicios
Implementando microservicios
Paradigma Digital
 
Equipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalEquipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma Digital
Paradigma Digital
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
Paradigma Digital
 
Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
Paradigma Digital
 
Cómo usar google analytics
Cómo usar google analyticsCómo usar google analytics
Cómo usar google analytics
Paradigma Digital
 
Transformación Digital
Transformación DigitalTransformación Digital
Transformación Digital
Paradigma Digital
 
Manuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4octManuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4oct
Paradigma Digital
 
Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJava
Paradigma Digital
 
¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?
Paradigma Digital
 
Python y Flink
Python y FlinkPython y Flink
Python y Flink
Paradigma Digital
 
Kafka y python
Kafka y pythonKafka y python
Kafka y python
Paradigma Digital
 

Más de Paradigma Digital (20)

Ddd + ah + microservicios
Ddd + ah + microserviciosDdd + ah + microservicios
Ddd + ah + microservicios
 
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.
 
Have you met Istio?
Have you met Istio?Have you met Istio?
Have you met Istio?
 
Horneando apis
Horneando apisHorneando apis
Horneando apis
 
Java 8 time to join the future
Java 8  time to join the futureJava 8  time to join the future
Java 8 time to join the future
 
Programación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFluxProgramación Reactiva con Spring WebFlux
Programación Reactiva con Spring WebFlux
 
Meetup microservicios: API Management
Meetup microservicios: API ManagementMeetup microservicios: API Management
Meetup microservicios: API Management
 
Meetup de kubernetes, conceptos básicos.
Meetup  de kubernetes, conceptos básicos.Meetup  de kubernetes, conceptos básicos.
Meetup de kubernetes, conceptos básicos.
 
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptxDocker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
Docker, kubernetes, openshift y openstack, para mi abuela. techfest 2017.pptx
 
Implementando microservicios
Implementando microserviciosImplementando microservicios
Implementando microservicios
 
Equipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma DigitalEquipo de Marketing de Paradigma Digital
Equipo de Marketing de Paradigma Digital
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
 
Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
 
Cómo usar google analytics
Cómo usar google analyticsCómo usar google analytics
Cómo usar google analytics
 
Transformación Digital
Transformación DigitalTransformación Digital
Transformación Digital
 
Manuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4octManuel Hurtado. Couchbase paradigma4oct
Manuel Hurtado. Couchbase paradigma4oct
 
Programación Reactiva con RxJava
Programación Reactiva con RxJavaProgramación Reactiva con RxJava
Programación Reactiva con RxJava
 
¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?¿Cómo vencer a los dragones digitales?
¿Cómo vencer a los dragones digitales?
 
Python y Flink
Python y FlinkPython y Flink
Python y Flink
 
Kafka y python
Kafka y pythonKafka y python
Kafka y python
 

Último

PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
Federico Toledo
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
RobertSotilLujn
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
oscartorres960914
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
lasocharfuelan123
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
cuentauniversidad34
 

Último (10)

PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
 

Orquestando microservicios como lo hace Netflix

  • 1. Meetup Microservicios - Orquestando microservicios Orquestando microservicios como lo hace Netflix
  • 2. Meetup Microservicios - Orquestando microservicios Grupo de meetup Microservicios ¡ Bienvenidos !
  • 3. Meetup Microservicios - Orquestando microservicios BIO Borja Gómez Arquitecto Software@Paradigma Digital bgomez@paradigmadigital.com @borjagomez
  • 4. Meetup Microservicios - Orquestando microservicios Grupo de meetup Microservicios ‘Orquestando Microservicios como lo hace Netflix’
  • 5. Meetup Microservicios - Orquestando microservicios Objetivos de la sesión ● ¿Por qué orquestación de microservicios? ● Características orquestación ● Netflix Conductor ● Demo
  • 6. Meetup Microservicios - Orquestando microservicios ¿Por qué la orquestación? La primera aproximación es la de mediación. También son llamados servicios de segundo nivel, o microservicios de negocio. En algunos casos esta alternativa es buena. Pero cuando los tiempos o la complejidad aumentan, parece necesario tener una lógica más enfocada a los procesos.
  • 7. Meetup Microservicios - Orquestando microservicios ¿Por qué la orquestación? Los microservicios muchas veces no aportan valor por sí mismos. - ¿Qué me aporta funcionalmente insertar un registro en una tabla de auditoría? - ¿De qué me sirve tener codificado un video si no lo subo al catálogo? La problemática con microservicios es similar a la que vivimos con SOA: lo que aporta valor al negocio es la funcionalidad, y en multitud de ocasiones esta funcionalidad se implementa con un flujo de negocio, y no una llamada única.
  • 8. Meetup Microservicios - Orquestando microservicios ¿Por qué la orquestación? Consultar Cliente en BD Insertar en BD Clientes Insertar cuenta en BD Cuentas Creación Cuenta
  • 9. Editar el estilo de texto del patrón Orquestación VS Coreografía
  • 10. Meetup Microservicios - Orquestando microservicios Orquestación VS Coreografía La orquestación de microservicios implica tener una entidad central que gobierna el flujo de trabajo, decidiendo a qué servicios invocar y cuándo. La coreografía prescinde de esta entidad central, delegando en los microservicios el control del flujo.
  • 11. Meetup Microservicios - Orquestando microservicios Orquestación VS Coreografía Con la orquestación, es necesario una pieza central que lo gobierne. Entonces… Mejor la coreografía, ¿no? ¿Por qué hablamos de orquestación? LET ME THINK
  • 12. Meetup Microservicios - Orquestando microservicios Orquestación VS Coreografía Pese a que la orquestación necesita de un componente central, tiene ventajas: ● Los microservicios no tienen que conocer el proceso de negocio. ○ Cumplen el Principio de Responsabilidad Única. ● Tenemos una pieza central a la que podemos preguntar por el estado de los procesos, estadísticas, etc. ● Permite la migración de versiones de procesos comenzados. La coreografía por su parte tiene las siguientes desventajas: ● Es complicado escalar en funcionalidad. Cualquier cambio en un servicio impacta al flujo completo. ● Es muy complejo conocer el estado de los procesos. ● Los microservicios deben conocer el proceso, y por lo tanto tienen una complejidad mayor.
  • 13. Editar el estilo de texto del patrón Netflix Conductor
  • 14. Meetup Microservicios - Orquestando microservicios Netflix Conductor ¿Qué es? Un orquestador de flujos que corre en entornos cloud y que permite implementar cada una de las tareas mediante el uso de microservicios. El reto de Netflix era crear un producto que permitiese orquestar los flujos manteniendo las ventajas de usar un sistema basado en microservicios.
  • 15. Meetup Microservicios - Orquestando microservicios Netflix Conductor: Arquitectura de la Solución
  • 16. Meetup Microservicios - Orquestando microservicios Netflix Conductor: Tareas ● Tareas de Sistema 1. Fork: crea una bifurcación en paralelo. 2. Fork_join_dynamic: realiza la paralelización en función de la expresión de entrada. 3. Join: hace un join de un flujo previamente bifurcado. 4. Decide: condicional, de forma similar a un “case switch”. 5. Sub_workflow: arranca un flujo como una tarea. El flujo queda pausado hasta que el subflujo termina. 6. Wait: introduce un punto de parada asíncrono en el flujo. Se mantiene en estado in_progress hasta que se actualiza con estado completed o failed. 7. HTTP: ejecuta la llamada a un microservicio a través de HTTP. Dicha invocación se regirá por la política de reintentos declarada al definir la tarea. 8. Eventos: pueden arrancar una instancia de un flujo, y marcar una tarea como fallida o completada. ● Tareas simples: implementadas en el worker. Son las tareas enfocadas al negocio en sí. Las tareas se comunican con Conductor mediante un sistema de polling para recuperar tareas programadas del tipo configurado, y la devuelven actualizada. En ese momento es cuando Conductor continúa el flujo a partir de la tarea actualizada.
  • 17. Meetup Microservicios - Orquestando microservicios Netflix Conductor: Tareas
  • 18. Meetup Microservicios - Orquestando microservicios Netflix Conductor: Editor de Flujos Una de las ventajas de Conductor es que huye de notaciones complejas, apostando por la simplicidad de JSON. Los flujos se definen como una sucesión de tareas y eventos, que se definen en base a unos parámetros: - Nombre: nombre de la tarea. - Tipo de Tarea: tipo formal de la tarea. - Recuento: - Numero máximo de intentos. - Tipo de Reintento. Fijo cada x segundos o exponencial en función del número de reintentos. - Timeout. Fijado en - Política de timeout: reintentar, marcar flujo como timed_out o simplemente informar. - Parámetros de entrada salida. Todo esto, se ve muy fácilmente en un visor de flujos incorporado en la herramienta. JSONPath
  • 19. Meetup Microservicios - Orquestando microservicios Netflix Conductor: Contexto de Datos Conductor permite el intercambio de información entre los compomentes del flujo. Tiene dos contextos: workflow y task.. El binding de los datos se realizará mediante el uso de JSONPath, que implementa la mayoría de funcionalidad de XPath para JSON. ${SOURCE.input.phoneNumbers[:1].number} Y todos los que hemos trabajado con XPath… Sabemos que con XPath puedes hacer (casi) cualquier cosa. JSONPath
  • 20. Meetup Microservicios - Orquestando microservicios Netflix Conductor: Contexto de Ejecución
  • 21. Meetup Microservicios - Orquestando microservicios Netflix Conductor: Monitorización Conductor usa Spectator para la recolección me métricas de uso. Destacan las siguientes métricas: 1. workflow_server_error: Porcentaje de errores en servidor 2. workflow_failure: Contador para flujos que han fallado 3. workflow_start_error: Contador de errores al arrancar un flujo 4. workflow_running: Contador de flujos en estado “running” 5. task_queue_wait: Tiempo que lleva una tarea en la cola 6. task_execution: Tiempo que ha tardado en completarse la tarea 7. task_poll : Tiempo que ha tardado la tarea en ser asignada 8. task_queue_depth: Tareas en espera de asignación 9. task_timeout: Contador de tareas que han caído en time-out.
  • 22. Meetup Microservicios - Orquestando microservicios Netflix Conductor: Configuración Una de las ventajas de conductor frente a otros orquestadores es la fuerte modularización. Casi todas las capas son pluggables, de forma que podemos cambiar el producto que usamos e incluso la implementación. Para ello es necesario implementar las siguientes interfaces para cada backend. //Store for workflow and task definitions com.netflix.conductor.dao.MetadataDAO //Store for workflow executions com.netflix.conductor.dao.ExecutionDAO //Index for workflow executions com.netflix.conductor.dao.IndexDAO //Queue provider for tasks com.netflix.conductor.dao.QueueDAO
  • 23. Meetup Microservicios - Orquestando microservicios Netflix Conductor: Configuración Para realizar la configuración, contamos con un fichero de configuración:
  • 24. Meetup Microservicios - Orquestando microservicios Demo Demo
  • 25. Meetup Microservicios - Orquestando microservicios Demo: por si hay efecto demo
  • 26. Meetup Microservicios - Orquestando microservicios Nuestra Experiencia
  • 27. Editar el estilo de texto del patrón Mutua Madrileña. Definición Arquitectura de Aplicaciones Orquestación de Procesos vs Orquestación de Servicios Condiciones del Servicio / Entendimiento y enfoque de requisitos / Arquitectura Final/ Orquestación Orquestación de Procesos (BPM) Orquestación de Servicios Control de estado Sin estado Larga duración Duración generalmente corta (no necesariamente) Alta interacción con usuario (formularios, tareas manuales) Sin interacción con usuario. UI para creación de flujos. Fácilmente entendible por negocio Generalmente carecen de IDE. Exigen más conocimiento técnico. Muy completo: timers, events, tasks, relanzamiento, fault… Menor funcionalidad Puede convertirse en un punto crítico del sistema Alto rendimiento. Perfecto encaje en modelo de microservicios Ofrece mecanismos de compensación Es necesario implementar los mecanismos de compensación