SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Netflix Conductor
A Microservices Orchestrator
Viren Baraiya, Vikram Singh
Content Platform Engineering - CPE
〉 Studio In the Cloud
〉 Content Ingest from Studio Partners
〉 Title Setup - Making it live on Netflix.com
〉 Localization
CPE - Processes (some of many)
〉 Content Ingest & Delivery
〉 Title Setup
〉 IMF*
Deliveries
〉 Encodes and Deployments
〉 Content Quality Control
〉 Content Localization
* IMF - Interoperable Master Format
Once Upon A Time ...
〉 Peer to Peer Messaging
〉 10’s MM messages per day
〉 Process flows embedded in applications
〉 Lack of control (STOP deployment!)
〉 Lack of visibility into progress
Example
Peer to Peer
Application C Application BApplication BApplication A
Request Content Content Inspection Result Encode Publish
Events / API calls Events / API calls Events / API calls
Peer to Peer
Application C Application BApplication BApplication A
Request Content Content Inspection Result Encode Publish
Events / API calls Events / API calls Events / API calls
〉 Logical flow is not easily trackable
〉 Modifying steps is not easy (tightly coupled)
〉 Controlling flow is not possible
〉 Reusing tasks is not trivial
〉 Orchestration Engine
〉 Orchestration Engine
〉 Open Source (Apache 2.0)
Conductor - Design Goals
〉 BYO Task (Reuse existing code)
〉 REST/HTTP support
〉 Extensible and Hackable
〉 JSON based DSL to define blueprint
〉 Scale Out Horizontally
〉 Visibility, Traceability & Control
Same Flow - New Flavor
Request
Content
Content
Inspection
Result Encode PublishStart
Stop
Conductor
Application A
Task
Request
Content
Application B
Task
Content
Inspection
Application C
Task
Encode
Application B
Task
Publish
OrchestrationExecution
Architecture
API
Workflows Metadata Tasks
SERVICE
Workflow Service Task Service
Decider Service Queue Service
STORE
Storage (Dynomite)
Start and manage
workflows
Define blueprints
and tasks
Gets tasks from
queue and execute
Index (Elasticsearch)
Scaling up Conductor
〉 Peer-to-Peer - Scale horizontally
〉 Stateless server - state is persisted in database
〉 Storage scalability : Dynomite
〉 Workload scale: Dyno-Queues
Storage
Dynomite
〉 Generic Dynamo implementation (Redis, Memcache)
〉 Multi-datacenter
〉 Highly available
〉 Peer-to-Peer
Elasticsearch
〉 Indexing workflow and task executions
〉 Verbose logging of worker executions
Dyno-Queues
〉 Distributed lock free queues used by Conductor
〉 OSS
〉 Apache 2.0 License
〉 https://github.com/Netflix/dyno-queues
〉 Delayed Queues
〉 Loose priorities and FIFO
Task
〉 Reusable stateless components
〉 System Tasks (Fork / Join, Decision, etc.)
〉 Remote Workers (Java, Python, lang. agnostic)
Concepts
Concepts
Task
〉 Reusable stateless components
〉 System Tasks (Fork / Join, Decision, etc.)
〉 Remote Workers (Java, Python, lang. agnostic)
Workflow
〉 Sequence of tasks and
〉 Control structure
〉 Input / Output
Tasks Definition
〉 Retries
〉 Timeouts
〉 Documentation for Input / Output
〉 Registry
Task Definition - Example
{
"name": "encode_task",
"retryCount": 2,
"timeoutSeconds": 3600,
"inputKeys": [
"fileLocation",
"encodeRecipie",
"outputLocation"
],
"timeoutPolicy": "TIME_OUT_WF",
"retryLogic": "FIXED",
"retryDelaySeconds": 60,
"responseTimeoutSeconds": 3600
}
Workflow Definition
〉 Logical Flow of Tasks
〉 Error / Failure Handling
〉 Input / Output transformation
〉 JSONPath Based
〉 Versioning
〉 Registry
Workflow - Example
{
"name": "encode_and_deploy",
"description": "Encodes a file and deploys to CDN",
"version": 1,
"tasks": [
{
"name": "encode",
"taskReferenceName": "encode",
"type": "SIMPLE",
"inputParameters": { "fileLocation": "${workflow.input.fileLocation}"}
},
{
"name": "deploy",
"taskReferenceName": "d1",
"type": "SIMPLE",
"inputParameters": { "fileLocation": "${encode.output.encodeLocation}"}
}
],
"outputParameters": {
"cdn_url": "${d1.output.location}"
}
}
Input / Output
〉 Input to tasks are transformed
〉 Refer Input / Outputs from
〉 Task
〉 Workflow
〉 Complex JSON transformations using JSONPath
Example
{
"inputParameters": {
"movieId": "${workflow.input.movieId}",
"url": "${workflow.input.fileLocation}",
"lang": "${loc_task.output.languages[0]}",
"http_request": {
"method": "POST",
"url": "http://example.com/${loc_task.output.fileId}/encode",
"body": {
"recipe": "${workflow.input.recipe}",
"params": {
"width": 100,
"height": 100
}
}
}
}
}
Example
{
"inputParameters": {
"movieId": "${workflow.input.movieId}",
"url": "${workflow.input.fileLocation}",
"lang": "${loc_task.output.languages[0]}",
"http_request": {
"method": "POST",
"url": "http://example.com/${loc_task.output.fileId}/encode",
"body": {
"recipe": "${workflow.input.recipe}",
"params": {
"width": 100,
"height": 100
}
}
}
}
}
Get movieId from workflow Input
Example
{
"inputParameters": {
"movieId": "${workflow.input.movieId}",
"url": "${workflow.input.fileLocation}",
"lang": "${loc_task.output.languages[0]}",
"http_request": {
"method": "POST",
"url": "http://example.com/${loc_task.output.fileId}/encode",
"body": {
"recipe": "${workflow.input.recipe}",
"params": {
"width": 100,
"height": 100
}
}
}
}
}
Get movieId from workflow Input
JSONPath Expressions
Execution Flow
Putting It All Together
Execution Flow
App A
Conductor
App A
Task
Request
Content
Task
Content
Inspection
App C
Task
Encode
App B
Task
Publish
Workflow / Task Service Decider/Queue Service
1. Start content_ingest
workflow
Storage
Task Queues
App B
Execution Flow
App A
Conductor
App A
Task
Request
Content
Task
Content
Inspection
App C
Task
Encode
App B
Task
Publish
Workflow / Task Service Decider/Queue Service
1. Start content_ingest
workflow
2. Get Workflow Definition
Storage
Task Queues
App B
Execution Flow
App A
Conductor
App A
Task
Request
Content
Task
Content
Inspection
App C
Task
Encode
App B
Task
Publish
Workflow / Task Service Decider/Queue Service
1. Start content_ingest
workflow
2. Get Workflow Definition
3. Schedule Task
Storage
Task Queues
App B
Execution Flow
App A
Conductor
App A
Task
Request
Content
Task
Content
Inspection
App C
Task
Encode
App B
Task
Publish
Workflow / Task Service Decider/Queue Service
1. Start content_ingest
workflow
2. Get Workflow Definition
3. Schedule Task
4. Put in Queue
Storage
Task Queues
App B
Execution Flow
App A
Conductor
App A
Task
Request
Content
Task
Content
Inspection
App C
Task
Encode
App B
Task
Publish
Workflow / Task Service Decider/Queue Service
1. Start content_ingest
workflow
2. Get Workflow Definition
3. Schedule Task
4. Put in Queue
5. Poll For task
Storage
Task Queues
App B
Execution Flow
App A
Conductor
App A
Task
Request
Content
Task
Content
Inspection
App C
Task
Encode
App B
Task
Publish
Workflow / Task Service Decider/Queue Service
1. Start content_ingest
workflow
2. Get Workflow Definition
3. Schedule Task
4. Put in Queue
5. Poll For task
6. Execute &
update task status
Storage
Task Queues
App B
Workers
Worker 1
Worker 2
Worker 3
Worker n
...
Management/
Execution Service
Task Queues
Orchestrator
Trigger
Schedule
Task
HTTP
Database
Index
HTTP
Update Task Status
Queue Poll
Features
〉 Conditional (If...Then...Else)
〉 Fork / Join
〉 Dynamic Tasks and Forks
〉 Sub Workflow
〉 Wait
〉 Versioning
〉 HTTP/Service Calls
〉 Input / Output Transformation (JSONPath based)
Blueprint Features
Runtime
〉 Pause | Resume
〉 Skip Tasks, Restart
〉 Error / Failure Handling
〉 UI
〉 Manage definitions
〉 Search Executions by Payload
〉 Visualize flows
〉 Metrics, Metrics, Metrics…
Conductor @ Netflix
〉 In production > 1 year
〉 ~100 Process Flows
〉 ~200 Tasks / Services
〉 Avg. Tasks per workflow: 6
〉 Largest : 48 Tasks
〉 ~4 MM Executions
Roadmap - 2017
〉 Eventing
〉 SQS and SNS
〉 Dyno-Queues
〉 Task Execution Log
〉 Unit Testing Framework
〉 Python Client
〉 Feature Stacks
Questions?
Feedback / Issues / Questions
〉 https://github.com/Netflix/conductor
〉 https://github.com/Netflix/dyno-queues
Contacts
〉 Viren Baraiya <vbaraiya@netflix.com>
〉 Vikram Singh <visingh@netflix.com>
〉 Prosenjit Bhattacharyya <pbhattacharyya@netflix.com>
Thank You

