134
Continuous Delivery @samantacicilia

[Lady talks]Continuous Delivery

Embed Size (px)

Citation preview

Continuous Delivery@samantacicilia

Sobre mimO que é Entregar Software

Continuous DeliveryExemplo

ResultadosReferências

@samantacicilia

Sobre mim

@samantacicilia

“Eu acredito no poder das Comunidades”

Evento TEST DAY 2012 - SP

insideoutproject.com.br

O que é Entregar Software

@samantacicilia

O que raios significa Entregar Software?

O que raios significa Entregar Software?

O que raios significa Entregar Software?

O mega deploy da meia-noite

Reflexão

A forma como as empresas desenvolvem software muda rapidamente – seja por necessidades do mercado, evolução de tecnologias ou até mesmo redução de custos. Todos os dias essas empresas precisam fazer mais com menos investimento, para simultaneamente manter a competitividade e reduzir os custos. (The Phoenix Project)

Falando do Desenvolvimento…

Codificar & Testar & Disponibilizar (Deploy)

Codificar …

• Linguagens;• Frameworks;• Técnicas;• Ferramentas;

Testar…

Disponibilizar…

Como fazer tudo isso certo e rápido?

Continuous Delivery

@samantacicilia

Exemplos

Exemplos● Google: 8 minutos entre DEV e PRD

Exemplos● Google: 8 minutos entre DEV e PRD● Facebook: 2 vezes por dia

Exemplos● Google: 8 minutos entre DEV e PRD● Facebook: 2 vezes por dia● Linkedin: 30 minutos entre DEV e PRD

Exemplos● Google: 8 minutos entre DEV e PRD● Facebook: 2 vezes por dia● Linkedin: 30 minutos entre DEV e PRD● Etsy: 30 deploys por dia feitos por 200+ pessoas;

Objetivos

Objetivos• tornar todas as partes do processo de compilar, implantar, testar e

entregar a versão visíveis para todas as pessoas envolvidas a fim de promover colaboração;

Objetivos• tornar todas as partes do processo de compilar, implantar, testar e

entregar a versão visíveis para todas as pessoas envolvidas a fim de promover colaboração;

• melhorar o feedback do processo para que problemas sejam identificados o mais cedo possível dentro do ciclo ; e

Objetivos• tornar todas as partes do processo de compilar, implantar, testar e

entregar a versão visíveis para todas as pessoas envolvidas a fim de promover colaboração;

• melhorar o feedback do processo para que problemas sejam identificados o mais cedo possível dentro do ciclo ; e

• permitir que o software seja entregue em qualquer ambiente e a qualquer momento  

Conceitos Importantes

Conceitos Importantes• Controle de Versão

Conceitos Importantes• Controle de Versão

• Integração Contínua

Conceitos Importantes• Controle de Versão

• Integração Contínua

• Testes Automatizados (unitários, integração e aceitação)

Conceitos Importantes• Controle de Versão

• Integração Contínua

• Testes Automatizados (unitários, integração e aceitação)

• Testes de Capacidade

Pipeline de Implantação

Pipeline de Implantação● Implementação automatizada do processo de compilar todas as partes

de uma aplicação, implantá-las em um ambiente qualquer – homologação ou produção – testá-la e efetuar sua entrega final.

Pipeline de Implantação● Implementação automatizada do processo de compilar todas as partes

de uma aplicação, implantá-las em um ambiente qualquer – homologação ou produção – testá-la e efetuar sua entrega final.

Pipeline de Implantação● Implementação automatizada do processo de compilar todas as partes

de uma aplicação, implantá-las em um ambiente qualquer – homologação ou produção – testá-la e efetuar sua entrega final.

Princípios

Princípios● Criar um processo de confiabilidade e repetitividade de entrega de

versão

Princípios● Criar um processo de confiabilidade e repetitividade de entrega de

versão● Automatize quase tudo

Princípios● Criar um processo de confiabilidade e repetitividade de entrega de

versão● Automatize quase tudo● Mantenha tudo sob controle de versão

Princípios● Criar um processo de confiabilidade e repetitividade de entrega de

versão● Automatize quase tudo● Mantenha tudo sob controle de versão● Se é difícil, faça com mais frequência e amenize o sofrimento

