Airflow

Um fluxo de trabalho (workflow) manual tende a ser mais lento, suscetível a erros e difícil de monitorar do que um fluxo automatizado. O Apache Airflow é uma plataforma de código aberto para desenvolver, agendar e monitorar fluxos de trabalho, como pipelines de dados orientados a lote (tradicionais, baseados em tempo ou disparados por eventos), fluxos de aprendizado de máquina, treinamento de modelos e cargas de trabalho baseadas em agentes ou LLMs. O framework extensível em Python do Airflow permite criar fluxos de trabalho que se conectam a praticamente qualquer tecnologia. Os fluxos de trabalho do Airflow são definidos inteiramente em Python e uma interface web ajuda a visualizar, gerenciar e depurar os fluxos de trabalho.

Um modelo que encapsula tudo o que é necessário para executar um fluxo de trabalho é chamado de DAG. DAG vem de Directed Acyclic Graph, em português Grafo Acíclico Dirigido (ou direcionado). Grafo é uma estrutura formada por nós (vértices) ligados por arestas; dirigido é porque cada aresta tem um sentido (se A aponta para B, isso significa “A vem antes de B”, e não o contrário); acíclico é porque não existem ciclos, ou seja, o fluxo termina (não entra em loop infinito). Alguns atributos de uma DAG incluem:

  • Agendamento: Quando o fluxo de trabalho deve ser executado.
  • Tarefas (tasks): Unidades discretas de trabalho executadas.
  • Dependências de tarefas: A ordem e as condições sob as quais as tarefas são executadas.
  • Retornos de chamada (callbacks): Ações a serem realizadas quando uma DAG ou tarefa muda de estado (por exemplo, on_success_callback ou on_failure_callback).
  • Parâmetros adicionais: Outros detalhes operacionais.

Instalação

Sua instalação envolve preparar um ambiente Python compatível, instalar o pacote do Airflow e suas dependências e configurar os componentes necessários para sua execução. Em uma instalação típica, isso inclui um banco de dados de metadados, responsável por armazenar informações sobre as DAGs e suas execuções, além de componentes como o scheduler, que determina quando as tarefas devem ser executadas, e o servidor web, que disponibiliza a interface gráfica. A configuração também envolve definir o executor e o diretório em que os arquivos das DAGs serão armazenados.

Tela DAGs: visão geral dos fluxos de trabalho

Após iniciar o Airflow, a interface web permite acompanhar os fluxos de trabalho configurados no ambiente (lista de DAGs). Cada DAG pode estar ativa ou pausada. Uma DAG ativa está habilitada para que o scheduler programe suas execuções conforme o agendamento configurado, enquanto uma DAG pausada não recebe novas execuções automáticas pelo agendamento, embora suas execuções anteriores permaneçam disponíveis para consulta e seja possível dispará-la manualmente.

Exemplo da tela DAGs. Fonte: Documentação Airflow
Exemplo da tela DAGs. Fonte: Documentação Airflow

Na lista de DAGs, encontramos também as seguintes informações e opções:

  • Owner – identifica o responsável indicado na configuração da DAG;
  • Runs – apresenta informações sobre as execuções da DAG, permitindo acompanhar seu histórico e seus resultados;
  • Schedule – informa a programação de execução definida para a DAG, que pode ser expressa por uma expressão cron, um intervalo ou outra configuração de agendamento compatível;
  • Last Run – indica a execução mais recente registrada para a DAG;
  • Next Run – informa quando está prevista a próxima execução, conforme o agendamento e o estado do fluxo de trabalho;
  • Recent Tasks – resume os estados recentes das tarefas, facilitando a identificação de execuções bem-sucedidas, falhas e tarefas em andamento;
  • Actions – reúne ações disponíveis para administrar a DAG, como pausá-la ou ativá-la e acessar opções de execução, conforme a interface e as permissões do usuário;
  • Links – oferece atalhos para páginas relacionadas à DAG, facilitando o acesso a informações e ferramentas de acompanhamento.

O campo Schedule merece atenção especial. Por exemplo, a expressão “0 0 * * *” significa que a DAG está programada para executar diariamente à meia-noite, de acordo com o fuso horário configurado para ela. Os cinco campos da expressão cron representam, respectivamente, minuto, hora, dia do mês, mês e dia da semana. O asterisco (*) indica que o campo aceita qualquer valor válido. Geralmente o horário é UTC (horário de Brasília é UTC-3, então algo que roda meia-noite apareceria como 2026-10-08, 03:00:00, por exemplo).

Visualizações disponíveis para uma DAG

