SlideShare uma empresa Scribd logo
Sim, existe vida
além do FTP
GUSTAVO PEREIRA
@ DARKMIRA TOUR PHP 2017
Precisamos falar sobre...
Ok, mas quem sou eu?
Gustavo Pereira
12 anos na área de TI
Bacharel em Ciências da Computação
Tecnólogo em Processamento de Dados
Zend Certified PHP Engineer 5.5
Desenvolvedor PL na MT4 Networks
http://www.mt4networks.com.br
Gosto pra caramba de
Comunidades
(e você também deveria)
Sim, existe vida além do FTP!
O problema do
’publicar na mão’
Segurança
Sim, existe vida além do FTP!
Sim, existe vida além do FTP!
Sim, existe vida além do FTP!
O problema do
’publicar na mão’
SegurançaMas aí eu
uso o SFTP
e...
O SFTP(*) pode te levar a
Falhar miseravelmente
Sim, existe vida além do FTP!
Estou 'subindo os arquivos em
produção', um a um e aí na hora
acontece algo que
foge ao nosso controle
Ou ainda o(a) colega de trabalho está
fazendo a mesma coisa...
... Com os mesmos arquivos.
Ah Gustavo, mas eu agora só uso o SCP
$ scp bolinha.tar.gz install@bolinha.com.br:~/bolinha20170523142023.tar.gz
 OK, mas se ocorre um bug em produção
e você precisa de um rollback, o que faz?
 OK, mas se você descompacta num dir
errado?
 OK, mas se seu cliente está utilizando a
aplicação naquele momento?
Muda o método,
Mas continuam os erros!
E a tentação de
alterar arquivos em
produção?
(é coisa rápida)
E seu controle de versão, como é
usado?
O time inteiro comitando só na
master?
Sim, existe vida além do FTP!
Deploy sem muito controle
=
RETRABALHO
Pense num
mundo de possibilidades
que uma estratégia de
deploy pode te oferecer
• Rollbacks FTW
• One-time setup
• Controle do que está
sendo publicado
• ”builds” e quem sabe
um CI, hein hein?
O ”dia do deploy” não será mais
aquela data tão temida
Automação de tarefas ’comuns’
namespace :puma do
desc ’Garantindo que o dir. images seja acessivel pelo nginx'
task :make_dirs do on roles(:app) do
execute ”chown –R install:www-data /var/www/images"
execute ” composer self-update ”
end
end
Isole os problemas
Um commit
deve sempre
resolver um
problema
apenas!
Menos risco de perder o fds
num deploy desastrado
Sim, existe vida além do FTP!
Ok, mas como começar a
mudar?
(aqui vão algumas dicas!)
Uso efetivo /
correto do
(insira aqui
seu VCS
preferido)
Configure seu ambiente de
”homologação” para ser
idêntico ao de produção
(e o de dev também se possível)
Seu código
precisa passar
por uma bateria
de testes
automatizados
Suas alterações
disponíveis
e visíveis
a todos da equipe
Dividir para conquistar:
publique as pequenas
alterações
Proponha uma
evolução de acordo
com o que você
pode gastar
E com o $$$ que
seu cliente está
disposto a pagar
Proponha uma
estratégia/stack
de deploy clara
Snapshot = um ’pacote’
que representa o sistema
como um todo naquele
momento
Considere a possibilidade de pensar numa
metodologia Ágil de desenvolvimento
Sim, existe vida além do FTP!
Sim, existe vida além do FTP!
https://github.com/mislav/git-deploy
Setup bem simples
https://github.com/mislav/git-deploy
Sim, existe vida além do FTP!
Uma regra
para cada ambiente
Uma regra para cada
ambiente
E na hora do deploy...
$ cap production deploy
$ cap staging deploy
$ cap production deploy:rollback
Sim, existe vida além do FTP!
Mas eu gostaria de...
https://stackshare.io/
Sim, existe vida além do FTP!
Concluindo:
Existe uma infinidade de
ferramentas...
Mas já podemos pensar em
Continuous Integration
Continuous Integration is a software development practice where
members of a team integrate their work frequently, usually each
person integrates at least daily - leading to multiple integrations per
day.
Each integration is verified by an automated build to detect
integration errors as quickly as possible. Many teams find that this
approach leads to significantly reduced integration problems and
allows a team to develop cohesive software more rapidly and quit
using FileZilla or ’solo SCP’. (Martin Fowler)
http://bit.ly/checklist-cd
https://codeship.com/continuo
us-integration-essentials
https://chrisshayan.atlassian.net/wiki/display/my/2013/07/23/Continuous+Delivery+Matrix?ut
m_source=Codeship&utm_medium=CI-Guide
Perguntas?
Obrigado!
@gustavosteam
gustavoper@gmail.com
https://br.linkedin.com/in/gustavoperphp

