Dagster vs Prefect: which orchestrator fits your team
Dagster suits teams that think in tables, models and asset lineage, and Prefect suits teams that think in flows and tasks wrapped around existing application code. The choice turns on three questions: how much you need lineage at the asset level, which governance controls you must have, and who will operate the platform day to day. Both projects are Apache-2.0 for their open-source cores, so the license alone will not separate them.
Governance is where the two diverge in practice. Dagster's pricing page lists role-based access control, SAML SSO, catalog search, column lineage, branch deployments, alerts and audit logs as Dagster+ features, not part of the free open-source Dagster. Prefect's server documentation says Prefect Cloud provides RBAC, audit logs and SSO that the self-hosted server does not include, and its pricing places SSO in the Team plan and object-level RBAC in Enterprise. Before you commit, list which of these controls your auditors or security team require, then confirm the current edition and plan for each against the Dagster pricing page and Prefect pricing page. Confirm whether you must self-host the control plane or can use a managed one, because that changes the cost model.
If your team will run the platform itself, check the operating model for each. Open-source Dagster runs a webserver, a single daemon and code location servers limited to one replica each, with run and event storage defaulting to SQLite and able to use PostgreSQL. Self-hosted Prefect uses SQLite by default and PostgreSQL for production, and multi-server deployments add PostgreSQL 14.9 or later, Redis and a load balancer. Ask which of these components your platform team can staff and patch, and plan a PostgreSQL backup and upgrade routine before the first production run.
Which platform fits which scenario
This table maps common team situations to the platform that fits them better and the condition that tips the decision. Read each row as a starting point, then check the condition against your own team, code and hosting rules before committing.
| Scenario | Better fit | Condition that makes it so |
|---|---|---|
| Data platform team owning many tables and models | Dagster | The team wants each table or model declared as an asset, so the asset graph, dependencies and freshness become the shared view of the platform. |
| Application team adding scheduled jobs to a service | Prefect | The jobs are plain Python functions inside an existing service, and the team wants to wrap them in flows with retries and caching without adopting a new data model. |
| Team needing column lineage out of the box | Dagster | Column lineage is listed as a Dagster+ feature, so the team should confirm whether it needs the paid tier, or plan to build lineage outside the open-source install. |
| Python-first codebase with no asset model | Prefect | The team thinks in tasks and flows rather than datasets, and does not want to restructure code around asset definitions before getting value. |
| Event-driven automation triggered by external systems | Prefect | Work starts from webhooks, events or state changes across services, and event-based automations are central to the design rather than a secondary feature. |
| Team that must keep everything self-hosted | Confirm before choosing | Both open-source servers can run in your own infrastructure, but RBAC, SSO and audit logs are paid cloud features on both sides, so confirm which controls you must run yourself. |
| Multi-user governance with RBAC, SSO and audit logs | Either, after a feature check | Dagster lists these under Dagster+ and Prefect's server documentation says Prefect Cloud provides them, so compare edition contents against your control requirements. |
| Team wanting to run a high-availability server on PostgreSQL | Confirm before choosing | Prefect documents PostgreSQL 14.9 or later, Redis and a load balancer for multi-server setups; check Dagster's current OSS deployment guide for its own replica and database choices. |
How Dagster OSS and self-hosted Prefect are built
Both tools split into a user-facing web layer, a background process and a database. The differences sit in how many moving parts you run, which ones can scale out, and which ones you must keep single or add dependencies for. Read each card with your expected run volume and team size in mind.
Dagster webserver and replicas
The Dagster webserver serves the UI and GraphQL API, and it can run as multiple replicas behind a load balancer. That makes the user-facing layer the part you scale for more concurrent users. Confirm with your platform team how you will route traffic and handle sessions across replicas in your own Kubernetes, Docker or Amazon ECS setup before you commit to a layout.
Dagster daemon as a single process
One daemon runs schedules, sensors and run queuing, and you should plan for it to be a single process. Schedule and sensor evaluation therefore depends on that one process staying healthy. Ask your operations team how they will detect a stalled daemon, restart it and alert on missed schedules, since a failure here delays work across every asset job.
Dagster code location servers
Each code location server runs with one replica, which keeps code loading simple but limits how far you can scale a single project's code server. Teams that split many pipelines across code locations should check how this affects their release process and restart windows. Confirm the replica limit against the version you plan to run.
Dagster run and event storage
Run, event log and schedule storage default to SQLite, which suits a single-node evaluation. For shared use, you can point this storage at PostgreSQL, and the run launcher, run coordinator and executor are swappable components. Decide early whether your event history must survive node loss, because moving storage later means planning a migration.
Prefect API, UI and state database
Self-hosted Prefect server bundles an API, a UI and a database that records flow and task run state, logs, deployments, concurrency limits, variables, artifacts, work pool status, events and automations. Because the database holds nearly all operational state, its backup and restore plan matters more than any single process. Confirm which of these records your audit or retention rules require you to keep.
Prefect PostgreSQL, Redis and load balancer
Prefect uses SQLite by default and PostgreSQL for production. Multi-server deployments need PostgreSQL 14.9 or later, Redis for event messaging and a load balancer in front of the API servers. Each added dependency is another service to patch, monitor and back up, so the effort to run a highly available Prefect server is larger than a single-node install. Ask whether your platform team already operates Redis and PostgreSQL at the required versions.
Capability by capability: Dagster and Prefect side by side
This table compares how Dagster and Prefect model work, track lineage, handle retries, gate governance features and deploy. Each cell states the supplied fact or says what to confirm, so use it as a checklist for your own evaluation rather than a final verdict.
| Capability | Dagster (open source and Dagster+) | Prefect (self-hosted server and Prefect Cloud) |
|---|---|---|
| Core unit of work | Assets: logical units of data such as tables or models, declared as Python functions | Flows made of tasks: Python functions organized around run state and deployments |
| Lineage | Asset lineage is part of the open-source model. Column lineage is listed as a Dagster+ feature on the pricing page | Lineage is expressed through run state, task runs and events. Confirm whether your needed dependency view meets your requirements in current docs |
| Retries and caching | Retries are set per asset or op. Confirm exact configuration keys and defaults in the current Dagster documentation | Retries and caching are listed as core scheduling features. Confirm per-task retry and cache settings in the current Prefect docs |
| Event-based triggers | Schedules, sensors and run queuing are operated by the single open-source daemon. Confirm sensor behavior for your triggers | Event-based automations are a listed feature. Confirm which automations the self-hosted server includes for your version |
| RBAC, SSO and audit logs | Role-based access control, SAML SSO and audit logs are listed as Dagster+ features, not free open-source features | The Prefect server documentation says RBAC, audit logs and SSO are not included in self-hosted server and are Prefect Cloud features. Prefect Cloud SSO starts at the Team plan |
| Deployment options | Open-source deployment documented for Kubernetes with Helm, Docker and Amazon ECS | Self-hosted server with a database and UI. Confirm the Kubernetes and container options your platform team will use |
| Metadata database | Run, event log and schedule storage defaults to SQLite and can use PostgreSQL | Server defaults to SQLite and uses PostgreSQL for production. Multi-server setups need PostgreSQL 14.9 or later, Redis and a load balancer |
| Python requirement | Confirm the supported Python versions for your Dagster release in the current documentation | Requires Python 3.11 or later, per the Prefect README |
| Client and server compatibility | Confirm the client and webserver version rules in the Dagster upgrade notes before rolling out | Old clients work with new servers, but new clients can break against old servers because new REST API fields get added. Pin versions during upgrades |
What each platform gives away and what it charges for
Dagster's open-source distribution is licensed under Apache-2.0, so you can run the orchestrator inside your own cloud account, data center or air-gapped network without a license fee for the software itself. The latest release is 1.13.26, published on October 9, 2026, after 1.13.25 on October 1 and 1.13.24 on September 21, 2026. In this model, your costs are the infrastructure and the engineers who run, upgrade and secure it.
- Assets in the free tier: Assets, the logical units of data such as tables or models declared as Python functions, are part of the open-source product.
- Components you operate: The deployment runs a webserver with optional replicas, a single daemon for schedules, sensors and run queuing, and code location servers limited to one replica each.
- Storage you size: Run, event log and schedule storage defaults to SQLite and can use PostgreSQL, so production storage design is your responsibility.
- Documented deployment paths: Kubernetes with Helm, Docker and Amazon ECS are documented options for self-hosting.
Confirm with your platform team which release cadence and support commitments you will hold yourselves to, since upgrades and patching are recurring costs that stay with you.
Dagster's pricing page lists several governance features as Dagster+ features rather than part of the free open-source Dagster. The list includes role-based access control, SAML SSO, catalog search, column lineage, branch deployments, alerts and audit logs. For a data platform team, these features decide whether the lineage view and access model can be shared across teams without custom build work.
- Access control: RBAC and SAML SSO govern who can change assets and how users sign in to the platform.
- Catalog and lineage: Catalog search and column lineage sit in the paid tier, so confirm whether your requirement depends on column-level detail or table-level lineage is enough.
- Branch deployments: The pricing page places these in Dagster+, which matters for teams that want to test pipeline changes before they reach production.
- Alerts and audit logs: Operational alerting and audit trails are paid features, so if an auditor will ask for a change history, include this in your cost comparison before choosing the open-source path.
Ask Dagster for the current plan matrix in writing and for the exact feature set at each tier, because feature placement can change. The Dagster pricing page is the starting point.
Prefect is Apache-2.0 licensed. The 3.8.8 release arrived on October 6, 2026, after 3.8.7 on September 26, 2026. The 2.x line still received 2.20.26 on September 2, 2026, so teams on older estates are still getting maintenance releases, though you should confirm the support window for your version directly with Prefect. The README states that Prefect requires Python 3.11 or later.
- Self-hosted server: The server bundles an API, a UI and a database that records flow and task run state, logs, deployments, concurrency limits, variables, artifacts, work pool status, events and automations.
- Database choice: SQLite is the default and PostgreSQL is recommended for production. Multi-server deployments need PostgreSQL 14.9 or later, Redis for event messaging and a load balancer.
- Governance gap: The server documentation says RBAC, audit logs and SSO are Prefect Cloud features that self-hosted server does not include.
- Upgrade order: Old clients work with new servers, but new clients can be incompatible with old servers as fields are added to the REST API, so plan server and worker upgrades in a fixed sequence.
Before you commit, confirm whether any access control or audit requirement you hold can be met with controls around the self-hosted server, and price the Redis, load balancer and database operations that a multi-server design adds.
Prefect Cloud is the managed service that carries the governance features the self-hosted server leaves out. The published plans are Hobby (free), Starter at $100 per month, Team at $100 per user per month and Enterprise at custom pricing. SSO begins at the Team plan, while object-level RBAC and multiple workspaces are listed on Enterprise. Cost recurs monthly under every paid plan, and the per-user Team rate makes headcount the main driver.
- Hobby: A free plan. Check its limits against your production workload before relying on it for anything beyond evaluation.
- Starter: A flat $100 per month on the pricing page, so the cost does not change with user count.
- Team: $100 per user per month, with SSO included. Illustrative: ten seats at this rate would total $1,000 per month before any Enterprise terms.
- Enterprise: Custom pricing, with object-level RBAC and multiple workspaces. Request a written quote that states the workspace structure and support terms.
Confirm with Prefect how it defines a billable user, whether service accounts count, and whether the plan features listed on the pricing page are current, since both prices and feature placement can change.
How each platform models lineage and retries
Dagster treats the asset as the unit of lineage. Each asset is a logical piece of data, such as a table or a model, declared as a Python function, so the dependency graph the UI draws is a graph of data products rather than a graph of tasks. For a data platform team, that is the main reason to pick it: when a upstream table changes, the asset graph shows which downstream models and dashboards are affected, and you can materialize only the part of the graph that needs refreshing. Column lineage, however, is listed on the Dagster pricing page as a Dagster+ feature rather than part of the free open-source Dagster, so confirm whether you need it before you assume the open-source graph covers your audit questions.
Prefect models lineage differently. Its core record is flow and task run state, along with logs, artifacts and events, and retries and caching are framework features you configure on the tasks themselves. Lineage between data objects is not something Prefect infers from the tasks; it exists only to the extent your team records it, through task inputs and outputs, artifacts or events that your code emits. That suits an application team that cares most about run history, retry behavior and failure triage around service calls, where the question is "what ran, how often did it fail, and did the retry succeed?" Ask Prefect's team, and test in your environment, exactly which lineage metadata a self-hosted server stores before you promise one.
Run a short test before you choose. Take two or three real pipelines, including one with a failing upstream dependency and one that calls an external service, and deploy each to both platforms. Check whether the graph answers your lineage questions without custom instrumentation, how retries behave when a dependency fails midway, and how much of the run history survives a restart of the metadata store. If your team needs a dependency view over data products, the asset model is the stronger starting point. If the work is mostly service calls where run history and retries matter most, the flow model is usually the more direct fit.
Moving from Prefect to Dagster, or back, without a rewrite
This sequence moves orchestration from one platform to the other while keeping the Python business logic, data connections and storage choices that already work. Teams finish with schedules, alerts and access controls rebuilt on the target platform and a clear record of when each old schedule was retired.
Inventory flows, deployments and schedules
The platform team lists every Prefect flow, deployment, work pool, schedule, automation and notification, along with the upstream and downstream systems each one touches. Owners of each pipeline confirm which jobs are business critical, which are internal and which are candidates for a first move. The output is a single inventory sheet, reviewed by both the data platform and application teams, that marks each item as keep, re-model or retire.
Separate business logic from orchestration code
Engineers identify the Python functions that read sources, transform data and write results, and separate them from the Prefect decorators, task wiring and deployment settings. The business logic moves largely unchanged, because both platforms run ordinary Python. Connection settings, secrets references and storage choices carry over as configuration, and the team confirms that each function runs on its own in a test environment without the orchestrator. The output is a tested library that either platform can call.
Re-model flows as assets or keep them as flows
For each pipeline, the team decides whether to represent its outputs as Dagster assets, which fits pipelines built around tables or models and their dependencies, or to keep it as a job-style flow where the work is a sequence of tasks without durable data products. Prefect task dependencies are translated into asset dependencies or job ops, and retry settings are rewritten, since the two platforms model lineage and retries differently. The output is a mapping document showing each old flow beside its new definition and the expected lineage graph.
Rebuild schedules, sensors, alerts and access controls
Schedules and event triggers are recreated on the target platform, and each trigger is compared against the old one to confirm the same timing and conditions. Notification routes, alert rules, role assignments and SSO settings are configured again in the target's own model, using the paid features of whichever cloud or edition the organization has chosen. Run history is not expected to move automatically, so the team records which historical reports and audit records must remain in the old system. The output is a checklist signed off by the platform owner and the security team.
Plan run and event storage on PostgreSQL
Teams that run more than a single process confirm where run, event and schedule metadata will live. Prefect server uses SQLite by default and PostgreSQL for production, and Dagster's run, event log and schedule storage defaults to SQLite and can use PostgreSQL, so both platforms typically end up on a shared PostgreSQL instance in production. The platform team sizes the database, sets backups and restore tests, and confirms who owns patching. The output is a documented storage design and a tested restore.
Run both platforms in parallel on non-critical jobs
A small set of low-risk pipelines runs on both platforms for a defined review period agreed by the owners. The team compares output tables, row counts, timing, failure behavior and alert delivery between the two runs, and logs every difference. Anything that differs is either fixed in the new definition or accepted in writing by the data owner. The output is a parallel-run report that lists each job, its result and any open issues.
Cut over and retire old schedules
Once the parallel results match and owners approve, the team disables each old schedule one job at a time, starting with the least critical, and confirms the new schedule has fired as expected. Old deployments and automations are kept in a read-only state until the audit and retention requirements are met, and the team records the export of any run history that must be preserved. The cutover is complete when no active Prefect schedules remain for migrated jobs and the inventory shows every item closed.
What implementing each platform involves and where projects run long
Implementation effort for Dagster and Prefect starts with the same question: who operates the control plane, and what does your team have to build around it. For self-hosted Dagster, the work covers the webserver that serves the UI and GraphQL, a single daemon that runs schedules, sensors and run queuing, and code location servers that each run one replica. Run, event log and schedule storage default to SQLite, so a production scope should name a PostgreSQL instance, its backups and its failover plan. For self-hosted Prefect, the server bundles an API, a UI and a database, and its documentation says production should use PostgreSQL. Multi-server deployments add PostgreSQL 14.9 or later, Redis for event messaging and a load balancer. Identity is a separate line item. Neither open-source server includes SSO or RBAC, so if you need them, the written scope should price the paid tier (Dagster+ or Prefect Cloud, or an enterprise agreement) as a licensing decision, not as configuration work.
The packaging and operating work is where the two diverge. Dagster deployments are typically split into code locations, and the scope should specify how each one is built, versioned and deployed through Kubernetes with Helm, Docker or Amazon ECS. Monitoring, alert routing, backup schedules for the metadata database, and upgrade rehearsals belong in the same document, along with who onboards developers and how they write and test assets. Prefect's work centers on flow deployments and work pools. Ask a partner to define the upgrade order for server, workers and client libraries, because the Prefect server documentation notes that new clients can be incompatible with old servers as new REST API fields are added. Confirm your Python baseline too: the Prefect README requires Python 3.11 or later.
Projects usually run long for two reasons. The first is asset modeling in Dagster. An asset is a logical unit of data such as a table or model, and the model only works when data teams agree on names, owners, partitions and dependencies. If teams have no shared definitions, the engagement turns into a modeling workshop before any pipeline is migrated, so the scope should include a naming and ownership standard and a sign-off step. The second is Prefect's version alignment and multi-server dependencies. Mixed client and server versions, a server cluster that depends on PostgreSQL, Redis and a load balancer, and workers that must match the server all extend testing. Ask a partner for a written version matrix, a staged upgrade plan, a documented recovery procedure for each shared component, and clear acceptance criteria for team onboarding.
Questions teams ask before choosing Dagster or Prefect
Are the open-source versions of Dagster and Prefect free to run?
Yes, the software licenses are free: Dagster is Apache-2.0 licensed and Prefect is Apache-2.0 licensed, so you can run either server in your own infrastructure without a license fee. The cost you still carry is the infrastructure, the database, upgrades and the people who operate them. Paid tiers exist for governance features. For Dagster, the pricing page lists role-based access control, SAML SSO, catalog search, column lineage, branch deployments, alerts and audit logs as Dagster+ features rather than part of the free open-source edition. For Prefect, the server documentation says Prefect Cloud provides RBAC, audit logs and SSO that self-hosted Prefect server does not include. Confirm the current feature split on each vendor's pricing page before you plan around it: Dagster pricing and Prefect pricing.
Do I need a paid plan for SSO and RBAC with Dagster or Prefect?
Usually yes, if you need those controls in a self-hosted deployment. Neither open-source product includes SSO or RBAC as a free feature, according to the vendor documentation. Dagster+ lists SAML SSO and role-based access control among its paid features. Prefect's self-hosted server documentation says RBAC, audit logs and SSO are provided by Prefect Cloud, and the pricing page places SSO from the Team plan and object-level RBAC on Enterprise. Your answer depends on your identity model, audit requirements and how many people touch production pipelines. Ask each vendor which plan includes the exact control you need, and confirm whether it applies to your deployment model.
How does Prefect Cloud per-user pricing compare with self-hosting effort?
Per-user pricing trades a recurring subscription for less operating work, and the break-even depends on your team size and on what your engineers would otherwise spend on the platform. The Prefect pricing page lists Team at $100 per user per month and Enterprise at custom pricing, so the subscription grows with every seat. Self-hosting has no seat fee, but you pay for the database, compute, backups, upgrades and the engineering time to run them. Those costs rise with uptime requirements and with the number of deployments, not with the number of viewers. Ask for a written comparison that prices seats, hosting, on-call coverage and upgrade work over the same period, and keep in mind that Dagster+ uses its own plan and credit model.
What does self-hosting Dagster or Prefect require in PostgreSQL and infrastructure?
Both can run on SQLite for evaluation, but production deployments call for PostgreSQL. Dagster's run, event log and schedule storage defaults to SQLite and can use PostgreSQL, and its open-source architecture runs a webserver, a single daemon for schedules, sensors and run queuing, and code location servers with one replica each. Prefect server uses SQLite by default and PostgreSQL for production, and multi-server deployments need PostgreSQL 14.9 or later, Redis for event messaging and a load balancer. Plan for a managed or highly available database, secrets handling, monitoring of the daemon or services, and a container platform such as Kubernetes with Helm, Docker or Amazon ECS. Confirm the exact configuration against each vendor's self-hosting documentation before sizing your environment.
Can a team migrate from Prefect to Dagster without a rewrite?
Not without changes, because the two tools model work differently. Prefect organizes code as flows and tasks, while Dagster organizes it around assets, which are logical units of data such as tables or models declared as Python functions. Moving a pipeline means deciding which data products should become assets, rewriting scheduling and retry logic, and rebuilding monitoring and alerts. The work is usually smaller for pipelines that already produce well-named tables and larger for event-driven or heavily dynamic workflows. Run a pilot on one pipeline, keep run history in a separate archive if you need it, and have your team write down the lineage and retry behavior they depend on before you commit to a plan.
What would DeployOpen do, and what must our own team own?
DeployOpen plans, implements, customizes, integrates, hardens, backs up, upgrades, documents and supports self-hosted open-source platforms inside your own infrastructure. For an orchestrator, that can include the deployment architecture, database setup, identity integration, pipeline migration support, runbooks and evidence for compliance assessments. Most engagements are fixed-scope, with scope, deliverables and timelines agreed in writing before work starts, and ongoing support or upgrades are available as retainers. Your team still owns the business logic of its pipelines, the data it processes, access approvals and the decisions about which environments are production. DeployOpen does not publish a price list, so ask for a quote built from a written scope that names your platform choice, environments and integrations.
What drives the running cost of each orchestrator
The largest recurring costs of running either orchestrator are the people who keep it upgraded and on call, and the paid tier you need for governance. Infrastructure is usually the smaller line. For self-hosted Dagster, the components to price are the webserver (which can run multiple replicas), the single daemon that runs schedules, sensors and run queuing, one replica per code location server, and the PostgreSQL database that replaces the default SQLite for run, event log and schedule storage. For self-hosted Prefect, the server bundles an API, a UI and a database, and PostgreSQL is the production choice. Multi-server Prefect deployments also need PostgreSQL 14.9 or later, Redis for event messaging and a load balancer. Each added component is another thing to back up, patch and monitor, so ask your team to count them against your topology before comparing headline hosting numbers.
Recurring operations split into two groups. Upgrades and on-call are staff time, and they recur with every release line you adopt. Dagster's open-source releases are frequent (1.13.24 through 1.13.26 landed within a few weeks in autumn 2026), and Prefect's 3.x line moved from 3.8.7 to 3.8.8 within about ten days, so budget a regular upgrade cycle and test it against your code locations. Prefect's documentation also notes that new clients can be incompatible with old servers, so client and server versions must be upgraded in step. Governance is the other recurring line. Dagster+ lists role-based access control, SAML SSO, catalog search, column lineage, branch deployments, alerts and audit logs as paid features, and Prefect Cloud's RBAC, audit logs and SSO are paid too. Confirm the current price for each tier on the vendor pricing pages, since neither is set by DeployOpen.
One-time costs are setup, the initial migration of your pipelines, and any later move between the two tools, which is harder once assets or flows are embedded in your code. A quote from DeployOpen follows from written scope, and DeployOpen does not publish prices. Ask for the list of paid features in scope, the hosting topology (single or multi-server, managed database or self-run), the upgrade cadence and test approach, the support hours and response expectations, and whether migration from the other tool is included or priced separately. Use the Dagster self-hosting documentation and the Prefect self-hosted documentation to build the component list before the scoping call.
How DeployOpen helps choose, implement or migrate
DeployOpen is a Chainscore Labs company that plans, implements, integrates, hardens, backs up, upgrades, documents and supports self-hosted open-source platforms inside your own infrastructure. For Dagster vs Prefect, we start by agreeing which orchestrator fits your team's workloads, identity requirements and hosting model, then deliver the chosen platform against a written scope.
How we scope
- Map which pipelines your data platform team runs as assets and which your application team runs as Python flows.
- Confirm which governance features you need, such as RBAC, SSO and audit logs, and whether they must come from a paid tier.
- Agree the database, hosting target and upgrade cadence in a written, fixed-scope document before any work starts.
How we build
- Deploy the chosen orchestrator in your cloud account, data center or air-gapped network, with the storage backend you select.
- Integrate scheduling, retries, alerts and connections to your warehouses, sources and identity provider.
- Test failure and retry behavior, lineage views and access controls against the scenarios agreed during scoping.
How we hand over
- Document the architecture, configuration, backup procedures and runbooks for your operators and developers.
- Walk your platform and application teams through deploying, monitoring and changing pipelines on the new setup.
- Provide the written evidence and configuration records your compliance reviewers need from the orchestration layer.
How we support
- Offer ongoing support, upgrades and continuous testing as a retainer after handover, if your team wants it.
- Plan version upgrades around the release cadence of the chosen orchestrator and confirm each change in your environment.
- Ask your vendor and your own environment to confirm any feature or licensing detail before you rely on it.

