Entrega Contínua - Dev
Dênis Costa e Renzo Nuccitelli
Bio - Renzo Nuccitelli
Engenheiro de Computação - ITA 2008
Empreendedor
Professor da Fatec
Instrutor Python Pro (www.python.pro.br)
Contatos
email: renzo@python.pro.br
Twitter: @renzonuccitec
Roteiro
Controlador de Versão
Setup
Requisitos / Feature Branch
Modularização
Testes Automáticos
Build
Deploy
Ao vivo
Falácias
Problema base
Salvar Nome de Usuário
Controlador de Versão
Fonte
Todo código está no github, separado em
passos.
https://github.com/renzon/gae-continuous-
delivery
Setup
Setup - Google App Engine
Criar conta appengine.google.com (cuidado
celular Oi)
Criar Aplicação
Criar Bot no Google Accounts
Colocar Bot como developer da aplicação (ver
próxima imagem)
Setup
Setup - virtualenv
Navegar até “raiz do projeto/pyenv”
rodar ./venv.sh
Verificar a pasta pyenv / Explicar link simbólico lib
no src
Obs: pode ser executado toda vez que se alterar o
requirements.txt, para atualizar dependências
Setup - Pycharm
Setar src e test como fonte de código
Adicionar servidor GAE
Indicar porta, padrão 8080
Indicar working directory como src
Editar src/app.yaml com id de sua App
Habilitar Suporte Google App Engine
Apertar play ou debug
UFA (ainda bem que só tem que fazer uma
vez)
Requisitos e Feature Branch
Modularização
Modularização - Web Service
Comunicação via interface web (JSON ou
XML)
Amazon: “Anyone who doesn’t do this will be
fired. Thank you; have a nice day!” - http:
//apievangelist.com/2012/01/12/the-secret-to-
amazons-success-internal-apis/
Modularização - Web Service
Prós: independência de tecnologia, coesão e
desacoplamento
Contras: Exige maturidade e disciplina;
Latência
Modularização - pypi
Criar pacote no pypi
https://github.com/renzon/pswdclient - cliente para
abstrair comunicação JSON
Prós: Diminui latência se não precisar acessar
serviço externo; desacoplamento e coesão
Contras: Gestão de dependência pode ficar
complexa
Modularização - Interna
Business agnóstico
Architecure the lost years (Uncle Bob): http:
//confreaks.com/videos/759-rubymidwest2011-
keynote-architecture-the-lost-years
https://github.com/renzon/gaebusiness
Modularização - Interna
Modularização - Interna
Command: Unidade básica:
CommandList: Composite de Commands
Facade: Interface de um módulo expondo
Commands/CommandList
Web: Executa lógica de internet e negócio através de
facades
Modularização - Interna
https://github.com/renzon/pswdless
https://pswdless.appspot.com
http://adm.python.pro.br
Modularização - Interna
Prós:
Baixa Latência
Menos burocracia que pypi
Contras:
Risco de equipe violar arquitetura
Modularização - Frontend
Fica pro Rupy ;D
Testes Automáticos
Testes Automáticos
Teste Unitário (Command)
Teste de Integração (CommandList ou Facade)
Teste de Aceitação (Handlers)
testloader.py
Build
Deploy
Falácias
Deploy com um click é impossível!
R: livro Continuous Delivery; o QMagico faz;
Nesse Treinamento fizemos
Construir o deploy contínuo custa caro
R: Menor que o débito técnico
Falácias
Constrói quanto tiver tempo
R: Aumenta débito técnico, pressão do cliente
Não temos grana para ferramentas
R: Todas ferramentas são grátis ou até open
source
Vai ser entregue sem qualidade
R: Teste automáticos, Homologação
Onde Aprender Mais
Continuous Delivery - Jez Humble - David
Farley
Todos os links dessa apresentação
Onde Aprender Mais
Próximos Cursos:
Objetos Pythonicos - 29/10
Python para quem estudou Java - 18/11
Python para quem sabe Python - 19/11
Obrigado
renzo@python.pro.br
@renzonuccitec

Python Brasil[9] - Entrega Contínua