So am I right in my understanding that we need the following key components and their purpose:
1. Prefect Cloud / Server - essentially the Airflow scheduler if I wanted to compare this to Airflow land. It monitors, schedules and executes our flows, but it does NOT manage or execute the underlying tasks.
2. Flows - essentially an Airflow DAG (although not actually a directed a directed acyclic graph, just using the term for comparing apples-to-apples)
3. Tasks - same as in Airflow. Units of work that get executed.
4. Agent(s) - a lightweight process which polls the Cloud/Server API for new flow runs which need to be executed. Agent will monitor and manage the underlying tasks in that flow (this is where I am fuzzy, so quite likely very wrong).
5. Executor(s) - underlying compute which runs individual tasks, managed by the agent.
Presuming I have the above correct(ish), I think my main confusion is around why we would push the agents to say Kubernetes or Fargate. Running our tasks on an elastic service like this makes sense, especially if the number of tasks is dynamic.
Is the use case for running agents on an elastic service like this in case of dynamic flow run generation (so each flow run is run on it’s own fargate task?).
I think my head is too much in Airflow land, whereby if we have say a fixed number of 200 DAGs (Flows), the elastic compute is applied to the underlying tasks in those DAGs, not the DagRuns themselves. Whereas, I think Prefect is more flexible and we can also scale up the FlowRuns (DagRuns)?