55
INTEGRAÇÃO CONTÍNUA Marlon Bernardes Da à ENTREGA <[email protected]>

Da Integração à Entrega Contínua

Embed Size (px)

DESCRIPTION

Slides of the presentation I gave about continuous integration and continuous delivery. The slides are in portuguese.

Citation preview

Page 1: Da Integração à Entrega Contínua

INTEGRAÇÃO

CONTÍNUA Marlon Bernardes

Da

à ENTREGA

<[email protected]>

Page 2: Da Integração à Entrega Contínua

INTEGRAÇÃO CONTÍNUA

Page 3: Da Integração à Entrega Contínua

“Prática de desenvolvimento de software aonde os membros de um time integram seu trabalho freqüentemente (geralmente multíplas vezes por dia).”

Page 4: Da Integração à Entrega Contínua

SCM

commit

commit

Como funciona?

Page 5: Da Integração à Entrega Contínua

SCM

Build

commit

commit

Compila

Otimiza

Gera artefatos

Como funciona?

Page 6: Da Integração à Entrega Contínua

SCM

Build

commit

commit

Compila

Otimiza

Gera artefatos

Test Unitários

Integração

Como funciona?

Page 7: Da Integração à Entrega Contínua

SCM

Build

commit

commit

Compila

Otimiza

Gera artefatos

Test Unitários

Integração

Deploy + testes de

aceitação

Como funciona?

Page 8: Da Integração à Entrega Contínua

SCM

Build

commit

commit

Compila

Otimiza

Gera artefatos

Test Unitários

Integração

Deploy + testes de

aceitação

feedback

Como funciona?

Page 9: Da Integração à Entrega Contínua

➔ Commits diários;

➔ Sem multíplas branchs - commits direto no “trunk”;

➔ Build automatizado;

➔ Todo commit gera um novo build;

➔ Ambiente de testes deve ser similar ao de produção;

➔ Deploy automatizado (sem exigir intervenção manual);

Estratégias Utilizadas

Page 10: Da Integração à Entrega Contínua

➔ Testa continuamente o projeto;

➔ Garante que a aplicação é compatível com o banco de dados;

➔ Mantém sempre a versão de testes atualizada;

➔ Os erros são identificados rapidamente;

➔ Testes automatizados == maior qualidade == menos tempo

necessário para colocar uma nova versão em produção;

➔ Auditoria de código é feita continuamente através do Sonar;

Quais os benefícios?

Page 11: Da Integração à Entrega Contínua

E quando o build quebra?

Page 12: Da Integração à Entrega Contínua

E quando o build quebra?

Consertar deve ser prioridade!

Page 13: Da Integração à Entrega Contínua

E quando o build quebra?

Consertar deve ser prioridade!

Page 14: Da Integração à Entrega Contínua

Feedback

Page 15: Da Integração à Entrega Contínua
Page 16: Da Integração à Entrega Contínua

Sonar

Page 17: Da Integração à Entrega Contínua
Page 18: Da Integração à Entrega Contínua

Selenium Grid

Page 19: Da Integração à Entrega Contínua
Page 20: Da Integração à Entrega Contínua

E na hora do deploy...

Page 21: Da Integração à Entrega Contínua

Bah! Esqueci de rodar os scripts.

Page 22: Da Integração à Entrega Contínua

➔ Controle de versão para o banco de dados;

➔ Mudanças na base são executadas incrementalmente;

➔ Scripts ficam juntos com o código fonte da aplicação e são

executados automaticamente durante o deploy;

Page 23: Da Integração à Entrega Contínua
Page 24: Da Integração à Entrega Contínua

Automatize tarefas entediantes e repetitivas!

Page 25: Da Integração à Entrega Contínua
Page 26: Da Integração à Entrega Contínua

Falando nisso...

Page 27: Da Integração à Entrega Contínua

Gerar versão em produção não precisa ser o evento do mês!

Page 28: Da Integração à Entrega Contínua

Gerar versão em produção não precisa ser o evento do mês

trimestre!

Page 29: Da Integração à Entrega Contínua