Weitere ähnliche Inhalte

Was ist angesagt?

DevOps and Continuous Delivery Reference Architectures - Volume 2
DevOps and Continuous Delivery Reference Architectures - Volume 2DevOps and Continuous Delivery Reference Architectures - Volume 2
DevOps and Continuous Delivery Reference Architectures - Volume 2Sonatype
 
Cloudera - The Modern Platform for Analytics
Cloudera - The Modern Platform for AnalyticsCloudera - The Modern Platform for Analytics
Cloudera - The Modern Platform for AnalyticsCloudera, Inc.
 
Introduction to DevOps | Edureka
Introduction to DevOps | EdurekaIntroduction to DevOps | Edureka
Introduction to DevOps | EdurekaEdureka!
 
Netflix: From Zero to Production-Ready in Minutes (QCon 2017)
Netflix: From Zero to Production-Ready in Minutes (QCon 2017)Netflix: From Zero to Production-Ready in Minutes (QCon 2017)
Netflix: From Zero to Production-Ready in Minutes (QCon 2017)Tim Bozarth
 
DevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation SlidesDevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation SlidesSlideTeam
 
Mainframe Modernization with AWS: Patterns and Best Practices
Mainframe Modernization with AWS: Patterns and Best PracticesMainframe Modernization with AWS: Patterns and Best Practices
Mainframe Modernization with AWS: Patterns and Best PracticesAmazon Web Services
 