Mais conteúdo relacionado

Mais procurados

Testes e depuração de código com Python
Testes e depuração de código com PythonTestes e depuração de código com Python
Testes e depuração de código com Python
Dorneles Treméa
 
Postgres Big data
Postgres Big dataPostgres Big data
Postgres Big data
Fabio Telles Rodriguez
 
Instalação e uso do phpVirtualBox
Instalação e uso do phpVirtualBoxInstalação e uso do phpVirtualBox
Instalação e uso do phpVirtualBox
netinhoteixeira
 
Puppet webcast 4linux
Puppet webcast 4linuxPuppet webcast 4linux
Puppet webcast 4linux
Jose Augusto Carvalho
 
Como usar o virtualbox-passo a passo
Como usar o virtualbox-passo a passoComo usar o virtualbox-passo a passo
Como usar o virtualbox-passo a passo
Décio Araújo
 
Trabalhando com Logs no PostgreSQL
Trabalhando com Logs no PostgreSQLTrabalhando com Logs no PostgreSQL
Trabalhando com Logs no PostgreSQL
Fabio Telles Rodriguez
 
Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)
Jose Augusto Carvalho
 
Apostila metasploit
Apostila metasploitApostila metasploit
Apostila metasploit
Rogério Sampaio
 
Consegi 2011: Puppet
Consegi 2011: PuppetConsegi 2011: Puppet
Consegi 2011: Puppet
Jose Augusto Carvalho
 
Slide curso metasploit
Slide curso metasploitSlide curso metasploit
Slide curso metasploit
Roberto Soares
 
Lidando com operações assíncronas no redux com redux saga
Lidando com operações assíncronas no redux com redux sagaLidando com operações assíncronas no redux com redux saga
Lidando com operações assíncronas no redux com redux saga
Hugo Bessa
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
Jose Augusto Carvalho
 
Estrutura de repetição
Estrutura de repetiçãoEstrutura de repetição
Estrutura de repetição
Alessandra Sra JM
 
Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"
Roberto Soares
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e Mcollective
Jose Augusto Carvalho
 
[Tutorial] metasploit
[Tutorial] metasploit[Tutorial] metasploit
[Tutorial] metasploit
Adriano Santos
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
Adriano Petrich
 
Python3
Python3Python3
Python3
guest5a899e
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de software
ricardophp
 
Trabalhando de forma profissional com silex
Trabalhando de forma profissional com silexTrabalhando de forma profissional com silex
Trabalhando de forma profissional com silex
Michael Douglas
 

Mais procurados (20)

Testes e depuração de código com Python
Testes e depuração de código com PythonTestes e depuração de código com Python
Testes e depuração de código com Python
 
Postgres Big data
Postgres Big dataPostgres Big data
Postgres Big data
 
Instalação e uso do phpVirtualBox
Instalação e uso do phpVirtualBoxInstalação e uso do phpVirtualBox
Instalação e uso do phpVirtualBox
 
