Este documento discute os princípios e práticas da entrega contínua de software usando o Google App Engine. Ele aborda tópicos como controle de versão, requisitos, modularização, testes automatizados, build e deploy de forma contínua para melhorar a qualidade e velocidade de entrega.
2. 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
8. 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)
10. 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
11. 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)
14. 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/
15. Modularização - Web Service
Prós: independência de tecnologia, coesão e
desacoplamento
Contras: Exige maturidade e disciplina;
Latência
16. 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
17. 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
19. 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
27. 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
28. 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