SlideShare uma empresa Scribd logo
1 de 73
Baixar para ler offline
O mínimo de Integração Contínua que todo
projeto deveria ter
- Quem somos
- Entendendo a problemática
- O que é IC ?
- Por onde começar ?
- Entendendo a dinâmica e o processo por trás da IC
- Onde podemos chegar ?
- Dúvidas
Roteiro
QUEM SOMOS
Dois caras normais
que amam estudar,
trabalham muito e
ganham pouco
Átilla Barros
Dev
Bla bla bla
Bla bla
Bla bla bla
Rodolfo Bueno
Dev
Bla bla bla
Bla bla
Bla bla bla
Bom... antes de falarmos sobre IC
Ter uma ideia...
Ficar RICO !!!!!
DESAFIO
Descobrir como validar sua boa ideia,
transformá-la em um sistema/app e entregá-lo
aos usuários o quanto antes
DESAFIO
Levantamento
de requisitos
Design
Arquitetura
Modelagem de
dados
Codificação
Testes
Implantação
O QUE PODEMOS FAZER ?
MVP(Minimum Viable Product)
ATENÇÃO
A história que será contada a seguir é totalmente fictícia e
qualquer semelhança com a vida real não passa de uma mera
coincidência
Mãos à obra
Definição do MVP: OK !
Requisitos: OK !
CODE… CODE… CODE...
Dev 1: Funcionalidade X Dev 2: Funcionalidade Y Dev 3: Funcionalidade Z
20 dias depois...
Tudo pronto e commit realizado !!
20 dias depois...
Tudo pronto e commit realizado !!
Também acabei.. ‘Bora commitar’.
pqp.. três conflitos.. dev 1 maldito!!
20 dias depois...
Tudo pronto e commit realizado !!
Também acabei.. ‘Bora commitar’.
pqp.. três conflitos.. dev 1 maldito!!
MEU DEUS.. vcs estão me
sacaneando ? Vou ficar mais
tempo resolvendo conflito do que
levei para codificar.
No dia seguinte...
Conflitos resolvidos, aparentemente
está tudo OK..
Agora é só solicitar para o “caboco”
da Infra fazer o deploy no servidor
de testes e correr para o abraço.
Na sala de Operações...
Opa.. SERVIÇO!! YES, "fazer deploy
do SIS no ambiente de testes".
Humnnn, mamão com açúcar !!!!
Na sala de Operações...
- Só compilar essa parada!!!
PEW
- Aff.. versão do JAVA deve estar
diferente no servidor.
Na sala de Operações...
… Atualizando JAVA.
PEW
- Eita, e agora ? Será que está
faltando alguma lib no servidor ?
Dois dias depois...
Prontoooooo !!!! Consegui !!!!
Deploy realizado com sucesso.
#partiuVerOSol
Analistas de teste e negócio começam seus
testes e...
O pior acontece...
Nada funciona como o esperado.
Funcionalidade X: Não abre.
Funcionalidade Y: Com erro em três fluxos.
Funcionalidade Z: Não integra corretamente com o restante do
sistema.
E agora ?
O que fizemos de errado ??
Alguns itens...
1 - Demora para integrar o trabalho dos devs
2 - Processo de geração de binários e deploy feito de forma
manual
3 - Complexidade do processo
Alguns itens...
1 - Demora para integrar o trabalho dos devs
2 - Processo de geração de binários e deploy feito de forma
manual
3 - Complexidade do processo
E como resolver esses problemas ?
Fácil...
Aumentando o escopo das entregas e fazendo deploys com
menos frequência!!
Nãããão...
Aumentando o escopo das entregas e fazendo deploys com
menos frequência!!
Desafio
É preciso descobrir uma forma de garantir que o software
esteja funcionando corretamente a todo momento e com o
máximo de qualidade possível.
Desafio
INTEGRAÇÃO CONTÍNUA
É preciso descobrir uma forma de garantir que o software
esteja funcionando corretamente a todo momento e com o
máximo de qualidade possível.
O que é ?
É uma prática que consiste na integração do código-fonte, com
o processo de build de executáveis e a execução de testes
automatizados durante o processo de construção do software.
Por onde começar ?
Passo 1: Encontre um Computador Velho
- Não “tão” velho
- Ache uma mesa para ele
- Conecte um monitor no PC
- Deixe uma cadeira velha em frente
Passo 2: Pegue Uma Galinha de Borracha
- Sério! Pegue um brinquedo
- Garanta que não tenha pontas
Passo 3: Compre um Sino de Mesa
- Algo que faça barulho
- Se não tiver, não pare por isso
Status
- PC velho: Ok!
- Monitor conectado: Ok!
- Brinquedo ridículo: Ok!
Quase lá!!!
Passo 4: Automatize Seu Build
- Oh! A parte mais difícil..
Passo 4: Automatize Seu Build
Parte boa: Jenkins nos permite
automatizar o build
Passo 4: Automatize Seu Build
Parte melhor ainda: Integração
Contínua é muito mais que um Jenkins
Vc ainda precisa automatizar o build
Passo 4: Automatize Seu Build
Parece muito trabalho? Usa a IDE?
- Ok! É difícil, eu sei..
- Crie um arquivo batch
That’s okay for now
Passo 4: Automatize Seu Build
- Usar a IDE será insuficiente
- Volte atrás e faça direito
- Se possui algum teste unitário,
inclua no build também!
Passo 4: Automatize Seu Build
Mas antes..
- Vá até o PC Xuxa
- Garanta o build 100% (Passo 1)
- Garanta que o código é o mais
recente do controle de versão
Controle de Versão?
Passo 4: Automatize Seu Build
NÃO USA CONTROLE DE VERSÃO?
- Levante-se
- Coloque a mão direita sobre o peito
- Repita comigo
Perdão pelo vacilo
Perdoe-me, universo, pelo vacilo.
Eu nunca mais irei programar sem
controle de versão novamente.
Eu vou imediatamente até o
TortoiseSVN, baixa-lo e usa-lo.
Eu renuncio todo o mal dentro de mim.
Passo 4: Automatize Seu Build
- Build demorando +10 min? PARE!
- Você não está pronto pra I.C. ainda
- Volte atrás e aprimore seu build
Passo 4: Automatize Seu Build
- Build demorando +10 min? PARE!
- Você não está pronto pra I.C. ainda
- Volte atrás e aprimore seu build
- Agora vc pode usar o Jenkins, mas..
Passo 5: Juramento de Sangue
Absolutamente, inquestionavelmente,
o principal e mais importante passo
- Todos os desenvolvedores de pé
- Não é uma reunião
O Juramento
De agora em diante,
nosso código
no controle de versão
vai SEMPRE
buildar (ser construído) com sucesso
e os testes
passarão.
Passo 5: Juramento de Sangue
- Se alguém reclamar..
- Com I.C. vai ser fácil..
- Ou pelo menos mais fácil.
- Mas o emprego dele também é..
- Construir software, sabe como é!?
Olha! 10 clientes em potencial.. ops!
Passo 5: Juramento de Sangue
- Todo mundo concordar que a idea é
boa é, de verdade, a parte principal
- A parte mais revolucionária da I.C. é
o código apto para liberar versão
Testes automatizados
Passo 5: Juramento de Sangue
- Convencer pessoas?
“Oh, what a pain in the ass”
- Porque faz bem!
Ops! 11 clientes em potencial..
Eita! 12.. 131415.. Ahhhhhhhh
Status
- Computador de Build: Ok!
- Brinquedo ridículo: Ok!
- Sino de Mesa: Ok!
- Build automatizado: Ok!
- Acordo coletivo: Ok!
Here we go!!!
Passo 6: Iniciar
- Faça check in pelo menos 2x por dia
- Essa é a parte “contínua”
- daqui a pouco será a cada hora
Passo 6: Iniciar
Antes de fazer check in
- Veja se alguém tá com a galinha
- Espere-o até finalizar o check in
- Agora é sua vez
Passo 6: Iniciar - Passo A
- Execute o build/test localmente
- Garanta que tá tudo 100%
Passo 6: Iniciar - Passo B
- Pegue a galinha para você
- Se tiver com alguém, atormente-o
até finalizar o check in
Passo 6: Iniciar - Passo C
- Puxe o código mais atual do repo
- Execute o build/test local outra vez
- Se não passar, engula seco
- Devolva a galinha
- Peça ajuda pra resolver
- Comece denovo
Passo 6: Iniciar - Passo D
- Faça check in do seu código
Passo 6: Iniciar - Passo E
- Vá até o PC Xuxa
- Puxe o código mais atual do repo
- Execute o script de build/test
Passo 6: Iniciar - Passo E
Se o build falhar
- Reverta seu check-in
- Você deve ter feito mer**
- Resolva NO SEU PC e tente denovo
- Ah, e devolva a galinha..
Passo 6: Iniciar - Passo F
Se der sucesso
- BATA O SINO, JÁ É ANO NOVO
- Uhuuuuuuuuul
- Peça uma salma de palmas
- Devolva a galinha
Passo 6: Iniciar - Passo F
Observações
- Se o build demorar, as pessoas não
vão executar
- Build rápido “faz bem pra vc”
Aula Avançada
- Deixe seu build standalone
- Faça testes TOP!
- Faça build e teste os instaladores
- Finalmente bote um Servidor de IC
Build automatizado
E como funciona a dinâmica ?
Otimizando...
- Servidor de IC enviando e-mail assim que uma build
quebrar ou voltar a ficar estável.
- Monitor informando em tempo real o status dos sistemas.
Processo repetível e confiável
https://pt.slideshare.net/rodolfox109/uma-abordagem-de-entrega-contnua-para-empresas-de-desenvolvimento-de-software
O que mais seria possível fazer ?
- Automação da Infra
- Entrega contínua
- Deploy contínuo
O que mais seria possível fazer ?
- Automação da Infra
- Entrega contínua
- Deploy contínuo
DÚVIDAS ?
Referências
- Duvall, P., Matyas, S., and Glover, A. (2007). Continuous Integration: Improving Software
Quality and Reducing Risk. Addison-Wesley Professional.
- Humble, J. and Farley, D. (2014). Entrega Contínua: Como entregar software de forma rápida
e confiável. Bookman.
- Sato, D. (2013). DevOps na prática: entrega de software confiável e automatizada. Casa do
código.
- Fowler, M. (2006). Continuous Integration.
http://martinfowler.com/articles/continuousIntegration.html.
- http://www.jamesshore.com/Blog/Continuous-Integration-on-a-Dollar-a-Day.html
- https://pt.slideshare.net/minastestingconference/alcanando-qualidade-de-software-entrega-
contnua-samanta-cicilia
Obrigado!!!
rodolfo.bueno13@gmail.com
linkedin.com/in/rodolfobueno
atilla8huno@gmail.com
linkedin.com/in/atilla8huno

