Prefect est une alternative moderne à Airflow avec une meilleure developer experience. En entretien, on évalue la capacité à choisir entre les orchestrateurs et à architecturer des pipelines robustes.
Quelle est la principale différence architecturale entre Prefect et Airflow ?
Comment convertissez-vous un script Python existant en flow Prefect ?
from prefect import flow, task
from prefect.tasks import task_input_hash
from datetime import timedelta
@task(
retries=3,
retry_delay_seconds=60,
cache_key_fn=task_input_hash,
cache_expiration=timedelta(hours=1)
)
def extract_data(source_url: str) -> list:
response = requests.get(source_url)
return response.json()
@task
def transform(data: list) -> pd.DataFrame:
df = pd.DataFrame(data)
return df[df['amount'] > 0]
@task
def load(df: pd.DataFrame, table: str):
df.to_sql(table, engine, if_exists='append')
return len(df)
@flow(name='pipeline-ventes', log_prints=True)
def pipeline(source: str = 'https://api.exemple.com/orders'):
data = extract_data(source)
df = transform(data)
n_rows = load(df, 'orders')
print(f'{n_rows} lignes chargées')
if __name__ == '__main__':
pipeline() # exécutable directement en localQu est-ce qu un Deployment Prefect ? Comment planifiez-vous l exécution ?
from prefect.deployments import Deployment
from prefect.server.schemas.schedules import CronSchedule
# Créer un déploiement avec CRON
deployment = Deployment.build_from_flow(
flow=pipeline,
name='pipeline-ventes-quotidien',
schedule=CronSchedule(cron='0 6 * * *', timezone='Europe/Paris'),
work_pool_name='mon-pool-gcp', # où s exécute le flow
parameters={'source': 'https://api.exemple.com/orders'}
)
deployment.apply()
# Work pools : définir l infrastructure d exécution
# Process : exécution locale (dev/test)
# Docker : conteneur Docker
# Kubernetes : pod K8s
# Cloud Run : GCP serverlessComment gérez-vous les erreurs dans Prefect ? En quoi est-ce plus puissant qu Airflow ?
Comment choisissez-vous votre orchestrateur ?
| Airflow | Prefect | Dagster | |
|---|---|---|---|
| Paradigme | DAG-centric (tâches) | Flow-centric (Python pur) | Asset-centric (données) |
| Courbe d apprentissage | Élevée | Faible | Moyenne |
| Écosystème | Mature, 400+ providers | Croissant | Croissant |
| Developer experience | Moyen | Excellent | Excellent |
| Data assets | Non | Partiel | Natif |
| Idéal pour | Équipes existantes, beaucoup de providers | Nouveaux projets, Python-centric | Teams data-asset oriented |
Comment monitorez-vous vos flows Prefect en production ?
| Niveau | Maitrise | Signal GO | NO-GO |
|---|---|---|---|
| Confirmé | Flows et tasks, déploiements, retry basique | A transformé un script Python en flow Prefect, sait déployer avec un CRON | N a jamais utilisé d orchestrateur |
| Senior | Work pools, state handlers, comparaison Airflow/Prefect/Dagster | Justifie le choix d orchestrateur selon le contexte, a configuré des automations | Ne sait pas expliquer la différence architecturale entre Airflow et Prefect |
Premier entretien gratuit. Rapport GO/NO-GO sous 48h.