Integrar Apache Airflow com.NET 10 não significa portar o orquestrador ou reescrever DAGs em C#. A solução correta é manter o Airflow responsável por criar, agendar e monitorar workflows, enquanto o serviço.NET consumir sua API REST pública. Este fluxo de trabalho preserva o papel de cada tecnologia e cria um contrato claro entre a aplicação transacional e a plataforma de dados.
Configuração do Serviço.NET
Neste guia, implementaremos essa solução usando.NET 10, HttpClient, autenticação JWT e a API /api/v2 do Apache Airflow 3.3. O exemplo gera um dag_run_id rastreável, serializa conf corretamente, reutiliza o token até perto da expiração, renova a credencial após uma resposta 401, aplica timeout ao monitoramento e propaga cancelamento. Também expor a integração por uma Minimal API, permitindo que outro sistema possa iniciar o processo sem conhecer os detalhes do Airflow.
Configuração do Servidor de Airflow
O exemplo usa uma stack menor do que o quick-start oficial, pois o objetivo é testar a integração REST, não demonstrar o CeleryExecutor. O LocalExecutor executa tarefas no mesmo ambiente do scheduler e elimina Redis e workers Celery. Permanecem os componentes necessários do Airflow 3: API server, scheduler, DAG processor, triggerer, inicializador e PostgreSQL.
Todos os dados relevantes usam bind mounts, isto é, diretórios explícitos do repositório montados nos containers. DAGs ficam em dags/, logs em logs/, configuração em config/, plugins em plugins/ e o cluster PostgreSQL em data/postgres/. Os diretórios gerados estão no.gitignore; apenas o DAG, o Compose e arquivos.gitkeep são versionados.
Autenticação JWT
O usuário técnico possui somente as permissões necessárias para disparar e ler o DAG escolhido. O proxy reverso aceita os verbos POST e GET, o header Authorization e o tamanho máximo previsto para conf. O DAG é idempotente ou recebe uma chave de negócio que impeça processamento duplicado. O timeout do serviço é compatível com a duração esperada do workflow. Em produção, armazene a senha em um cofre, secret de container ou variável de ambiente. A chave hierárquica do.NET será Airflow__Senha; os dois sublinhados representam o separador de configuração. Nunca publique a credencial em appsettings.json, imagem Docker, log ou telemetria.
Execução do Serviço.NET
O exemplo usa o método POST para iniciar a execução do DAG etl_vendas. O usuário técnico precisa de somente as permissões necessárias para disparar e ler o DAG escolhido. O proxy reverso aceita os verbos POST e GET, o header Authorization e o tamanho máximo previsto para conf. O DAG é idempotente ou recebe uma chave de negócio que impeça processamento duplicado. O timeout do serviço é compatível com a duração esperada do workflow. Em produção, armazene a senha em um cofre, secret de container ou variável de ambiente. A chave hierárquica do.NET será Airflow__Senha; os dois sublinhados representam o separador de configuração. Nunca publique a credencial em appsettings.json, imagem Docker, log ou telemetria.
Conclusão
Implementar uma integração eficiente entre Apache Airflow e.NET 10 requer uma compreensão clara do papel de cada tecnologia e a criação de um contrato claro entre a aplicação transacional e a plataforma de dados. Este guia fornece um exemplo detalhado de como implementar essa solução, incluindo a configuração do serviço.NET, a configuração do servidor de Airflow e a execução do serviço.NET para disparar e monitorar DAGs.