Mais conteúdo relacionado

Mais procurados

TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação Icaro Camelo
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"thiagobapt
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsLeonardo Comelli
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsRafael Salerno de Oliveira
 
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosScrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosStefan Teixeira
 
Introdução a DevOps e Continuous delivery agileday
Introdução a DevOps e Continuous delivery   agiledayIntrodução a DevOps e Continuous delivery   agileday
Introdução a DevOps e Continuous delivery agiledayCarlos Felippe Cardoso
 
Aplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full StackAplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full StackJoão Gabriel Lima
 
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
 
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...minastestingconference
 
Discutindo DevOps na pratica, por Danilo Sato
Discutindo DevOps na pratica, por Danilo SatoDiscutindo DevOps na pratica, por Danilo Sato
Discutindo DevOps na pratica, por Danilo SatoThoughtworks
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de softwareLaura_ifpe
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
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
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalEduardo Bregaida
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Igor Abade
 

Mais procurados (20)

TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOps
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
 
TDD
TDDTDD
TDD
 
O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosScrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
 
Introdução a DevOps e Continuous delivery agileday
Introdução a DevOps e Continuous delivery   agiledayIntrodução a DevOps e Continuous delivery   agileday
Introdução a DevOps e Continuous delivery agileday
 
Aplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full StackAplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full Stack
 
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...
 
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
 
