Software:Conductor
Developer(s) | Netflix Team |
---|---|
Initial release | December 8, 2016 |
Repository | github |
Written in | Java, JavaScript (UI), Python, Go |
Platform | Linux |
License | Apache License 2.0 |
Website | netflix |
Conductor is a free and open-source microservice orchestration software platform originally developed by Netflix..[1][2]
Conductor was developed by Netflix to solve the problems of orchestrating microservices and business processes at scale in a cloud native environment.[3] It was released under the Apache License 2.0 and has been adopted by companies looking to orchestrate their processes at scale in a cloud native environment.[4][5]
Conductor belongs a set of software products that allows developers to build resilient, high-scale, cloud-native stateful applications using stateless primitives.
Architecture
Conductor server is written in Java with APIs exposed over HTTP and gRPC interfaces making it possible to do language agnostic development.[6] 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[7]
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.
References
- ↑ "Netflix Conductor, an Orchestration Engine for Microservices" (in en). https://www.infoq.com/news/2016/12/netflix-conductor/.
- ↑ "Conductor, the newest tool from Netflix for orchestration of…" (in en). https://en.paradigmadigital.com/dev/conductor-newest-thing-netflix-orchestration-microservices/.
- ↑ Blog, Netflix Technology (2016-12-12). "Netflix Conductor: A microservices orchestrator". https://netflixtechblog.com/netflix-conductor-a-microservices-orchestrator-2e8d4771bf40.
- ↑ "Netflix open-sources Conductor, a microservices orchestration engine" (in en-US). 2016-12-13. https://jaxenter.com/netflix-open-sources-conductor-a-microservices-orchestration-engine-130751.html.
- ↑ Krill, Paul (16 December 2016). "Netflix open-sources its microservices orchestrator" (in en). https://www.infoworld.com/article/3150983/netflix-open-sources-its-microservices-orchestrator.html.
- ↑ "Netflix Conductor, an Orchestration Engine for Microservices" (in en). https://www.infoq.com/news/2016/12/netflix-conductor/.
- ↑ Blog, Netflix Technology (2017-04-19). "Distributed delay queues based on Dynomite" (in en). https://netflixtechblog.com/distributed-delay-queues-based-on-dynomite-6b31eca37fbc.