python brasil[9] - entrega contínua

Post on 01-Nov-2014

572 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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: renzo@python.pro.brTwitter: @renzonuccitec

Roteiro

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

Problema base

Salvar Nome de Usuário

Controlador de Versão

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

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

renzo@python.pro.br@renzonuccitec

top related