Gerar versão em produção não precisa ser o evento do mês

trimestre ano!

Page 30: Da Integração à Entrega Contínua

ENTREGA CONTÍNUA

Page 31: Da Integração à Entrega Contínua

Conjunto de práticas e princípios que visam criar, testar e liberar software mais rapidamente em produção.

Page 32: Da Integração à Entrega Contínua

Nosso código não tem valor de negócio enquanto não for entregue.

Page 33: Da Integração à Entrega Contínua

Qual o tempo necessário para liberar em produção uma mudança que afeta uma linha de código?

Page 34: Da Integração à Entrega Contínua

Manual de deploy da

Page 35: Da Integração à Entrega Contínua

BLUE-GREEN DEPLOYMENT

Page 36: Da Integração à Entrega Contínua

LOAD BALANCER + MEMCACHED

VERSÃO 1.1

VERSÃO 1.0

BANCO

Apenas um nodo (ou conjunto) fica ativo por vez.

Page 37: Da Integração à Entrega Contínua

LOAD BALANCER + MEMCACHED

VERSÃO 1.1

VERSÃO 1.0

BANCO

Em caso de erro na versão atual, é possível fazer rollback

instantâneamente

Page 38: Da Integração à Entrega Contínua

LOAD BALANCER + MEMCACHED

VERSÃO 1.1

VERSÃO 1.0

BANCO

Em caso de erro na versão atual, é possível fazer rollback

instantâneamente

Page 39: Da Integração à Entrega Contínua

LOAD BALANCER + MEMCACHED

VERSÃO 1.1

VERSÃO 1.0

BANCO

Os dois servidores atuam como Jenkins Slaves

Page 40: Da Integração à Entrega Contínua

LOAD BALANCER + MEMCACHED

VERSÃO 1.1

VERSÃO 1.0

BANCO

v. 1.2

A versão é sempre atualizada no nodo “desabilitado”

Build pelo

Jenkins

upload

Page 41: Da Integração à Entrega Contínua

LOAD BALANCER + MEMCACHED

VERSÃO 1.1

VERSÃO 1.0

BANCO

v. 1.2 VERSÃO 1.2

upload Build pelo

Jenkins

A versão é sempre atualizada no nodo “desabilitado”

Page 42: Da Integração à Entrega Contínua

LOAD BALANCER + MEMCACHED

VERSÃO 1.1

VERSÃO 1.0

BANCO

v. 1.2 VERSÃO 1.2

Quando o deploy acaba...

Build pelo

Jenkins

Page 43: Da Integração à Entrega Contínua

LOAD BALANCER + MEMCACHED

VERSÃO 1.1

VERSÃO 1.0

BANCO

v. 1.2 VERSÃO 1.2

… o tráfego é redirecionado para o nodo que acabou de

ser atualizado.

Page 44: Da Integração à Entrega Contínua

LOAD BALANCER + MEMCACHED

VERSÃO 1.1

BANCO

VERSÃO 1.2

E o processo se repete.

Page 45: Da Integração à Entrega Contínua

Quais os benefícios?

➔ Alguns testes podem ser feitos diretamente em produção;

➔ Rollback é imediato em caso de problema;

➔ É possível atualizar a versão durante o dia, mantendo 100% de

uptime;

➔ Load balance por request distribui a carga muito melhor do que por

afinidade de sessão;

Page 46: Da Integração à Entrega Contínua
Page 47: Da Integração à Entrega Contínua
Page 48: Da Integração à Entrega Contínua

Ainda sobre entrega contínua... ➔ Não se trata apenas de uma ferramenta ou conjunto de

ferramentas

➔ O desafio é a quebra de barreira entre desenvolvedores, área de

testes, infraestrutura...

Page 49: Da Integração à Entrega Contínua

MONITORAMENTO

CONTÍNUO

Page 50: Da Integração à Entrega Contínua
Page 51: Da Integração à Entrega Contínua
Page 52: Da Integração à Entrega Contínua
Page 53: Da Integração à Entrega Contínua
Page 54: Da Integração à Entrega Contínua
Page 55: Da Integração à Entrega Contínua