How to build an ETL pipeline with Apache Beam on Google Cloud Dataflow
How to build an ETL pipeline with Apache Beam on Google Cloud DataflowHow to build an ETL pipeline with Apache Beam on Google Cloud Dataflow
How to build an ETL pipeline with Apache Beam on Google Cloud DataflowLucas Arruda
 
Performance optimization for Android
Performance optimization for AndroidPerformance optimization for Android
Performance optimization for AndroidArslan Anwar
 
Visula C# Programming Lecture 1
Visula C# Programming Lecture 1Visula C# Programming Lecture 1
Visula C# Programming Lecture 1Abou Bakr Ashraf
 
Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...Bilgin Ibryam
 
Space Camp - API Contract Testing
Space Camp - API Contract TestingSpace Camp - API Contract Testing
Space Camp - API Contract TestingPostman
 
Devops Devops Devops, at Froscon
Devops Devops Devops, at FrosconDevops Devops Devops, at Froscon
Devops Devops Devops, at FrosconKris Buytaert
 
Real World Event Sourcing and CQRS
Real World Event Sourcing and CQRSReal World Event Sourcing and CQRS
Real World Event Sourcing and CQRSMatthew Hawkins
 
Flexible, hybrid API-led software architectures with Kong
Flexible, hybrid API-led software architectures with KongFlexible, hybrid API-led software architectures with Kong
Flexible, hybrid API-led software architectures with KongSven Bernhardt
 

Was ist angesagt? (20)

What is java?
What is java? What is java?
What is java?
 
DevOps and Continuous Delivery Reference Architectures - Volume 2
DevOps and Continuous Delivery Reference Architectures - Volume 2DevOps and Continuous Delivery Reference Architectures - Volume 2
DevOps and Continuous Delivery Reference Architectures - Volume 2
 
