Architecture
Conductor server is written in Java with APIs exposed over HTTP and gRPC interfaces making it possible to do language agnostic development. A set of client libraries are made available by Netflix and community in Java, Python and Go. Conductor uses a lightweight JSON based schema with rich programming language constructs such as fork/join, switch case, loops and exception handling to define the flows. At the heart of Conductor is a queuing system that is used to schedule tasks and manage the process flows. Conductor leverages a pluggable model allowing different implementations of the queuing system. Open source version uses Dyno-Queues developed at Netflix for queuing as default implementation. The workflows are defined as the orchestration among the tasks which can be a system level construct such as fork, join, switch, loop, an external HTTP endpoint implementing business logic or a task worker running outside of Conductor servers and listening for work to be scheduled by the server. The workers communicate with the server using pre-defined APIs over HTTP or gRPC. Conductor provides lightweight libraries to manage worker states in Java, Python and Go and additional languages can be used to implement logic using provided APIs. Conductor uses pluggable architecture model allowing for different databases to store its states. The current version has support for Redis (Stand-alone, Sentinel, Cluster and Dynomite), Postgres, Mysql, Cassandra and uses Elasticsearch as indexing mechanism. The UI is written in ReactJS and provides ability to search, visualize and manage the workflow states.Cloud Hosted Services
OrkesReferences
{{Netflix Netflix 2016 software Free software for cloud computing Free and open-source software Linux software Software using the Apache license Free software programmed in Java (programming language)