SlideShare uma empresa Scribd logo
1 de 62
Baixar para ler offline
@humbertostreb
Docker, Jenkins e Gradle
para tomar o controle de
sua entrega
Humberto Streb
goleiro, bem meia-boca
entusiasta de programação funcional
e automação
Agenda
- Continuous Delivery
- Overview do projeto
- Problemas encontrados
- Descrição das ações adotadas
- Ferramentas utilizadas
- Impacto na cultura
Continuous Delivery
O que é?
Onde vive?
Do que se alimenta?
Continuous Delivery
"Continuous Delivery is a software
development discipline where you build
software in such a way that the software can
be released to production at any time."
Martin Fowler
CUIDADO!
Nem toda
mudança vai para
produção
Testes
você tem que confiar que tudo vai funcionar
Qualidade
promova qualidade em tudo que é construído
Automação
pessoas pensam e máquinas executam
Feedback rápido
falhe, mas falhe rápido e de forma controlada
Pequenas alterações
dividir para conquistar
Controle de versão
controle a versão e compartilhe não apenas o
código
+ poder para as pessoas
cada pessoa precisa ser treinada para ser
responsável pelas alterações
Benefícios
- menor risco
- visão do progresso
- feedback do usuário
Evolução constante
alterações incrementais
Evolução constante
faça uma lista do que você vai fazer
alterações levam tempo
Overview do projeto
+1,3 milhões de linhas de código
+1k reports
processa arquivos com mais de 600 Mb
equipes distribuídas
Overview do projeto
muitos stakeholders
2 deploy em 6 meses
migração recente de desktop para web
e os primeiros passos na nuvem
Problemas
build gerado pela IDE
dependências compartilhadas pelo skype,
e-mail entre outras tecnologias
Problemas
regras de negócio espalhadas por
repositórios diferentes
configurações (dev, stage) fora do git
Projetos x dependências
Cadê o Jar que
estava aqui?
Problemas
deploy manual
copiar e colar jars nos ambientes
dificuldade de atualizar as bibliotecas
Quando nós fomos
chamados
Desenhar a solução
entendimento da solução
expõem os pontos de melhoria
e esses desenhos vão evoluindo
Docker
testes, databases configurados
prototipação
feedback rápido
Docker-compose
jenkins, artifactory e sonarqube rodam no
docker
Por que escolhemos o
gradle
o diretório src não seguia o padrão
versões dinâmicas 1.0.+
lifecycle flexível
wrapper
1ª etapa
não poderia impactar outras equipes
branch a parte
configuração individual de cada projeto
dependências dinâmicas
2ª etapa
unificação de repositórios com multi-project
adição do setup inicial do projecto no
repositório
criação de um README com o setup
Repositório de artefatos
compartilhar dependências (the right way)
Jenkins builds
na minha máquina funciona...
não precisa de plugin para o gradle
(self-contained)
geração automática de tag no repositório
Jenkins deploy
o build manda pro s3 e o deploy baixa e
instala
Jenkins pipeline
Jenkinsfile no repositório
Gradle ajuda muito com as task individuais
Testes
adição de testes unitários
criação de um projeto para testes de
integração que consultam o database
SonarQube
análise do codebase
reports baseados em mudanças
configurável
Projects
Issues
Qualidade
design e code review em pair
SonarQube scan diário
- correções imediatas das anomalias
- ações tomadas com base nos reports
Substituição do
system.out por log4j2
melhoria na qualidade do log
fundamental para adição de métricas em
prod
It’s all about people
Overview cultural
o ambiente não era favorável à mudança
falta de confiança
distância entre business e dev
Mudança cultural
não apresente a solução completa, mas tenha
ela em mente
faça pequenas correções, mas sempre faça
tradeoff tecnológico e comportamental
Mudança cultural
+ poder para as pessoas
definição de pronto clara
estimule um ambiente de aprendizado
https://github.com/hstreb/tdc-poa-2016
Muito obrigado
https://github.com/hstreb
https://twitter.com/humbertostreb
http://slideshare.net/humbertostreb

Mais conteúdo relacionado

Mais procurados

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
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaOtávio Calaça Xavier
 
Do Gitlab ao deploy
Do Gitlab ao deployDo Gitlab ao deploy
Do Gitlab ao deployLeandro Moro
 
Botando o Jenkins para rodar seus testes
Botando o Jenkins para rodar seus testesBotando o Jenkins para rodar seus testes
Botando o Jenkins para rodar seus testeskinow
 
DevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega ContínuaDevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega ContínuaOtávio Calaça Xavier
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsLeonardo Comelli
 
Jenkins, o CI ao seu dispor
Jenkins, o CI ao seu disporJenkins, o CI ao seu dispor
Jenkins, o CI ao seu dispors4nx
 
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...Agile Trends
 
DevOps, NoOps...afinal que raios é isso?
DevOps, NoOps...afinal que raios é isso?DevOps, NoOps...afinal que raios é isso?
DevOps, NoOps...afinal que raios é isso?Thiago Ganzarolli
 
Minas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega ContínuaMinas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega ContínuaSamanta Cicilia
 
Implantando continuous delivery e seus oito principios
Implantando continuous delivery e seus oito principiosImplantando continuous delivery e seus oito principios
Implantando continuous delivery e seus oito principiosCarlos Felippe Cardoso
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsStefan Teixeira
 
DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014Leo Lorieri
 
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian FerrariDrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian FerrariTaller Negócio Digitais
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous deliveryMarco Valtas
 
Da Integração à Entrega Contínua
Da Integração à Entrega ContínuaDa Integração à Entrega Contínua
Da Integração à Entrega ContínuaMarlon Bernardes
 

Mais procurados (20)