Ao selecionar uma DAG, é possível acessar diferentes visualizações para compreender sua estrutura, acompanhar suas execuções e investigar problemas. Na interface do Airflow 2.3.0, encontramos as seguintes opções:

  • Grid – apresenta as execuções da DAG ao longo do tempo e os estados de suas tarefas em uma grade, facilitando a identificação de falhas, atrasos e padrões de execução;
  • Graph – representa graficamente as tarefas e suas dependências, permitindo visualizar a sequência lógica do fluxo e identificar quais tarefas dependem de outras;
  • Calendar – exibe o histórico de execuções em formato de calendário, ajudando a observar padrões de sucesso e falha ao longo dos dias;
  • Task Duration – mostra a duração das tarefas em execuções anteriores, permitindo identificar variações e possíveis gargalos de desempenho;
  • Task Tries – permite analisar as tentativas de execução das tarefas, ajudando a identificar tarefas que falham repetidamente ou precisam de novas tentativas;
  • Landing Times – permite examinar os horários em que as tarefas chegam aos seus estados de execução ou conclusão, ajudando a investigar atrasos em relação ao esperado;
  • Gantt – o diagrama de Gantt apresenta as tarefas em uma linha do tempo, permitindo comparar suas durações e identificar sobreposições e períodos de espera;
  • Details – reúne informações de configuração e metadados da DAG, úteis para consultar suas propriedades;
  • Code – exibe o código-fonte que define a DAG, permitindo consultar como o fluxo de trabalho foi implementado;
  • Audit Log – apresenta registros de auditoria das ações realizadas no ambiente, quando disponíveis, ajudando a acompanhar alterações e operações administrativas.

Cada visualização atende a uma necessidade diferente. Enquanto a tela Graph é especialmente útil para entender as dependências entre tarefas, a tela Grid facilita o acompanhamento do histórico de execução e a identificação rápida de problemas.

Tela Grid de uma DAG. Fonte: Documentação Airflow
Tela Grid de uma DAG. Fonte: Documentação Airflow

A visualização Grid combina uma representação temporal das execuções com uma grade de estados das tarefas. A primeira linha apresenta barras que representam as execuções da DAG (DAG Runs). O comprimento de cada barra é proporcional à duração daquela execução: quanto maior a barra, mais tempo a execução levou para ser concluída.

As linhas seguintes representam as tarefas (tasks) da DAG. Cada coluna corresponde a uma execução específica, e cada quadrado representa uma instância de uma tarefa naquela execução (Task Instance). A cor de cada quadrado indica o estado da instância, permitindo identificar rapidamente quais tarefas foram concluídas, quais falharam e quais ainda estão em andamento ou aguardando alguma condição.

Na versão 2.3.0, os principais estados e suas cores são:

  • queued (cinza) – a tarefa foi colocada na fila do executor e aguarda o início da execução;
  • running (verde-limão) – a tarefa está sendo executada;
  • success (verde escuro) – a tarefa foi concluída com sucesso;
  • failed (vermelho) – a tarefa terminou com falha;
  • up_for_retry (amarelo-dourado) – a tarefa falhou, mas ainda tem novas tentativas previstas conforme sua configuração;
  • up_for_reschedule (azul-claro) – a tarefa, geralmente um sensor configurado para esse comportamento, aguarda uma nova oportunidade de execução;
  • upstream_failed (laranja) – a tarefa não foi executada com sucesso porque uma tarefa da qual ela depende falhou;
  • skipped (rosa) – a tarefa foi ignorada, por exemplo, devido à lógica de ramificação do fluxo de trabalho ou a uma condição que determina seu não processamento;
  • scheduled (bege) – a tarefa foi identificada pelo scheduler como pronta para ser executada assim que as condições necessárias forem atendidas;
  • deferred (roxo) – a tarefa suspendeu sua execução e aguarda um evento ou uma condição externa, geralmente por meio de um mecanismo de trigger;
  • no_status (branco) – a instância ainda não possui um estado registrado, o que pode ocorrer, por exemplo, antes de sua execução ser iniciada.

Essas cores facilitam a leitura do histórico e ajudam a identificar problemas sem que seja necessário abrir cada tarefa individualmente. Ao selecionar uma barra de execução ou um quadrado da grade, é possível acessar detalhes adicionais sobre aquela execução ou instância, incluindo informações úteis para investigar falhas.

Tela Graph. Fonte: Documentação Airflow
Tela Graph. Fonte: Documentação Airflow

As mesmas cores utilizadas na tela Grid também aparecem na visualização Graph, mas com uma finalidade complementar. Nessa tela, cada nó representa uma tarefa e as ligações entre os nós indicam as dependências existentes entre elas.

Essa representação é especialmente útil para compreender como uma falha se propaga pelo fluxo de trabalho. Se uma tarefa falha, as tarefas dependentes podem deixar de ser executadas, dependendo das regras de dependência e das condições de disparo configuradas. A visualização em grafo ajuda a localizar o ponto inicial do problema e a entender quais partes do pipeline foram afetadas.

Referência: a descrição da interface neste texto considera o Apache Airflow 2.3.0, conforme a documentação oficial da interface web. A aparência e algumas funcionalidades podem variar entre versões.

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.