Enable self-service infrastructure without losing control

Define infrastructure environments once. Teams deploy by name forever. No deployment tickets, no Slack DMs asking for cluster access—your infrastructure, their autonomy.

Work Pools

Infrastructure as a service—for your internal teams

Work pools let platform teams expose infrastructure as named environments. Data teams reference them by string—work_pool_name="prod-k8s"—and deploy instantly. You control compute, namespaces, and costs. They control deployment timing and code.

Learn about work pools
deploy.py
1# Platform team creates work pools with infrastructure config
2# AWS ECS, GCP Cloud Run, Azure Container Instances, K8s, etc.
3
4# Developers deploy with just a string reference
5from prefect import flow
6
7@flow
8def data_pipeline():
9 return process_data()
10
11if __name__ == "__main__":
12 data_pipeline.deploy(
13 name="prod-pipeline",
14 work_pool_name="production-k8s", # That's it.
15 cron="0 */6 * * *",
16 )

Centralized Audit Logs

Real-time tracking
Object-level access controls
RBAC & SCIM for granular permissions
Secure credential management
Encrypted secrets in your infrastructure
Complete audit trail
Track every deployment and change

Governance and Control

Centralized governance without centralizing execution

Maintain visibility and control while teams self-serve. Audit logs, RBAC, and credential management run in Prefect Cloud—but workflows execute in your infrastructure.

Explore governance features

Platform Team Control

Set defaults once. Override when needed.

Configure memory limits, namespaces, and service accounts at the work pool level. Every deployment inherits your standards automatically. When a team needs 32GB for one job, they override—no ticket, no approval workflow.

View work pool setup
platform_team_setup.sh
1# Platform team: Create work pools with infrastructure defaults
2prefect work-pool create "production-k8s" \
3 --type kubernetes \
4 --set namespace=prod \
5 --set resources.limits.memory=4Gi \
6 --set serviceAccount=prefect-prod
7
8prefect work-pool create "analytics-highmem" \
9 --type kubernetes \
10 --set namespace=analytics \
11 --set resources.limits.memory=32Gi
12
13# Data teams: Just reference the pool name
14# work_pool_name="production-k8s"
15# work_pool_name="analytics-highmem"
16
17# Infrastructure governance enforced. Self-service enabled.
dynamic_resources.py
1from prefect import flow
2
3# Same flow, different resource needs
4@flow
5def process_data():
6 return transform_dataset()
7
8# Small daily job: 2GB RAM
9process_data.deploy(
10 name="daily-incremental",
11 work_pool_name="prod-k8s",
12 job_variables={"memory": "2Gi"},
13 cron="0 2 * * *"
14)
15
16# Monthly backfill: 32GB RAM
17process_data.deploy(
18 name="monthly-backfill",
19 work_pool_name="prod-k8s",
20 job_variables={"memory": "32Gi"},
21 cron="0 3 1 * *"
22)
23
24# Each run provisions exactly what it needs.
25# No idle 32GB pods waiting for monthly jobs.

Dynamic Infrastructure

Stop paying for peak capacity 24/7

Infrastructure provisions per run, not per pool. Daily jobs get 2GB, monthly backfills get 32GB—same code, right-sized compute. No more idle clusters burning budget waiting for the one big job.

Learn about job variables
self_service.py
1from prefect import flow
2from prefect.deployments import serve
3
4@flow(log_prints=True)
5def data_sync():
6 # Teams deploy independently
7 result = sync_to_warehouse()
8 print(f"Synced {result.rows} rows")
9
10if __name__ == "__main__":
11 # Deploy from CI/CD or local machine
12 serve(
13 data_sync.to_deployment(
14 name="warehouse-sync",
15 work_pool_name="team-data-pool",
16 cron="0 */6 * * *",
17 )
18 )

Team Productivity

Self-service deployment—your infrastructure stays yours

Standardized deployment patterns let teams ship faster without platform bottlenecks. CI/CD integration and GitOps workflows maintain control while enabling autonomy.

View deployment docs

Why platform teams choose Prefect

Transform from deployment bottleneck to innovation enabler—without giving up infrastructure control

Double River Investmentstestimonial

Prefect allows us to create a microservices-like architecture for our data pipelines, essentially acting as a contract between independent teams.

NG
Nelson Griffiths
Engineering Lead
Endpointcase-study

Prefect's compute model associates resources with jobs. The code-infrastructure separation is impressive.

SP
Sunny Pachunuri
Data Engineering and Platform Manager
G2 Reviewertestimonial

Hybrid execution across cloud and on-prem gives us flexibility without sacrificing governance.

PT
Platform Engineering Team
G2 Reviewertestimonial

Secure on-prem execution with cloud orchestration solved our compliance requirements while enabling team autonomy.

DL
Data Platform Lead

Run workflows in your infrastructure with zero maintenance

Join 25,000+ engineers orchestrating workflows across every cloud while maintaining complete control

Data Platform Teams | Prefect