Integração Continua - Jenkins
Integração Continua - JenkinsIntegração Continua - Jenkins
Integração Continua - Jenkins
 
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
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega Continua
 
Testes automatizados - Agile Day
Testes automatizados -  Agile DayTestes automatizados -  Agile Day
Testes automatizados - Agile Day
 
Do Gitlab ao deploy
Do Gitlab ao deployDo Gitlab ao deploy
Do Gitlab ao deploy
 
Botando o Jenkins para rodar seus testes
Botando o Jenkins para rodar seus testesBotando o Jenkins para rodar seus testes
Botando o Jenkins para rodar seus testes
 
DevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega ContínuaDevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega Contínua
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOps
 
Jenkins, o CI ao seu dispor
Jenkins, o CI ao seu disporJenkins, o CI ao seu dispor
Jenkins, o CI ao seu dispor
 
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
 
DevOps, NoOps...afinal que raios é isso?
DevOps, NoOps...afinal que raios é isso?DevOps, NoOps...afinal que raios é isso?
DevOps, NoOps...afinal que raios é isso?
 
Minas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega ContínuaMinas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega Contínua
 
Implantando continuous delivery e seus oito principios
Implantando continuous delivery e seus oito principiosImplantando continuous delivery e seus oito principios
Implantando continuous delivery e seus oito principios
 
Cultura DevOps
Cultura DevOpsCultura DevOps
Cultura DevOps
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao Jenkins
 
DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014DevOps com Exemplos Práticos - QConRio 2014
DevOps com Exemplos Práticos - QConRio 2014
 
Gitlab CI/CD com python
Gitlab CI/CD com pythonGitlab CI/CD com python
Gitlab CI/CD com python
 
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian FerrariDrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous delivery
 
Da Integração à Entrega Contínua
Da Integração à Entrega ContínuaDa Integração à Entrega Contínua
Da Integração à Entrega Contínua
 

Semelhante a CD com Docker, Jenkins e Gradle

Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiFelipe Caputo
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiMayara Fernandes
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOpsE se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOpsEdson Celio
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versãoMarcos Pessoa
 
DEV-OPS para teste de software
DEV-OPS para teste de softwareDEV-OPS para teste de software
DEV-OPS para teste de softwareQualister
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureGrupo de Testes Carioca
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no NubankLetticia Nicoli
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122Bruno Souza
 
Palestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwarePalestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwareJúlio de Lima
 
XP Programming
XP ProgrammingXP Programming
XP ProgrammingCJR, UnB
 
Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9Camilla Gomes
 
IPA Conhecendo XP
IPA Conhecendo XPIPA Conhecendo XP
IPA Conhecendo XPWildtech
 

Semelhante a CD com Docker, Jenkins e Gradle (20)

Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em Delphi
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOpsE se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
E se ao invés de Dev e Ops for DevOps? Uma introdução a cultura DevOps
 
FDD
FDDFDD
FDD
 
Falando sobre DevOps no azure
Falando sobre DevOps no azureFalando sobre DevOps no azure
Falando sobre DevOps no azure
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
 
DEV-OPS para teste de software
DEV-OPS para teste de softwareDEV-OPS para teste de software
DEV-OPS para teste de software
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows Azure
 
Automatização de Ambientes CI & CD & DevOps
Automatização de Ambientes CI & CD & DevOpsAutomatização de Ambientes CI & CD & DevOps
Automatização de Ambientes CI & CD & DevOps
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no Nubank
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 
Palestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwarePalestra DevOps para Teste de Software
Palestra DevOps para Teste de Software
 
XP Programming
XP ProgrammingXP Programming
XP Programming
 
Quem e dev ops
Quem e dev opsQuem e dev ops
Quem e dev ops
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9Procura-se: DevOps #cpbr9
Procura-se: DevOps #cpbr9
 
Subm_SamuelPereira_FINAL
Subm_SamuelPereira_FINALSubm_SamuelPereira_FINAL
Subm_SamuelPereira_FINAL
 
IPA Conhecendo XP
IPA Conhecendo XPIPA Conhecendo XP
IPA Conhecendo XP
 

Mais de Humberto Streb

Event sourcing e o poder do desacoplamento
Event sourcing e o poder do desacoplamentoEvent sourcing e o poder do desacoplamento
Event sourcing e o poder do desacoplamentoHumberto Streb
 
Reactive streams, because parallelism matters
Reactive streams, because parallelism mattersReactive streams, because parallelism matters
Reactive streams, because parallelism mattersHumberto Streb
 
Fp without functional language
Fp without functional languageFp without functional language
Fp without functional languageHumberto Streb
 
Descomplicando o controle de versão com git
Descomplicando o controle de versão com gitDescomplicando o controle de versão com git
Descomplicando o controle de versão com gitHumberto Streb
 

Mais de Humberto Streb (8)

Istio service mesh
Istio service meshIstio service mesh
Istio service mesh
 
Event sourcing e o poder do desacoplamento
Event sourcing e o poder do desacoplamentoEvent sourcing e o poder do desacoplamento
Event sourcing e o poder do desacoplamento
 
Reactive streams, because parallelism matters
Reactive streams, because parallelism mattersReactive streams, because parallelism matters
Reactive streams, because parallelism matters
 
Apache samza
Apache samzaApache samza
Apache samza
 
Socket.io
Socket.ioSocket.io
Socket.io
 
Fp without functional language
Fp without functional languageFp without functional language
Fp without functional language
 
Sinatra
SinatraSinatra
Sinatra
 
Descomplicando o controle de versão com git
Descomplicando o controle de versão com gitDescomplicando o controle de versão com git
Descomplicando o controle de versão com git
 

CD com Docker, Jenkins e Gradle