Discutindo DevOps na pratica, por Danilo Sato
Discutindo DevOps na pratica, por Danilo SatoDiscutindo DevOps na pratica, por Danilo Sato
Discutindo DevOps na pratica, por Danilo Sato
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de software
 
Java virtual machine quantas linguas fala a jvm2
Java virtual machine   quantas linguas fala a jvm2Java virtual machine   quantas linguas fala a jvm2
Java virtual machine quantas linguas fala a jvm2
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Existe Vida além do FTP!
Existe Vida além do FTP! Existe Vida além do FTP!
Existe Vida além do FTP!
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso Total
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 

Semelhante a Mínimo IC projetos

QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)Mayara Fernandes
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo RealLeandro Silva
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
Proposta de solução ferramentas-processos
Proposta de solução ferramentas-processosProposta de solução ferramentas-processos
Proposta de solução ferramentas-processosMauricio Bonetti
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaGabriela Patuci
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMAdriano Bertucci
 
Continuous delivery principios e praticas - Knowledge21
Continuous delivery   principios e praticas - Knowledge21Continuous delivery   principios e praticas - Knowledge21
Continuous delivery principios e praticas - Knowledge21Carlos Felippe Cardoso
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realHenrique Schmidt
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo realWilly Salazar
 
Leia me! aprenda m+ sobre o windows 7 e o PC! V.2017
Leia me! aprenda m+ sobre o windows 7 e o PC!  V.2017Leia me! aprenda m+ sobre o windows 7 e o PC!  V.2017
Leia me! aprenda m+ sobre o windows 7 e o PC! V.2017Fp-Tecnico
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSprofjotamarcosduarte
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Better Developer
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Jonathan Prates
 