Cloudera - The Modern Platform for Analytics
Cloudera - The Modern Platform for AnalyticsCloudera - The Modern Platform for Analytics
Cloudera - The Modern Platform for Analytics
 
Introduction to DevOps | Edureka
Introduction to DevOps | EdurekaIntroduction to DevOps | Edureka
Introduction to DevOps | Edureka
 
Netflix: From Zero to Production-Ready in Minutes (QCon 2017)
Netflix: From Zero to Production-Ready in Minutes (QCon 2017)Netflix: From Zero to Production-Ready in Minutes (QCon 2017)
Netflix: From Zero to Production-Ready in Minutes (QCon 2017)
 
DevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation SlidesDevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation Slides
 
Mainframe Modernization with AWS: Patterns and Best Practices
Mainframe Modernization with AWS: Patterns and Best PracticesMainframe Modernization with AWS: Patterns and Best Practices
Mainframe Modernization with AWS: Patterns and Best Practices
 
DevOps Foundation
DevOps FoundationDevOps Foundation
DevOps Foundation
 
Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CD
 
App Modernization
App ModernizationApp Modernization
App Modernization
 
How to build an ETL pipeline with Apache Beam on Google Cloud Dataflow
How to build an ETL pipeline with Apache Beam on Google Cloud DataflowHow to build an ETL pipeline with Apache Beam on Google Cloud Dataflow
How to build an ETL pipeline with Apache Beam on Google Cloud Dataflow
 
Performance optimization for Android
Performance optimization for AndroidPerformance optimization for Android
Performance optimization for Android
 
Visula C# Programming Lecture 1
Visula C# Programming Lecture 1Visula C# Programming Lecture 1
Visula C# Programming Lecture 1
 
Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...Application modernization patterns with apache kafka, debezium, and kubernete...
Application modernization patterns with apache kafka, debezium, and kubernete...
 
Zuul @ Netflix SpringOne Platform
Zuul @ Netflix SpringOne PlatformZuul @ Netflix SpringOne Platform
Zuul @ Netflix SpringOne Platform
 
Space Camp - API Contract Testing
Space Camp - API Contract TestingSpace Camp - API Contract Testing
Space Camp - API Contract Testing
 
Devops Devops Devops, at Froscon
Devops Devops Devops, at FrosconDevops Devops Devops, at Froscon
Devops Devops Devops, at Froscon
 
Real World Event Sourcing and CQRS
Real World Event Sourcing and CQRSReal World Event Sourcing and CQRS
Real World Event Sourcing and CQRS
 
DevOps
DevOpsDevOps
DevOps
 
Flexible, hybrid API-led software architectures with Kong
Flexible, hybrid API-led software architectures with KongFlexible, hybrid API-led software architectures with Kong
Flexible, hybrid API-led software architectures with Kong
 

Ähnlich wie Netflix conductor

Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)CIVEL Benoit
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1CIVEL Benoit
 
Anatomy of a Build Pipeline
Anatomy of a Build PipelineAnatomy of a Build Pipeline
Anatomy of a Build PipelineSamuel Brown
 
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel PartnersCraeg Strong
 
PAC 2019 virtual Bruno Audoux
PAC 2019 virtual Bruno Audoux PAC 2019 virtual Bruno Audoux
PAC 2019 virtual Bruno Audoux Neotys
 
Back to the Future: Containerize Legacy Applications
Back to the Future: Containerize Legacy ApplicationsBack to the Future: Containerize Legacy Applications
Back to the Future: Containerize Legacy ApplicationsDocker, Inc.
 
Release with confidence
Release with confidenceRelease with confidence
Release with confidenceJohn Congdon
 
AWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for DevelopersAWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for DevelopersAmazon Web Services
 
AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...
AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...
AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...Amazon Web Services
 
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel PartnersCraeg Strong
 
Structured Functional Automated Web Service Testing
Structured Functional Automated Web Service TestingStructured Functional Automated Web Service Testing
Structured Functional Automated Web Service Testingrdekleijn
 
