SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistrano[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistranoCode Experts Learning
 
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsersGustavo Bellini Bigardi
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoRogerio Fontes
 
Workshop react + adonis.js
Workshop react + adonis.jsWorkshop react + adonis.js
Workshop react + adonis.jsDenis Velrino
 
O novo ASP.NET - ThinkUP! - Janeiro/2017
O novo ASP.NET - ThinkUP! - Janeiro/2017O novo ASP.NET - ThinkUP! - Janeiro/2017
O novo ASP.NET - ThinkUP! - Janeiro/2017Renato Groff
 
Performance de verdade com Phalcon Framework
Performance de verdade com Phalcon FrameworkPerformance de verdade com Phalcon Framework
Performance de verdade com Phalcon FrameworkJaime Neto
 
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsDevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsJúnior Porfirio
 
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobileXamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobileakamud
 
Certificação Zend Framework
Certificação Zend FrameworkCertificação Zend Framework
Certificação Zend FrameworkJaime Neto
 
Implementando APIs multiplataforma com o ASP.NET Core - Campus Party Brasil 2018
Implementando APIs multiplataforma com o ASP.NET Core - Campus Party Brasil 2018Implementando APIs multiplataforma com o ASP.NET Core - Campus Party Brasil 2018
Implementando APIs multiplataforma com o ASP.NET Core - Campus Party Brasil 2018Renato Groffe
 
Xamarin em 7 minutos
Xamarin em 7 minutosXamarin em 7 minutos
Xamarin em 7 minutosakamud
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Erik Cruz
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro...
 Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro... Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro...Renato Groff
 
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019Renato Groff
 
ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017Renato Groff
 
Orquestrando Aplicações PHP com Symfony
Orquestrando Aplicações PHP com SymfonyOrquestrando Aplicações PHP com Symfony
Orquestrando Aplicações PHP com SymfonyFlávio Lisboa
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?Letticia Nicoli
 
O novo ASP.NET - Junho/2016
O novo ASP.NET - Junho/2016O novo ASP.NET - Junho/2016
O novo ASP.NET - Junho/2016Renato Groff
 

Mais procurados (20)

[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistrano[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistrano
 
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - Introdução
 
SPA's com Blazor e .NET Core
SPA's com Blazor e .NET CoreSPA's com Blazor e .NET Core
SPA's com Blazor e .NET Core
 
Workshop react + adonis.js
Workshop react + adonis.jsWorkshop react + adonis.js
Workshop react + adonis.js
 
O novo ASP.NET - ThinkUP! - Janeiro/2017
O novo ASP.NET - ThinkUP! - Janeiro/2017O novo ASP.NET - ThinkUP! - Janeiro/2017
O novo ASP.NET - ThinkUP! - Janeiro/2017
 
Performance de verdade com Phalcon Framework
Performance de verdade com Phalcon FrameworkPerformance de verdade com Phalcon Framework
Performance de verdade com Phalcon Framework
 
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsDevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobileXamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
 
Certificação Zend Framework
Certificação Zend FrameworkCertificação Zend Framework
Certificação Zend Framework
 
Implementando APIs multiplataforma com o ASP.NET Core - Campus Party Brasil 2018
Implementando APIs multiplataforma com o ASP.NET Core - Campus Party Brasil 2018Implementando APIs multiplataforma com o ASP.NET Core - Campus Party Brasil 2018
Implementando APIs multiplataforma com o ASP.NET Core - Campus Party Brasil 2018
 
Xamarin em 7 minutos
Xamarin em 7 minutosXamarin em 7 minutos
Xamarin em 7 minutos
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro...
 Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro... Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - .NET SP - Novembro...
 
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
 
ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017
ASP.NET Core e Linux: Explorando novas fronteiras - OneDay - Junho/2017
 
Orquestrando Aplicações PHP com Symfony
Orquestrando Aplicações PHP com SymfonyOrquestrando Aplicações PHP com Symfony
Orquestrando Aplicações PHP com Symfony
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
 
O novo ASP.NET - Junho/2016
O novo ASP.NET - Junho/2016O novo ASP.NET - Junho/2016
O novo ASP.NET - Junho/2016
 

Semelhante a Entrega Contínua - Dev

[4Soft] Git para iniciantes
[4Soft] Git para iniciantes[4Soft] Git para iniciantes
[4Soft] Git para iniciantes4Soft
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsGilmar Pupo
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...fabio perrella
 
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasEscalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasCelso Crivelaro
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Jaime Neto
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHPFlávio Lisboa
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Felipe Klerk Signorini
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterEric Silva
 
Web Tools Pt B R
Web Tools Pt  B RWeb Tools Pt  B R
Web Tools Pt B Rguestb9d145
 
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresasDockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresasRafael Gomes
 
Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Marcos Paulo
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Alexandre Tarifa
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeAlessandro Binhara
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo maisakamud
 

Semelhante a Entrega Contínua - Dev (20)

W2py pyconpe
W2py pyconpeW2py pyconpe
W2py pyconpe
 
[4Soft] Git para iniciantes
[4Soft] Git para iniciantes[4Soft] Git para iniciantes
[4Soft] Git para iniciantes
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com Jenkins
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
 
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasEscalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Virtualenv e Pip
Virtualenv e PipVirtualenv e Pip
Virtualenv e Pip
 
Jugvale
JugvaleJugvale
Jugvale
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniter
 
Web Tools Pt B R
Web Tools Pt  B RWeb Tools Pt  B R
Web Tools Pt B R
 
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresasDockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
 
Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016
 
Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010Dev401 novos recursos do microsoft visual basic 2010
Dev401 novos recursos do microsoft visual basic 2010
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente Mainframe
 
Debug de cabo a rabo
Debug de cabo a raboDebug de cabo a rabo
Debug de cabo a rabo
 
Python 08
Python 08Python 08
Python 08
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais
 

Mais de Renzo Nuccitelli

Apresentação do projeto Python Birds
Apresentação do projeto Python BirdsApresentação do projeto Python Birds
Apresentação do projeto Python BirdsRenzo Nuccitelli
 
Confissões de um arquiteto de software
Confissões de um arquiteto de softwareConfissões de um arquiteto de software
Confissões de um arquiteto de softwareRenzo Nuccitelli
 
Angular js desenvolvimento de frontend zen - python nordeste
Angular js   desenvolvimento de frontend zen - python nordesteAngular js   desenvolvimento de frontend zen - python nordeste
Angular js desenvolvimento de frontend zen - python nordesteRenzo Nuccitelli
 
Google App Engine, Python e Startups - Rupy 2012
Google App Engine, Python e Startups - Rupy 2012Google App Engine, Python e Startups - Rupy 2012
Google App Engine, Python e Startups - Rupy 2012Renzo Nuccitelli
 
Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE Renzo Nuccitelli
 

Mais de Renzo Nuccitelli (9)

Programando a felicidade
Programando a felicidadeProgramando a felicidade
Programando a felicidade
 
Apresentação do projeto Python Birds
Apresentação do projeto Python BirdsApresentação do projeto Python Birds
Apresentação do projeto Python Birds
 
Testes automáticos
Testes automáticosTestes automáticos
Testes automáticos
 
Confissões de um arquiteto de software
Confissões de um arquiteto de softwareConfissões de um arquiteto de software
Confissões de um arquiteto de software
 
Angular js desenvolvimento de frontend zen - python nordeste
Angular js   desenvolvimento de frontend zen - python nordesteAngular js   desenvolvimento de frontend zen - python nordeste
Angular js desenvolvimento de frontend zen - python nordeste
 
Virtualenv e Pip
Virtualenv e PipVirtualenv e Pip
Virtualenv e Pip
 
Google App Engine, Python e Startups - Rupy 2012
Google App Engine, Python e Startups - Rupy 2012Google App Engine, Python e Startups - Rupy 2012
Google App Engine, Python e Startups - Rupy 2012
 
Pycon Brasil
Pycon BrasilPycon Brasil
Pycon Brasil
 
Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE
 

Entrega Contínua - Dev