Como convenci meu chefe que devíamos automatizar testes - Marcelo Soares - TD...
Como convenci meu chefe que devíamos automatizar testes - Marcelo Soares - TD...Como convenci meu chefe que devíamos automatizar testes - Marcelo Soares - TD...
Como convenci meu chefe que devíamos automatizar testes - Marcelo Soares - TD...Marcelo Soares
 

Semelhante a Mínimo IC projetos (20)

QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
 
TDC 2018
TDC 2018TDC 2018
TDC 2018
 
Cultura de testes em times mobile
Cultura de testes em times mobileCultura de testes em times mobile
Cultura de testes em times mobile
 
Testes automatizados - Agile Day
Testes automatizados -  Agile DayTestes automatizados -  Agile Day
Testes automatizados - Agile Day
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo Real
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Debugging node
Debugging nodeDebugging node
Debugging node
 
Proposta de solução ferramentas-processos
Proposta de solução ferramentas-processosProposta de solução ferramentas-processos
Proposta de solução ferramentas-processos
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
 
Dev Ops at Paguemenos
Dev Ops at PaguemenosDev Ops at Paguemenos
Dev Ops at Paguemenos
 
Continuous delivery principios e praticas - Knowledge21
Continuous delivery   principios e praticas - Knowledge21Continuous delivery   principios e praticas - Knowledge21
Continuous delivery principios e praticas - Knowledge21
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo real
 
JUnit Experience
JUnit ExperienceJUnit Experience
JUnit Experience
 
Leia me! aprenda m+ sobre o windows 7 e o PC! V.2017
Leia me! aprenda m+ sobre o windows 7 e o PC!  V.2017Leia me! aprenda m+ sobre o windows 7 e o PC!  V.2017
Leia me! aprenda m+ sobre o windows 7 e o PC! V.2017
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
 
Como convenci meu chefe que devíamos automatizar testes - Marcelo Soares - TD...
Como convenci meu chefe que devíamos automatizar testes - Marcelo Soares - TD...Como convenci meu chefe que devíamos automatizar testes - Marcelo Soares - TD...
Como convenci meu chefe que devíamos automatizar testes - Marcelo Soares - TD...
 