BinProxy: New Paradigm of Binary Analysis With Your Favorite Web Proxy
BinProxy: New Paradigm of Binary Analysis With Your Favorite Web ProxyBinProxy: New Paradigm of Binary Analysis With Your Favorite Web Proxy
BinProxy: New Paradigm of Binary Analysis With Your Favorite Web ProxyDONGJOO HA
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014Hojoong Kim
 
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with SpinnakerSpinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with SpinnakerAndrew Phillips
 
Android rest client applications-services approach @Droidcon Bucharest 2012
Android rest client applications-services approach @Droidcon Bucharest 2012Android rest client applications-services approach @Droidcon Bucharest 2012
Android rest client applications-services approach @Droidcon Bucharest 2012Droidcon Eastern Europe
 
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...Craeg Strong
 
Google Cloud Next '22 Recap: Serverless & Data edition
Google Cloud Next '22 Recap: Serverless & Data editionGoogle Cloud Next '22 Recap: Serverless & Data edition
Google Cloud Next '22 Recap: Serverless & Data editionDaniel Zivkovic
 
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache TomcatCase Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache TomcatVMware Hyperic
 

Ähnlich wie Netflix conductor (20)

Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
 
Anatomy of a Build Pipeline
Anatomy of a Build PipelineAnatomy of a Build Pipeline
Anatomy of a Build Pipeline
 
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
 
PAC 2019 virtual Bruno Audoux
PAC 2019 virtual Bruno Audoux PAC 2019 virtual Bruno Audoux
PAC 2019 virtual Bruno Audoux
 
Back to the Future: Containerize Legacy Applications
Back to the Future: Containerize Legacy ApplicationsBack to the Future: Containerize Legacy Applications
Back to the Future: Containerize Legacy Applications
 
Release with confidence
Release with confidenceRelease with confidence
Release with confidence
 
AWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for DevelopersAWS Summit Auckland - Application Delivery Patterns for Developers
AWS Summit Auckland - Application Delivery Patterns for Developers
 
AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...
AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...
AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...
 
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211202 NADOG Adapting to Covid with Serverless Craeg Strong Ariel Partners
 
Structured Functional Automated Web Service Testing
Structured Functional Automated Web Service TestingStructured Functional Automated Web Service Testing
Structured Functional Automated Web Service Testing
 
MidSem
MidSemMidSem
MidSem
 
BinProxy: New Paradigm of Binary Analysis With Your Favorite Web Proxy
BinProxy: New Paradigm of Binary Analysis With Your Favorite Web ProxyBinProxy: New Paradigm of Binary Analysis With Your Favorite Web Proxy
BinProxy: New Paradigm of Binary Analysis With Your Favorite Web Proxy
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
 
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with SpinnakerSpinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
Spinnaker Summit 2018: CI/CD Patterns for Kubernetes with Spinnaker
 
Android rest client applications-services approach @Droidcon Bucharest 2012
Android rest client applications-services approach @Droidcon Bucharest 2012Android rest client applications-services approach @Droidcon Bucharest 2012
Android rest client applications-services approach @Droidcon Bucharest 2012
 
56k.cloud training
56k.cloud training56k.cloud training
56k.cloud training
 
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
20211202 North America DevOps Group NADOG Adapting to Covid With Serverless C...
 
Google Cloud Next '22 Recap: Serverless & Data edition
Google Cloud Next '22 Recap: Serverless & Data editionGoogle Cloud Next '22 Recap: Serverless & Data edition
Google Cloud Next '22 Recap: Serverless & Data edition
 
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache TomcatCase Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
 

Kürzlich hochgeladen

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 

Kürzlich hochgeladen (20)

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 

