EmboFlow/design/08-decisions/adr-0002-executor-and-scheduler-separation.md

1.0 KiB

ADR-0002: Separate Executors From Schedulers

Status

Accepted

Context

EmboFlow needs to support multiple runtime modes now and later:

  • direct Python execution
  • Docker-isolated execution
  • HTTP-based execution
  • local scheduling
  • future Kubernetes scheduling
  • future Volcano scheduling

If execution logic and scheduling logic are coupled together, migration from single-host operation to cluster operation becomes costly.

Decision

The architecture will separate:

  • Executor: how node logic runs
  • Scheduler: where and under what dispatch policy tasks run

V1 executors:

  • Python
  • Docker
  • HTTP

V1 scheduler:

  • Local

Reserved future schedulers:

  • Kubernetes
  • Volcano

Consequences

Positive

  • Cleaner evolution path
  • Better runtime abstraction
  • Less refactoring required for cluster migration

Negative

  • Slightly more abstraction in V1 than the immediate deployment requires

Notes

User-injected code should default to Docker execution, while trusted platform logic may use Python execution.