Puppet webcast 4linux
Puppet webcast 4linuxPuppet webcast 4linux
Puppet webcast 4linux
 
Como usar o virtualbox-passo a passo
Como usar o virtualbox-passo a passoComo usar o virtualbox-passo a passo
Como usar o virtualbox-passo a passo
 
Trabalhando com Logs no PostgreSQL
Trabalhando com Logs no PostgreSQLTrabalhando com Logs no PostgreSQL
Trabalhando com Logs no PostgreSQL
 
Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)
 
Apostila metasploit
Apostila metasploitApostila metasploit
Apostila metasploit
 
Consegi 2011: Puppet
Consegi 2011: PuppetConsegi 2011: Puppet
Consegi 2011: Puppet
 
Slide curso metasploit
Slide curso metasploitSlide curso metasploit
Slide curso metasploit
 
Lidando com operações assíncronas no redux com redux saga
Lidando com operações assíncronas no redux com redux sagaLidando com operações assíncronas no redux com redux saga
Lidando com operações assíncronas no redux com redux saga
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
 
Estrutura de repetição
Estrutura de repetiçãoEstrutura de repetição
Estrutura de repetição
 
Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e Mcollective
 
[Tutorial] metasploit
[Tutorial] metasploit[Tutorial] metasploit
[Tutorial] metasploit
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
 
Python3
Python3Python3
Python3
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de software
 
Trabalhando de forma profissional com silex
Trabalhando de forma profissional com silexTrabalhando de forma profissional com silex
Trabalhando de forma profissional com silex
 

Semelhante a Sim, existe vida além do FTP!

DevOps Primeiros Passos
DevOps Primeiros PassosDevOps Primeiros Passos
DevOps Primeiros Passos
Fernanda Martins
 
Existe Vida além do FTP!
Existe Vida além do FTP! Existe Vida além do FTP!
Existe Vida além do FTP!
Gustavo Pereira
 
Cygwin
CygwinCygwin
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
Felipe Klerk Signorini
 
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
iMasters
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOps
Leonardo Comelli
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuida
Leonardo Kobus
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Thiago Rodrigues
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
Jaime Neto
 
Inovando na Plataforma Java
Inovando na Plataforma JavaInovando na Plataforma Java
Inovando na Plataforma Java
Wanderson Oliveira
 
Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma Java
Eteg
 
PaaS - OpenShift como plataforma pública
PaaS - OpenShift como plataforma públicaPaaS - OpenShift como plataforma pública
PaaS - OpenShift como plataforma pública
Getup Cloud
 
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
Getup Cloud
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
PrinceGuru MS
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
Felipe Vargas Rigo
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
Flávio Lisboa
 
Desenvolva uma app Java web em poucos passos, com o Forge
Desenvolva uma app Java web em poucos passos, com o ForgeDesenvolva uma app Java web em poucos passos, com o Forge
Desenvolva uma app Java web em poucos passos, com o Forge
Eder Magalhães
 
Quem e dev ops
Quem e dev opsQuem e dev ops
Quem e dev ops
Andre "Ramoni" Guimaraes
 
Fedora 11 Release Party
Fedora 11 Release PartyFedora 11 Release Party
Fedora 11 Release Party
Thiago Mosqueiro
 
Seja burro e preguiçoso! v2
Seja burro e preguiçoso! v2Seja burro e preguiçoso! v2
Seja burro e preguiçoso! v2
s4nx
 

Semelhante a Sim, existe vida além do FTP! (20)

DevOps Primeiros Passos
DevOps Primeiros PassosDevOps Primeiros Passos
DevOps Primeiros Passos
 
Existe Vida além do FTP!
Existe Vida além do FTP! Existe Vida além do FTP!
Existe Vida além do FTP!
 
Cygwin
CygwinCygwin
Cygwin
 
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
 
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOps
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuida
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 
Inovando na Plataforma Java
Inovando na Plataforma JavaInovando na Plataforma Java
Inovando na Plataforma Java
 