Netflix conductor

  • 1. Netflix Conductor A Microservices Orchestrator Viren Baraiya, Vikram Singh
  • 2. Content Platform Engineering - CPE 〉 Studio In the Cloud 〉 Content Ingest from Studio Partners 〉 Title Setup - Making it live on Netflix.com 〉 Localization
  • 3. CPE - Processes (some of many) 〉 Content Ingest & Delivery 〉 Title Setup 〉 IMF* Deliveries 〉 Encodes and Deployments 〉 Content Quality Control 〉 Content Localization * IMF - Interoperable Master Format
  • 4. Once Upon A Time ... 〉 Peer to Peer Messaging 〉 10’s MM messages per day 〉 Process flows embedded in applications 〉 Lack of control (STOP deployment!) 〉 Lack of visibility into progress
  • 6. Peer to Peer Application C Application BApplication BApplication A Request Content Content Inspection Result Encode Publish Events / API calls Events / API calls Events / API calls
  • 7. Peer to Peer Application C Application BApplication BApplication A Request Content Content Inspection Result Encode Publish Events / API calls Events / API calls Events / API calls 〉 Logical flow is not easily trackable 〉 Modifying steps is not easy (tightly coupled) 〉 Controlling flow is not possible 〉 Reusing tasks is not trivial
  • 8.
  • 10. 〉 Orchestration Engine 〉 Open Source (Apache 2.0)
  • 11. Conductor - Design Goals 〉 BYO Task (Reuse existing code) 〉 REST/HTTP support 〉 Extensible and Hackable 〉 JSON based DSL to define blueprint 〉 Scale Out Horizontally 〉 Visibility, Traceability & Control
  • 12. Same Flow - New Flavor Request Content Content Inspection Result Encode PublishStart Stop Conductor Application A Task Request Content Application B Task Content Inspection Application C Task Encode Application B Task Publish OrchestrationExecution
  • 13. Architecture API Workflows Metadata Tasks SERVICE Workflow Service Task Service Decider Service Queue Service STORE Storage (Dynomite) Start and manage workflows Define blueprints and tasks Gets tasks from queue and execute Index (Elasticsearch)
  • 14. Scaling up Conductor 〉 Peer-to-Peer - Scale horizontally 〉 Stateless server - state is persisted in database 〉 Storage scalability : Dynomite 〉 Workload scale: Dyno-Queues
  • 15. Storage Dynomite 〉 Generic Dynamo implementation (Redis, Memcache) 〉 Multi-datacenter 〉 Highly available 〉 Peer-to-Peer Elasticsearch 〉 Indexing workflow and task executions 〉 Verbose logging of worker executions
  • 16. Dyno-Queues 〉 Distributed lock free queues used by Conductor 〉 OSS 〉 Apache 2.0 License 〉 https://github.com/Netflix/dyno-queues 〉 Delayed Queues 〉 Loose priorities and FIFO
  • 17. Task 〉 Reusable stateless components 〉 System Tasks (Fork / Join, Decision, etc.) 〉 Remote Workers (Java, Python, lang. agnostic) Concepts
  • 18. Concepts Task 〉 Reusable stateless components 〉 System Tasks (Fork / Join, Decision, etc.) 〉 Remote Workers (Java, Python, lang. agnostic) Workflow 〉 Sequence of tasks and 〉 Control structure 〉 Input / Output
  • 19. Tasks Definition 〉 Retries 〉 Timeouts 〉 Documentation for Input / Output 〉 Registry
  • 20. Task Definition - Example { "name": "encode_task", "retryCount": 2, "timeoutSeconds": 3600, "inputKeys": [ "fileLocation", "encodeRecipie", "outputLocation" ], "timeoutPolicy": "TIME_OUT_WF", "retryLogic": "FIXED", "retryDelaySeconds": 60, "responseTimeoutSeconds": 3600 }
  • 21. Workflow Definition 〉 Logical Flow of Tasks 〉 Error / Failure Handling 〉 Input / Output transformation 〉 JSONPath Based 〉 Versioning 〉 Registry
  • 22. Workflow - Example { "name": "encode_and_deploy", "description": "Encodes a file and deploys to CDN", "version": 1, "tasks": [ { "name": "encode", "taskReferenceName": "encode", "type": "SIMPLE", "inputParameters": { "fileLocation": "${workflow.input.fileLocation}"} }, { "name": "deploy", "taskReferenceName": "d1", "type": "SIMPLE", "inputParameters": { "fileLocation": "${encode.output.encodeLocation}"} } ], "outputParameters": { "cdn_url": "${d1.output.location}" } }
  • 23. Input / Output 〉 Input to tasks are transformed 〉 Refer Input / Outputs from 〉 Task 〉 Workflow 〉 Complex JSON transformations using JSONPath
  • 24. Example { "inputParameters": { "movieId": "${workflow.input.movieId}", "url": "${workflow.input.fileLocation}", "lang": "${loc_task.output.languages[0]}", "http_request": { "method": "POST", "url": "http://example.com/${loc_task.output.fileId}/encode", "body": { "recipe": "${workflow.input.recipe}", "params": { "width": 100, "height": 100 } } } } }
  • 25. Example { "inputParameters": { "movieId": "${workflow.input.movieId}", "url": "${workflow.input.fileLocation}", "lang": "${loc_task.output.languages[0]}", "http_request": { "method": "POST", "url": "http://example.com/${loc_task.output.fileId}/encode", "body": { "recipe": "${workflow.input.recipe}", "params": { "width": 100, "height": 100 } } } } } Get movieId from workflow Input
  • 26. Example { "inputParameters": { "movieId": "${workflow.input.movieId}", "url": "${workflow.input.fileLocation}", "lang": "${loc_task.output.languages[0]}", "http_request": { "method": "POST", "url": "http://example.com/${loc_task.output.fileId}/encode", "body": { "recipe": "${workflow.input.recipe}", "params": { "width": 100, "height": 100 } } } } } Get movieId from workflow Input JSONPath Expressions
  • 28. Execution Flow App A Conductor App A Task Request Content Task Content Inspection App C Task Encode App B Task Publish Workflow / Task Service Decider/Queue Service 1. Start content_ingest workflow Storage Task Queues App B
  • 29. Execution Flow App A Conductor App A Task Request Content Task Content Inspection App C Task Encode App B Task Publish Workflow / Task Service Decider/Queue Service 1. Start content_ingest workflow 2. Get Workflow Definition Storage Task Queues App B
  • 30. Execution Flow App A Conductor App A Task Request Content Task Content Inspection App C Task Encode App B Task Publish Workflow / Task Service Decider/Queue Service 1. Start content_ingest workflow 2. Get Workflow Definition 3. Schedule Task Storage Task Queues App B
  • 31. Execution Flow App A Conductor App A Task Request Content Task Content Inspection App C Task Encode App B Task Publish Workflow / Task Service Decider/Queue Service 1. Start content_ingest workflow 2. Get Workflow Definition 3. Schedule Task 4. Put in Queue Storage Task Queues App B
  • 32. Execution Flow App A Conductor App A Task Request Content Task Content Inspection App C Task Encode App B Task Publish Workflow / Task Service Decider/Queue Service 1. Start content_ingest workflow 2. Get Workflow Definition 3. Schedule Task 4. Put in Queue 5. Poll For task Storage Task Queues App B
  • 33. Execution Flow App A Conductor App A Task Request Content Task Content Inspection App C Task Encode App B Task Publish Workflow / Task Service Decider/Queue Service 1. Start content_ingest workflow 2. Get Workflow Definition 3. Schedule Task 4. Put in Queue 5. Poll For task 6. Execute & update task status Storage Task Queues App B
  • 34. Workers Worker 1 Worker 2 Worker 3 Worker n ... Management/ Execution Service Task Queues Orchestrator Trigger Schedule Task HTTP Database Index HTTP Update Task Status Queue Poll
  • 36. 〉 Conditional (If...Then...Else) 〉 Fork / Join 〉 Dynamic Tasks and Forks 〉 Sub Workflow 〉 Wait 〉 Versioning 〉 HTTP/Service Calls 〉 Input / Output Transformation (JSONPath based) Blueprint Features
  • 37. Runtime 〉 Pause | Resume 〉 Skip Tasks, Restart 〉 Error / Failure Handling 〉 UI 〉 Manage definitions 〉 Search Executions by Payload 〉 Visualize flows 〉 Metrics, Metrics, Metrics…
  • 38. Conductor @ Netflix 〉 In production > 1 year 〉 ~100 Process Flows 〉 ~200 Tasks / Services 〉 Avg. Tasks per workflow: 6 〉 Largest : 48 Tasks 〉 ~4 MM Executions
  • 39. Roadmap - 2017 〉 Eventing 〉 SQS and SNS 〉 Dyno-Queues 〉 Task Execution Log 〉 Unit Testing Framework 〉 Python Client 〉 Feature Stacks
  • 40. Questions? Feedback / Issues / Questions 〉 https://github.com/Netflix/conductor 〉 https://github.com/Netflix/dyno-queues Contacts 〉 Viren Baraiya <vbaraiya@netflix.com> 〉 Vikram Singh <visingh@netflix.com> 〉 Prosenjit Bhattacharyya <pbhattacharyya@netflix.com>