Python Brasil[9] - Entrega Contínua
-
Upload
renzo-nuccitelli -
Category
Technology
-
view
584 -
download
1
description
Transcript of Python Brasil[9] - Entrega Contínua
Entrega Contínua - DevDênis Costa e Renzo Nuccitelli
Bio - Renzo Nuccitelli
Engenheiro de Computação - ITA 2008EmpreendedorProfessor da Fatec Instrutor Python Pro (www.python.pro.br)Contatos
email: [email protected]: @renzonuccitec
Roteiro
Controlador de VersãoSetupRequisitos / Feature BranchModularizaçãoTestes AutomáticosBuildDeployAo vivoFalá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çãoCriar Bot no Google AccountsColocar 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ódigoAdicionar servidor GAEIndicar porta, padrão 8080Indicar working directory como srcEditar src/app.yaml com id de sua AppHabilitar 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 caroR: Menor que o débito técnico
Falácias
Constrói quanto tiver tempoR: Aumenta débito técnico, pressão do cliente
Não temos grana para ferramentasR: Todas ferramentas são grátis ou até open source
Vai ser entregue sem qualidadeR: 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/10Python para quem estudou Java - 18/11Python para quem sabe Python - 19/11
Obrigado
[email protected]@renzonuccitec