31
Entrega Contínua - Dev Dênis Costa e Renzo Nuccitelli

Python Brasil[9] - Entrega Contínua

Embed Size (px)

DESCRIPTION

Slides de Palestra e Treinamento feitos na Python Brasil[9] sobre Entrega Contínua utilizando Google App Engine

Citation preview

Page 1: Python Brasil[9] - Entrega Contínua

Entrega Contínua - DevDênis Costa e Renzo Nuccitelli

Page 2: Python Brasil[9] - Entrega Contínua

Bio - Renzo Nuccitelli

Engenheiro de Computação - ITA 2008EmpreendedorProfessor da Fatec Instrutor Python Pro (www.python.pro.br)Contatos

email: [email protected]: @renzonuccitec

Page 3: Python Brasil[9] - Entrega Contínua

Roteiro

Controlador de VersãoSetupRequisitos / Feature BranchModularizaçãoTestes AutomáticosBuildDeployAo vivoFalácias

Page 4: Python Brasil[9] - Entrega Contínua

Problema base

Salvar Nome de Usuário

Page 5: Python Brasil[9] - Entrega Contínua

Controlador de Versão

Page 7: Python Brasil[9] - Entrega Contínua

Setup

Page 8: Python Brasil[9] - Entrega Contínua

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)

Page 9: Python Brasil[9] - Entrega Contínua

Setup

Page 10: Python Brasil[9] - Entrega Contínua

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

Page 11: Python Brasil[9] - Entrega Contínua

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)

Page 12: Python Brasil[9] - Entrega Contínua

Requisitos e Feature Branch

Page 13: Python Brasil[9] - Entrega Contínua

Modularização

Page 14: Python Brasil[9] - Entrega Contínua

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/

Page 15: Python Brasil[9] - Entrega Contínua

Modularização - Web Service

Prós: independência de tecnologia, coesão e desacoplamento

Contras: Exige maturidade e disciplina;Latência

Page 16: Python Brasil[9] - Entrega Contínua

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

Page 18: Python Brasil[9] - Entrega Contínua

Modularização - Interna

Page 19: Python Brasil[9] - Entrega Contínua

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

Page 20: Python Brasil[9] - Entrega Contínua

Modularização - Interna

https://github.com/renzon/pswdless

https://pswdless.appspot.com

http://adm.python.pro.br

Page 21: Python Brasil[9] - Entrega Contínua

Modularização - Interna

Prós: Baixa Latência Menos burocracia que pypi

Contras:Risco de equipe violar arquitetura

Page 22: Python Brasil[9] - Entrega Contínua

Modularização - Frontend

Fica pro Rupy ;D

Page 23: Python Brasil[9] - Entrega Contínua

Testes Automáticos

Page 24: Python Brasil[9] - Entrega Contínua

Testes Automáticos

Teste Unitário (Command)

Teste de Integração (CommandList ou Facade)

Teste de Aceitação (Handlers)

testloader.py

Page 25: Python Brasil[9] - Entrega Contínua

Build

Page 26: Python Brasil[9] - Entrega Contínua

Deploy

Page 27: Python Brasil[9] - Entrega Contínua

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

Page 28: Python Brasil[9] - Entrega Contínua

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

Page 29: Python Brasil[9] - Entrega Contínua

Onde Aprender Mais

Continuous Delivery - Jez Humble - David Farley

Todos os links dessa apresentação

Page 30: Python Brasil[9] - Entrega Contínua

Onde Aprender Mais

Próximos Cursos:Objetos Pythonicos - 29/10Python para quem estudou Java - 18/11Python para quem sabe Python - 19/11

Page 31: Python Brasil[9] - Entrega Contínua

Obrigado

[email protected]@renzonuccitec