Da Integração à Entrega Contínua

Preview:

DESCRIPTION

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

Citation preview

INTEGRAÇÃO

CONTÍNUA Marlon Bernardes

Da

à ENTREGA

<marlonjb.cb@gmail.com>

INTEGRAÇÃO 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).”

SCM

commit

commit

Como funciona?

SCM

Build

commit

commit

Compila

Otimiza

Gera artefatos

Como funciona?

SCM

Build

commit

commit

Compila

Otimiza

Gera artefatos

Test Unitários

Integração

Como funciona?

SCM

Build

commit

commit

Compila

Otimiza

Gera artefatos

Test Unitários

Integração

Deploy + testes de

aceitação

Como funciona?

SCM

Build

commit

commit

Compila

Otimiza

Gera artefatos

Test Unitários

Integração

Deploy + testes de

aceitação

feedback

Como funciona?

➔ 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

➔ 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?

E quando o build quebra?

E quando o build quebra?

Consertar deve ser prioridade!

E quando o build quebra?

Consertar deve ser prioridade!

Feedback

Sonar

Selenium Grid

E na hora do deploy...

Bah! Esqueci de rodar os scripts.

➔ 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;

Automatize tarefas entediantes e repetitivas!

Falando nisso...

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

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

trimestre!

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

trimestre ano!

ENTREGA CONTÍNUA

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

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

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

Manual de deploy da

BLUE-GREEN DEPLOYMENT

LOAD BALANCER + MEMCACHED

VERSÃO 1.1

VERSÃO 1.0

BANCO

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

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

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

LOAD BALANCER + MEMCACHED

VERSÃO 1.1

VERSÃO 1.0

BANCO

Os dois servidores atuam como Jenkins Slaves

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

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”

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

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.

LOAD BALANCER + MEMCACHED

VERSÃO 1.1

BANCO

VERSÃO 1.2

E o processo se repete.

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;

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...

MONITORAMENTO

CONTÍNUO