Introdução
Na aula anterior, exploramos os conceitos fundamentais de orquestração de dados e identificamos as limitações do cron para pipelines complexos. Agora é hora de colocar a mão na massa e experimentar uma ferramenta moderna de orquestração.
O Prefect se destaca por sua abordagem Python-first, oferecendo uma sintaxe adequada para desenvolvedores que já dominam Python.
Info!
O Prefect foi projetado para ser amigável ao desenvolvedor, mantendo a simplicidade sem sacrificar a robustez.
Nesta aula prática, iremos:
- Configurar um ambiente de orquestração local com Prefect
- Criar e executar nossos primeiros flows e tasks
- Explorar a interface web para monitoramento
- Implementar pipelines com dependências e tratamento de erros
Configurando o Ambiente
Vamos começar configurando um ambiente local do Prefect usando Docker.
Isso nos permite experimentar a ferramenta sem a necessidade de instalações complexas ou configurações de infraestrutura.
Exercício
Docker Compose
O Prefect oferece uma imagem Docker oficial que facilita a execução local. Vamos configurar um servidor Prefect usando Docker Compose.
Exercício
Exercício
Exercício
Exercício
Exercício
Primeiro Flow
Agora vamos criar nosso primeiro flow com Prefect.
Um flow é a unidade principal de organização no Prefect, representando um conjunto de tarefas (tasks) que devem ser executadas.
Instalação Local
Para desenvolver localmente, precisamos instalar o Prefect em nossa máquina.
Atenção!
Nosso esquema será:
- O servidor Prefect rodando em Docker
- Tarefas enviadas para o servidor via API.
- Isto será rodado localmente (VS Code).
- As tarefas serão definidas em arquivos Python.
- Precisaremos de um ambiente virtual!
Exercício
Código Básico
Exercício
Exercício
Exercício
Exercício
Exercício
Explorando a Interface
A interface web do Prefect oferece visibilidade completa sobre a execução dos flows.
Uma das principais vantagens da orquestração é a observabilidade dos processos.
Vamos explorar suas funcionalidades principais.
Exercício
Exercício
Exercício
Exercício
Exercício
Exercício
Vamos agora criar um exemplo mais realista, simulando tarefas que demandam tempo de processamento.
Isso nos permitirá observar melhor o comportamento do Prefect durante a execução.
Exercício
Exercício
Exercício
Exercício
Exercício
Exercício
Paralelização de Tarefas
Uma das grandes vantagens dos orquestradores é a capacidade de executar tarefas independentes em paralelo. Vamos modificar nosso flow para demonstrar essa funcionalidade.
Exercício
Exercício
Exercício
Exercício
Dependências Entre Tarefas
Vamos agora implementar um pipeline mais realista com dependências entre tarefas, simulando um processo de ETL onde cada etapa depende da anterior.
Exercício
Exercício
Exercício
Exercício
Exercício
Tratamento de Erros
Uma das grandes vantagens dos orquestradores é o tratamento robusto de erros. Vamos simular falhas para observar como o Prefect lida com essas situações.
Exercício
Exercício
Exercício
Exercício
Exercício
Answer
- Interações com APIs externas que podem falhar temporariamente.
- Tarefas que dependem de recursos externos, como bancos de dados ou serviços de fila.
Exercício
Pipeline de Dados
Vamos agora criar um pipeline mais próximo da realidade, simulando um processo de ETL que poderia ser usado em produção.
Exercício
Exercício
Exercício
Exercício
Exercício
Executando Múltiplas Vezes
Para simular um ambiente mais próximo da produção, vamos executar o pipeline várias vezes e observar o histórico de execuções.
Exercício
Exercício
Agendamento
Uma das funcionalidades mais importantes dos orquestradores é a capacidade de agendar execuções regulares de pipelines.
O Prefect oferece várias formas de configurar agendamentos, desde intervalos simples até expressões cron.
Deployments
No Prefect, o agendamento é feito através de deployments. Um deployment é uma configuração que define como e quando um flow deve ser executado.
Exercício
Exercício
Criando um Deployment
Agora vamos criar um deployment que executará nosso flow automaticamente em intervalos regulares.
Exercício
Exercício
Exercício
Exercício
O Prefect também suporta expressões cron tradicionais para agendamentos mais complexos.
Exercício
Exercício
Exercício
Múltiplos Agendamentos
Podemos ter múltiplos deployments do mesmo flow com agendamentos diferentes.
Exercício
Exercício
Exercício
Exercício
Agendamento Personalizado
Para cenários mais complexos, podemos criar agendamentos personalizados.
Exercício
Exercício
Exercício
Parando Deployments
Para parar os deployments em execução, use Ctrl+C nos terminais onde estão rodando, ou mate os processo no gerenciador de tarefas!
Um padrão comum em produção é agendar pipelines que executam regularmente, mas que possuem lógica condicional para processar apenas quando há dados novos disponíveis.
Exercício
Exercício
Exercício
Exercício
Exercício
Exercício
Dica!
Este padrão de "pipeline agendado com lógica condicional" é muito comum em produção.
Exercício
Experimentação Livre
Agora é sua vez de experimentar e criar algo único!
Exercício
Exercício
Limpeza
Para finalizar a aula, vamos fazer a limpeza do ambiente.
Exercício
Por hoje é só!
Na próxima aula, exploraremos como integrar essas ferramentas em arquiteturas de dados mais complexas.