Princípios● Criar um processo de confiabilidade e repetitividade de entrega de

versão● Automatize quase tudo● Mantenha tudo sob controle de versão● Se é difícil, faça com mais frequência e amenize o sofrimento● A qualidade DEVE estar presente desde o início

Princípios● Criar um processo de confiabilidade e repetitividade de entrega de

versão● Automatize quase tudo● Mantenha tudo sob controle de versão● Se é difícil, faça com mais frequência e amenize o sofrimento● A qualidade DEVE estar presente desde o início● Pronto quer dizer versão entregue

Princípios● Criar um processo de confiabilidade e repetitividade de entrega de

versão● Automatize quase tudo● Mantenha tudo sob controle de versão● Se é difícil, faça com mais frequência e amenize o sofrimento● A qualidade DEVE estar presente desde o início● Pronto quer dizer versão entregue● Todos são responsáveis pelo processo de entrega

Princípios● Criar um processo de confiabilidade e repetitividade de entrega de

versão● Automatize quase tudo● Mantenha tudo sob controle de versão● Se é difícil, faça com mais frequência e amenize o sofrimento● A qualidade DEVE estar presente desde o início● Pronto quer dizer versão entregue● Todos são responsáveis pelo processo de entrega● Melhoria Contínua

Práticas

Práticas● Compile seus binários somente uma vez

Práticas● Compile seus binários somente uma vez● Faça a implementação da mesma maneira em cada ambiente

Práticas● Compile seus binários somente uma vez● Faça a implementação da mesma maneira em cada ambiente● Use Smoke Tests

Práticas● Compile seus binários somente uma vez● Faça a implementação da mesma maneira em cada ambiente● Use Smoke Tests● Implante em uma cópia de Produção

Práticas● Compile seus binários somente uma vez● Faça a implementação da mesma maneira em cada ambiente● Use Smoke Tests● Implante em uma cópia de Produção● Cada mudança deve ser propagada pelo pipeline instantaneamente

Práticas● Compile seus binários somente uma vez● Faça a implementação da mesma maneira em cada ambiente● Use Smoke Tests● Implante em uma cópia de Produção● Cada mudança deve ser propagada pelo pipeline instantaneamente● Se qualquer parte do pipeline falhar, pare o processo

Exemplo

@samantacicilia

Pipeline na Prática

Estágio de Commit

Estágio de Commit

Estágio de Commit● Entrada: Código

○ compilar projeto;○ executar testes unitários;○ executar Sonar;○ gerar binário;○ armazenar no repositório (binário + propriedades).

Estágio de Commit● Entrada: Código

○ compilar projeto;○ executar testes unitários;○ executar Sonar;○ gerar binário;○ armazenar no repositório (binário + propriedades).

● Saída: Binários e Relatórios

Deploy em INTEGRAÇÃO

Deploy em INTEGRAÇÃO

Deploy em INTEGRAÇÃO● Entrada: Versão para Deploy

○ pegar binário no repositório;○ verificar propriedades do binário (pode fazer deploy?);○ executar deploy em Integração;○ atualizar propriedades do binário.

Deploy em INTEGRAÇÃO● Entrada: Versão para Deploy

○ pegar binário no repositório;○ verificar propriedades do binário (pode fazer deploy?);○ executar deploy em Integração;○ atualizar propriedades do binário.

● Saída: Servidores e propriedades do binário atualizados

Promover para STAGING

Deploy STAGING

Deploy STAGING

Deploy em STAGING

Deploy em STAGING

Deploy em STAGING● Entrada: Versão para Deploy

○ pegar binário no repositório;○ verificar propriedades do binário (pode fazer deploy?);○ executar deploy em Staging;○ atualizar propriedades do binário.

Deploy em STAGING● Entrada: Versão para Deploy

○ pegar binário no repositório;○ verificar propriedades do binário (pode fazer deploy?);○ executar deploy em Staging;○ atualizar propriedades do binário.

● Saída: Servidores e propriedades do binário atualizados

Promover para PRODUÇÃO

Promover para PRODUÇÃO

Promover para PRODUÇÃO

