Conteúdo da apresentação da PyCon US 2025.
Guia de transição do Jupyter Notebook para um sistema escalável
O Jupyter Notebook é uma ferramenta muito útil para análises interativas, como exploração de dados, visualização e ensino. No entanto, quando chega o momento de implantar código em ambiente de produção e a reutilização, a automação e a robustez passam a ser importantes, as limitações do notebook ficam evidentes. Este texto apresenta o processo e os principais aprendizados para transformar código escrito em Jupyter Notebook em um sistema escalável, mais fácil de manter e reproduzir.
Vantagens e desvantagens dos notebooks
- Vantagens: como é possível ver código e texto juntos e verificar os resultados imediatamente, ele é excelente para análise exploratória de dados e ensino. [00:03:18]
- Desvantagens: o estado das variáveis pode mudar conforme a ordem de execução das células, o controle de versão é difícil, e a automação e a reutilização do código são complicadas, o que se torna um obstáculo à escalabilidade. [00:04:24]
Quando fazer a transição para scripts?
- Quando for necessário implantar o código em ambiente de produção
- Quando outras pessoas precisarem reutilizar o código
- Quando for necessário executar o código automaticamente
- Quando a robustez do código for importante
- Quando o notebook tiver ficado complexo demais [00:05:32]
Etapas e ferramentas principais para a transição
1. Extração e conversão de código
- NBConvert & Jupytext: permitem extrair facilmente o código do notebook para um script Python. O Jupytext, em especial, também oferece sincronização entre notebook e script, o que o torna muito útil. [00:10:44]
2. Processo de refatoração
- Separar o trabalho por unidades funcionais: identifique cada etapa do notebook, crie funções adequadas para cada etapa e mova o código para essas funções. [00:12:52]
- Escrever testes: crie testes unitários ou de integração para garantir a correção do código. Isso é especialmente importante para evitar erros que podem surgir durante o processo de copiar e colar. [00:13:08]
- Gerenciamento de requisitos e dependências: deixe claros os módulos e suas dependências para que o código possa ser executado facilmente em outros ambientes. [00:13:15]
- Adoção de CI/CD: construa um pipeline de CI/CD (integração contínua/entrega contínua) para automatizar o processo de implantação. [00:13:15]
Dicas adicionais para melhorar a qualidade do código
- Formatação consistente do código: use um formatador de código para manter a consistência.
- Documentação: torne habitual documentar de forma clara o objetivo e o modo de uso do código.
- Separação de configurações: gerencie informações de configuração e ajustes em arquivos separados. [00:21:11]
Competências centrais e mudança de mentalidade
- Modularização: é importante ter a capacidade de decompor o código em funcionalidades modulares reutilizáveis.
- Automação: aumente a eficiência automatizando o workflow.
- Refatoração orientada a testes: melhore o código mantendo a estabilidade das funcionalidades por meio de testes.
Na fase de exploração, é importante aproveitar ativamente a flexibilidade do Jupyter Notebook e, para código de produção, adotar a mentalidade de convertê-lo em scripts automatizados, robustos e reproduzíveis. [00:22:16]
Ainda não há comentários.