Mínimo IC projetos

  • 1. O mínimo de Integração Contínua que todo projeto deveria ter
  • 2. - Quem somos - Entendendo a problemática - O que é IC ? - Por onde começar ? - Entendendo a dinâmica e o processo por trás da IC - Onde podemos chegar ? - Dúvidas Roteiro
  • 3. QUEM SOMOS Dois caras normais que amam estudar, trabalham muito e ganham pouco Átilla Barros Dev Bla bla bla Bla bla Bla bla bla Rodolfo Bueno Dev Bla bla bla Bla bla Bla bla bla
  • 4. Bom... antes de falarmos sobre IC
  • 7. DESAFIO Descobrir como validar sua boa ideia, transformá-la em um sistema/app e entregá-lo aos usuários o quanto antes
  • 9. O QUE PODEMOS FAZER ? MVP(Minimum Viable Product)
  • 10. ATENÇÃO A história que será contada a seguir é totalmente fictícia e qualquer semelhança com a vida real não passa de uma mera coincidência
  • 11. Mãos à obra Definição do MVP: OK ! Requisitos: OK !
  • 12. CODE… CODE… CODE... Dev 1: Funcionalidade X Dev 2: Funcionalidade Y Dev 3: Funcionalidade Z
  • 13. 20 dias depois... Tudo pronto e commit realizado !!
  • 14. 20 dias depois... Tudo pronto e commit realizado !! Também acabei.. ‘Bora commitar’. pqp.. três conflitos.. dev 1 maldito!!
  • 15. 20 dias depois... Tudo pronto e commit realizado !! Também acabei.. ‘Bora commitar’. pqp.. três conflitos.. dev 1 maldito!! MEU DEUS.. vcs estão me sacaneando ? Vou ficar mais tempo resolvendo conflito do que levei para codificar.
  • 16. No dia seguinte... Conflitos resolvidos, aparentemente está tudo OK.. Agora é só solicitar para o “caboco” da Infra fazer o deploy no servidor de testes e correr para o abraço.
  • 17. Na sala de Operações... Opa.. SERVIÇO!! YES, "fazer deploy do SIS no ambiente de testes". Humnnn, mamão com açúcar !!!!
  • 18. Na sala de Operações... - Só compilar essa parada!!! PEW - Aff.. versão do JAVA deve estar diferente no servidor.
  • 19. Na sala de Operações... … Atualizando JAVA. PEW - Eita, e agora ? Será que está faltando alguma lib no servidor ?
  • 20. Dois dias depois... Prontoooooo !!!! Consegui !!!! Deploy realizado com sucesso. #partiuVerOSol
  • 21. Analistas de teste e negócio começam seus testes e...
  • 22. O pior acontece... Nada funciona como o esperado. Funcionalidade X: Não abre. Funcionalidade Y: Com erro em três fluxos. Funcionalidade Z: Não integra corretamente com o restante do sistema.
  • 23. E agora ? O que fizemos de errado ??
  • 24. Alguns itens... 1 - Demora para integrar o trabalho dos devs 2 - Processo de geração de binários e deploy feito de forma manual 3 - Complexidade do processo
  • 25. Alguns itens... 1 - Demora para integrar o trabalho dos devs 2 - Processo de geração de binários e deploy feito de forma manual 3 - Complexidade do processo E como resolver esses problemas ?
  • 26. Fácil... Aumentando o escopo das entregas e fazendo deploys com menos frequência!!
  • 27. Nãããão... Aumentando o escopo das entregas e fazendo deploys com menos frequência!!
  • 28. Desafio É preciso descobrir uma forma de garantir que o software esteja funcionando corretamente a todo momento e com o máximo de qualidade possível.
  • 29. Desafio INTEGRAÇÃO CONTÍNUA É preciso descobrir uma forma de garantir que o software esteja funcionando corretamente a todo momento e com o máximo de qualidade possível.
  • 30. O que é ? É uma prática que consiste na integração do código-fonte, com o processo de build de executáveis e a execução de testes automatizados durante o processo de construção do software.
  • 32. Passo 1: Encontre um Computador Velho - Não “tão” velho - Ache uma mesa para ele - Conecte um monitor no PC - Deixe uma cadeira velha em frente
  • 33. Passo 2: Pegue Uma Galinha de Borracha - Sério! Pegue um brinquedo - Garanta que não tenha pontas
  • 34. Passo 3: Compre um Sino de Mesa - Algo que faça barulho - Se não tiver, não pare por isso
  • 35. Status - PC velho: Ok! - Monitor conectado: Ok! - Brinquedo ridículo: Ok! Quase lá!!!
  • 36. Passo 4: Automatize Seu Build - Oh! A parte mais difícil..
  • 37. Passo 4: Automatize Seu Build Parte boa: Jenkins nos permite automatizar o build
  • 38. Passo 4: Automatize Seu Build Parte melhor ainda: Integração Contínua é muito mais que um Jenkins Vc ainda precisa automatizar o build
  • 39. Passo 4: Automatize Seu Build Parece muito trabalho? Usa a IDE? - Ok! É difícil, eu sei.. - Crie um arquivo batch That’s okay for now
  • 40. Passo 4: Automatize Seu Build - Usar a IDE será insuficiente - Volte atrás e faça direito - Se possui algum teste unitário, inclua no build também!
  • 41. Passo 4: Automatize Seu Build Mas antes.. - Vá até o PC Xuxa - Garanta o build 100% (Passo 1) - Garanta que o código é o mais recente do controle de versão
  • 43. Passo 4: Automatize Seu Build NÃO USA CONTROLE DE VERSÃO? - Levante-se - Coloque a mão direita sobre o peito - Repita comigo
  • 44. Perdão pelo vacilo Perdoe-me, universo, pelo vacilo. Eu nunca mais irei programar sem controle de versão novamente. Eu vou imediatamente até o TortoiseSVN, baixa-lo e usa-lo. Eu renuncio todo o mal dentro de mim.
  • 45. Passo 4: Automatize Seu Build - Build demorando +10 min? PARE! - Você não está pronto pra I.C. ainda - Volte atrás e aprimore seu build
  • 46. Passo 4: Automatize Seu Build - Build demorando +10 min? PARE! - Você não está pronto pra I.C. ainda - Volte atrás e aprimore seu build - Agora vc pode usar o Jenkins, mas..
  • 47. Passo 5: Juramento de Sangue Absolutamente, inquestionavelmente, o principal e mais importante passo - Todos os desenvolvedores de pé - Não é uma reunião
  • 48. O Juramento De agora em diante, nosso código no controle de versão vai SEMPRE buildar (ser construído) com sucesso e os testes passarão.
  • 49. Passo 5: Juramento de Sangue - Se alguém reclamar.. - Com I.C. vai ser fácil.. - Ou pelo menos mais fácil. - Mas o emprego dele também é.. - Construir software, sabe como é!? Olha! 10 clientes em potencial.. ops!
  • 50. Passo 5: Juramento de Sangue - Todo mundo concordar que a idea é boa é, de verdade, a parte principal - A parte mais revolucionária da I.C. é o código apto para liberar versão
  • 52. Passo 5: Juramento de Sangue - Convencer pessoas? “Oh, what a pain in the ass” - Porque faz bem! Ops! 11 clientes em potencial.. Eita! 12.. 131415.. Ahhhhhhhh
  • 53. Status - Computador de Build: Ok! - Brinquedo ridículo: Ok! - Sino de Mesa: Ok! - Build automatizado: Ok! - Acordo coletivo: Ok! Here we go!!!
  • 54. Passo 6: Iniciar - Faça check in pelo menos 2x por dia - Essa é a parte “contínua” - daqui a pouco será a cada hora
  • 55. Passo 6: Iniciar Antes de fazer check in - Veja se alguém tá com a galinha - Espere-o até finalizar o check in - Agora é sua vez
  • 56. Passo 6: Iniciar - Passo A - Execute o build/test localmente - Garanta que tá tudo 100%
  • 57. Passo 6: Iniciar - Passo B - Pegue a galinha para você - Se tiver com alguém, atormente-o até finalizar o check in
  • 58. Passo 6: Iniciar - Passo C - Puxe o código mais atual do repo - Execute o build/test local outra vez - Se não passar, engula seco - Devolva a galinha - Peça ajuda pra resolver - Comece denovo
  • 59. Passo 6: Iniciar - Passo D - Faça check in do seu código
  • 60. Passo 6: Iniciar - Passo E - Vá até o PC Xuxa - Puxe o código mais atual do repo - Execute o script de build/test
  • 61. Passo 6: Iniciar - Passo E Se o build falhar - Reverta seu check-in - Você deve ter feito mer** - Resolva NO SEU PC e tente denovo - Ah, e devolva a galinha..
  • 62. Passo 6: Iniciar - Passo F Se der sucesso - BATA O SINO, JÁ É ANO NOVO - Uhuuuuuuuuul - Peça uma salma de palmas - Devolva a galinha
  • 63. Passo 6: Iniciar - Passo F Observações - Se o build demorar, as pessoas não vão executar - Build rápido “faz bem pra vc”
  • 64. Aula Avançada - Deixe seu build standalone - Faça testes TOP! - Faça build e teste os instaladores - Finalmente bote um Servidor de IC
  • 66. E como funciona a dinâmica ?
  • 67. Otimizando... - Servidor de IC enviando e-mail assim que uma build quebrar ou voltar a ficar estável. - Monitor informando em tempo real o status dos sistemas.
  • 68. Processo repetível e confiável https://pt.slideshare.net/rodolfox109/uma-abordagem-de-entrega-contnua-para-empresas-de-desenvolvimento-de-software
  • 69. O que mais seria possível fazer ? - Automação da Infra - Entrega contínua - Deploy contínuo
  • 70. O que mais seria possível fazer ? - Automação da Infra - Entrega contínua - Deploy contínuo
  • 72. Referências - Duvall, P., Matyas, S., and Glover, A. (2007). Continuous Integration: Improving Software Quality and Reducing Risk. Addison-Wesley Professional. - Humble, J. and Farley, D. (2014). Entrega Contínua: Como entregar software de forma rápida e confiável. Bookman. - Sato, D. (2013). DevOps na prática: entrega de software confiável e automatizada. Casa do código. - Fowler, M. (2006). Continuous Integration. http://martinfowler.com/articles/continuousIntegration.html. - http://www.jamesshore.com/Blog/Continuous-Integration-on-a-Dollar-a-Day.html - https://pt.slideshare.net/minastestingconference/alcanando-qualidade-de-software-entrega- contnua-samanta-cicilia