Inovando na plataforma Java
Inovando na plataforma JavaInovando na plataforma Java
Inovando na plataforma Java
 
PaaS - OpenShift como plataforma pública
PaaS - OpenShift como plataforma públicaPaaS - OpenShift como plataforma pública
PaaS - OpenShift como plataforma pública
 
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 
Desenvolva uma app Java web em poucos passos, com o Forge
Desenvolva uma app Java web em poucos passos, com o ForgeDesenvolva uma app Java web em poucos passos, com o Forge
Desenvolva uma app Java web em poucos passos, com o Forge
 
Quem e dev ops
Quem e dev opsQuem e dev ops
Quem e dev ops
 
Fedora 11 Release Party
Fedora 11 Release PartyFedora 11 Release Party
Fedora 11 Release Party
 
Seja burro e preguiçoso! v2
Seja burro e preguiçoso! v2Seja burro e preguiçoso! v2
Seja burro e preguiçoso! v2
 

Mais de Gustavo Pereira

Jwt mais (emoção) segurança na sua aplicação
Jwt   mais (emoção) segurança na sua aplicaçãoJwt   mais (emoção) segurança na sua aplicação
Jwt mais (emoção) segurança na sua aplicação
Gustavo Pereira
 
Eu não sou um "bom programador"!
Eu não sou um "bom programador"!Eu não sou um "bom programador"!
Eu não sou um "bom programador"!
Gustavo Pereira
 
Do Windows para o Linux é mais fácil do que você imagina!
Do Windows para o Linux é mais fácil do que você imagina!Do Windows para o Linux é mais fácil do que você imagina!
Do Windows para o Linux é mais fácil do que você imagina!
Gustavo Pereira
 
As Escrituras e suas Características - Clareza
As Escrituras e suas Características - ClarezaAs Escrituras e suas Características - Clareza
As Escrituras e suas Características - Clareza
Gustavo Pereira
 
As parábolas (revisitadas)
As parábolas (revisitadas)As parábolas (revisitadas)
As parábolas (revisitadas)
Gustavo Pereira
 
As parábolas de Mateus 13 (Parte 2)
As parábolas de Mateus 13 (Parte 2)As parábolas de Mateus 13 (Parte 2)
As parábolas de Mateus 13 (Parte 2)
Gustavo Pereira
 
Php Conference 2013 (Resumão)
Php Conference 2013 (Resumão)Php Conference 2013 (Resumão)
Php Conference 2013 (Resumão)
Gustavo Pereira
 

Mais de Gustavo Pereira (7)

Jwt mais (emoção) segurança na sua aplicação
Jwt   mais (emoção) segurança na sua aplicaçãoJwt   mais (emoção) segurança na sua aplicação
Jwt mais (emoção) segurança na sua aplicação
 
Eu não sou um "bom programador"!
Eu não sou um "bom programador"!Eu não sou um "bom programador"!
Eu não sou um "bom programador"!
 
Do Windows para o Linux é mais fácil do que você imagina!
Do Windows para o Linux é mais fácil do que você imagina!Do Windows para o Linux é mais fácil do que você imagina!
Do Windows para o Linux é mais fácil do que você imagina!
 
As Escrituras e suas Características - Clareza
As Escrituras e suas Características - ClarezaAs Escrituras e suas Características - Clareza
As Escrituras e suas Características - Clareza
 
As parábolas (revisitadas)
As parábolas (revisitadas)As parábolas (revisitadas)
As parábolas (revisitadas)
 
As parábolas de Mateus 13 (Parte 2)
As parábolas de Mateus 13 (Parte 2)As parábolas de Mateus 13 (Parte 2)
As parábolas de Mateus 13 (Parte 2)
 
Php Conference 2013 (Resumão)
Php Conference 2013 (Resumão)Php Conference 2013 (Resumão)
Php Conference 2013 (Resumão)
 

Sim, existe vida além do FTP!