Promover para PRODUÇÃO

Promover para PRODUÇÃO

Promover para PRODUÇÃO

Promover para PRODUÇÃO

Análise de Log Automatizada

Análise de Log Automatizada● Logs da Aplicação;

Análise de Log Automatizada● Logs da Aplicação;● Sumarização do TOP 15 erros que mais ocorreram;

Análise de Log Automatizada● Logs da Aplicação;● Sumarização do TOP 15 erros que mais ocorreram;● Verificação de erros 404 e 50X;

Análise de Log Automatizada● Logs da Aplicação;● Sumarização do TOP 15 erros que mais ocorreram;● Verificação de erros 404 e 50X;● Envio de e-mail para todos os responsáveis;

Análise de Log Automatizada● Logs da Aplicação;● Sumarização do TOP 15 erros que mais ocorreram;● Verificação de erros 404 e 50X;● Envio de e-mail para todos os responsáveis;● Tomada de decisão se o processo vai até o final (Deploy em

PRODUÇÃO);

Análise de Log Automatizada● Logs da Aplicação;● Sumarização do TOP 15 erros que mais ocorreram;● Verificação de erros 404 e 50X;● Envio de e-mail para todos os responsáveis;● Tomada de decisão se o processo vai até o final (Deploy em

PRODUÇÃO);● Muito importante para os produtos mais antigos;

Análise de Log Automatizada● Logs da Aplicação;● Sumarização do TOP 15 erros que mais ocorreram;● Verificação de erros 404 e 50X;● Envio de e-mail para todos os responsáveis;● Tomada de decisão se o processo vai até o final (Deploy em

PRODUÇÃO);● Muito importante para os produtos mais antigos;● Preocupação de OPS.

Análise de Log Automatizada

Testes de Performance Automatizados

Testes de Performance Automatizados● Scritps do Jmeter;

Testes de Performance Automatizados● Scritps do Jmeter;● Cenários pré-definidos;

Testes de Performance Automatizados● Scritps do Jmeter;● Cenários pré-definidos;● Limite máximo aceitável de tempo.

Testes de Performance Automatizados● Scritps do Jmeter;● Cenários pré-definidos;● Limite máximo aceitável de tempo.

Abrir Coordenação de Mudança Automática

Abrir Coordenação de Mudança Automática

Deploy em PRODUÇÃO

Deploy em PRODUÇÃO

Deploy em PRODUÇÃO

Deploy em PRODUÇÃO

Deploy em PRODUÇÃO● Entrada: Versão para Deploy

○ pegar binário no repositório;○ verificar propriedades do binário (pode fazer deploy?);○ executar deploy em Produção;○ atualizar propriedades do binário.

Deploy em PRODUÇÃO● Entrada: Versão para Deploy

○ pegar binário no repositório;○ verificar propriedades do binário (pode fazer deploy?);○ executar deploy em Produção;○ atualizar propriedades do binário.

● Saída: Servidores e propriedades do binário atualizados

Resultados

@samantacicilia

Alguns Resultados

Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);

Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);• Deploy em qualquer horário;

Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);• Deploy em qualquer horário;• 90 pipelines em 1 ano;

Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);• Deploy em qualquer horário;• 90 pipelines em 1 ano;

Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);• Deploy em qualquer horário;• 90 pipelines em 1 ano;• Devs fazem Deploy em PRODUÇÃO \o/;

Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);• Deploy em qualquer horário;• 90 pipelines em 1 ano;• Devs fazem Deploy em PRODUÇÃO \o/;• Tempo de entrega

Alguns Resultados• Deploys por camadas (Tomcat, Apache, Varnish, Solr, Serviços);• Deploy em qualquer horário;• 90 pipelines em 1 ano;• Devs fazem Deploy em PRODUÇÃO \o/;• Tempo de entrega (2 horas).

Referências

@samantacicilia

Referências

Referências

Contatos➔ testedesoftware.com➔ rtstreinamentos.com.br➔ medium.com/@samantacicilia

➔ Linkedin: Samanta Cicilia➔ Twitter: @samantacicilia➔ Slideshare: pt.slideshare.net/samantacicilia/➔ Email: [email protected]➔ Email: [email protected]