Skip to main content

What is Conductor?

  • Conductor is an open-source, Apache 2.0 licensed microservices and workflow orchestration framework
  • Build stateful applications without the overhead of managing a state machine
  • Enables development of highly resilient and scalable distributed systems with built-in features that empower rapid development of business applications
  • Used for a wide range of use cases such as - business process automations, data pipelines, CI/CD pipelines, order management workflows etc.
  • Run 100s to millions of workflows per day - scales seamlessly for a wide range of applications
  • Build workflows using many popular languages with SDKs

Conductor is the workflow system of choice at Netflix. Learn more in this video

Why should we use Conductor?

  • Lets us focus on coding the business logic of the application instead of managing the state and complexities of a distributed ecosystem
  • We can cleanly decouple the design of the application flow from the implementation
  • Application's resilience is increased with native support in Conductor for retries, error handling alongside rich metrics
  • We have powerful visualizations of your application’s execution paths that can shorten debugging times from hours to minutes

What can we build with Conductor?

  • Applications composed of distributed microservices or serverless functions
  • Hybrid applications that span across multiple deployment models (e.g. VM deployed monolith, kubernetes deployed containers)
  • Long running workflows that need to wait for days, months or even years between executions (e.g. monthly or yearly subscription billing)
  • Mission critical applications with high reliability requirements (e.g. financial transactions)

Your First Workflow Task


@Override
public TaskResult execute(Task task) {
TaskResult result = new TaskResult(task);
result.setStatus(TaskResult.Status.COMPLETED);
String currentTimeOnServer = Instant.now().toString();
result.addOutputData("currentTimeOnServer", currentTimeOnServer);
result.addOutputData("message", "Hello World!");
return result;
}

Diagram of a workflow.

Tasks such as these makes up steps in your workflows. Learn more here