Lição 6: Fluxos de trabalho do mundo real na prática
Objetivos de aprendizado:
- Combinar decomposição de tarefas, gerenciamento de estado e tratamento de erros para projetar fluxos de trabalho completos
- Entender os padrões de fluxo de trabalho por trás de três cenários de nível de produção
- Dominar técnicas de observabilidade e depuração de fluxos de trabalho
Pré-requisitos: Lição 5: Tratamento de erros e estratégias de retentativa
Da teoria à prática
Ao longo das cinco primeiras lições, cobrimos os blocos de construção dos fluxos de trabalho: passos, estado, decomposição e tratamento de erros. Agora vamos juntá-los e construir três fluxos de trabalho de nível de produção tirados de cenários reais.
Os três fluxos de trabalho desta lição:
- Pipeline de refatoração de código: refatorar código legado para padrões modernos, cobrindo análise, planejamento, execução, testes e verificação
- Pipeline de geração de documentação: gerar automaticamente documentação de API a partir do código, cobrindo extração, geração de exemplos, renderização e publicação
- Fluxo de automação de testes: um fluxo de trabalho de testes de ponta a ponta, cobrindo preparação de ambiente, testes em paralelo, agregação de resultados e geração de relatório
Cada fluxo de trabalho mostra:
- Uma decomposição completa da tarefa
- Gerenciamento de estado e design de checkpoints
- Estratégias de tratamento de erros e recuperação
- Suporte a observabilidade e depuração1
Cenário 1: pipeline de refatoração de código
Requisitos
Refatorar um projeto de front-end legado de 50 componentes, de componentes de classe para componentes de função + Hooks.
Desafios:
- Os componentes dependem uns dos outros, então você não pode refatorá-los em uma ordem arbitrária
- A refatoração pode quebrar comportamento, então ela precisa de verificação por testes
- 50 componentes não podem ser concluídos em uma única conversa; eles precisam de processamento em paralelo2
Decomposição da tarefa
O fluxo de trabalho tem 6 fases. As duas primeiras podem processar componentes em paralelo; as fases seguintes rodam na ordem das dependências.
Implementação completa
Pontos centrais do design
1. Estratégia de checkpoint: salvar depois que cada lote termina, para que você nunca refatore de novo o que já foi feito
2. Execução em paralelo: componentes do mesmo lote podem ser refatorados em paralelo (eles não dependem uns dos outros)
3. Mecanismo de retentativa: a falha de um componente não afeta os outros; use Promise.allSettled para coletar todos os resultados
4. Loop de correção: em caso de falha nos testes, tenta corrigir automaticamente, até 3 vezes
5. Observabilidade: cada fase registra logs claros, e o estado é persistido em armazenamento externo3
Cenário 2: pipeline de geração de documentação
Requisitos
Gerar documentação de API completa para um serviço com 30 endpoints REST, incluindo descrições dos endpoints, exemplos de requisição/resposta e explicações dos códigos de erro.
Decomposição da tarefa (padrão fan-out/agregação)
Características centrais:
- Padrão fan-out/agregação: 30 endpoints geram documentação em paralelo, e no fim tudo é agregado
- Sem estado: a tarefa é rápida o bastante (< 10 minutos) para não precisar de checkpoints
- Idempotente: você pode rodar de novo a qualquer momento e sobrescrever o arquivo de saída1
Cenário 3: fluxo de automação de testes
Requisitos
Rodar testes de ponta a ponta em vários ambientes (local, staging, produção), coletar resultados de testes e métricas de desempenho, e gerar um relatório comparativo.
Implementação completa
Características centrais:
- Testes em paralelo: vários ambientes rodam seus testes ao mesmo tempo, cortando drasticamente o tempo total
- Tolerância a falhas: a falha de um ambiente não afeta os outros
- Retentativa inteligente: testes que falham repetem automaticamente (quedas de rede e falhas transitórias são comuns)
- Análise de falhas: sugestões de correção para as falhas são geradas automaticamente1
Observabilidade de fluxos de trabalho
Um bom fluxo de trabalho deve conseguir responder, a qualquer momento:
- Quanto ele já avançou? (X/Y concluídos)
- Quanto tempo mais ele provavelmente vai levar?
- Que erros ele encontrou?
- Onde estão os gargalos de desempenho?
Se você não consegue responder a essas perguntas, seus logs e seu acompanhamento de estado não estão detalhados o suficiente. Depurar um fluxo de trabalho se apoia nesses registros, não em adivinhação.
Implementando a observabilidade
Aquele trecho dentro de summary() que ordena por duração e imprime apenas os três passos mais lentos é a forma mais simples de profiling de desempenho: meça quanto tempo cada passo levou e depois encontre o gargalo a partir dos dados, em vez de adivinhar qual passo é lento.
Parabéns por concluir o curso de Design de Fluxos de Trabalho com Agentes.
Agora você domina:
- Os conceitos centrais dos fluxos de trabalho e onde eles se encaixam
- As três estratégias de decomposição de tarefas
- Gerenciamento de estado e o mecanismo de checkpoint
- Tratamento de erros e estratégias de retentativa
- Três fluxos de trabalho de nível de produção tirados de cenários reais
Próximos passos:
- Pratique um fluxo de trabalho simples (< 5 passos) em um dos seus projetos
- Acrescente complexidade aos poucos (paralelismo, checkpoints, tratamento de erros)
- Compartilhe o design do seu fluxo de trabalho e receba feedback da comunidade
- Explore tópicos mais avançados (fluxos de trabalho distribuídos, frameworks de orquestração de fluxos de trabalho, editores visuais de fluxos de trabalho)