Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Entrega Contínua de uma solução de Integração Contínua

Entrega Contínua de uma solução de Integração Contínua

Práticas e Técnicas utilizadas pela equipe de desenvolvimento do Snap para fazer Entrega Contínua da sua aplicação.

Marco Valtas

August 28, 2014
Tweet

More Decks by Marco Valtas

Other Decks in Technology

Transcript

  1. B e m v i n d o s ENTREGA

    CONTÍNUA DE UMA SOLUÇÃO DE INTEGRAÇÃO CONTÍNUA Chega de teoria vamos falar da prática, mas antes…
  2. OBJETIVOS Mostrar um exemplo das práticas de Entrega Contínua implementadas

    num projeto real e não apenas a teoria. Que vocês tenham uma ideia melhor de como essas práticas são empregadas e executadas, e como elas podem ser aplicadas em seus próprios projetos. 4
  3. ENTREGA CONTÍNUA "Entrega Contínua é uma disciplina de desenvolvimento de

    software que reduz o custo, tempo, e o risco da entrega de mudanças incrementais aos usuários.” Grupo da Prática de Entrega Contínua (TW) 6 "O software é construído de tal maneira que pode ser colocado em produção a qualquer momento.” Jez Humble / Martin Fowler
  4. ENTREGA CONTÍNUA - 8 PRINCÍPIOS Criar um processo de confiabilidade

    e repetibilidade 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 7
  5. 8

  6. SNAP - EQUIPE DE DESENVOLVIMENTO 1 product owner 6 desenvolvedores

    7 analistas de qualidade 7 DBA’s 7 designers 7 administradores de sistema 7 scrum masters 7 … 11
  7. SNAP - IMPLANTAÇÕES / DEPLOYMENTS 14 6/9/14 0:00 6/23/14 0:00

    7/7/14 0:00 7/21/14 0:00 8/4/14 0:00 8/18/14 0:00 11 0 1 2 3 4 5 6 7 8 9 10 Weeks Deployments Average: 5 deploys/week
  8. PRÁTICAS ÁGEIS - CONTROLE DE VERSÃO Git Absolutamente tudo está

    no controle de versão Código da aplicação e micro-serviços Configuração da Infra-Estrutura Configuração do ambiente de desenvolvimento (Vagrant) Blog / Documentação Outras dependências (binários de linguagem, imagens de containers e etc) 18
  9. PRÁTICAS ÁGEIS - BRANCHING / MERGING 19 Smoke Staging Produção

    Master Release Promoção Branches de funcionalidade curtos Master e Release não se distanciam Vamos remover o Smoke no futuro A aplicação é compilada em Staging
  10. PRÁTICAS ÁGEIS - TESTES 20 Testes de Regressão Testes de

    UI Testes de Integração Testes Unitários 33 716 1372 4 TDD - Test Driven Development (quase sempre)
  11. INFRA-ESTRUTURA - AWS CLOUDFORMATION 25 WWW WWW BUILD SERVER BUILD

    SERVER LOAD BALANCER DB 1109 linhas de configuração 748 linhas de código
  12. GERENCIAMENTO DE CONFIGURAÇÕES E INFRA 28 66 cookbooks Gerencia todas

    configurações dos servidores Gerencia o ambiente local (Vagrant) Gerencia as configurações dos containers É utilizado para configurar os builds dos usuários Executa scripts para CloudFormation (VPC, DNS, EC2, S3,…) Executa scripts para Deployments/Implantações (Azul/Verde) Rake Num eventual desastre somos capazes de reconstruir toda a infra-estrutura em aproximadamente duas horas.
  13. FEATURE TOGGLES / BACKWARD COMPATIBILITY 29 class ChangeProvisioningStatusToProvisionedCount < ActiveRecord::Migration

    def up add_column :projects, :provisioned_count, :integer, :default => 0 rename_column :projects, :provisioning_status, :x_provisioning_status end ! def down rename_column :projects, :x_provisioning_status, :provisioning_status remove_column :projects, :provisioned_count end end !
  14. SUPORTE 31 PagerDuty / ZenDesk Aquele que estiver de plantão,

    senão estiver atendendo um chamado trabalha nos bugs.
  15. ANÁLISE DE DADOS 33 Go  to  this  report Jul  21,

     2014 -­ Aug  20,  2014 Compare  to:  Jun  20,  2014 -­ Jul  20,  2014 Behavior  Flow +  Add  Segment Landing  Page 30.1K  sessions,  20.1K  drop-­offs 9.97K  sessions,  3.15K  drop-­offs 6.82K  sessions,  3.05K  drop-­offs 3.77K  sessions,  1.75K  drop-­offs Starting  pages 1st  Interaction 2nd  Interaction 3rd  Interaction snap-­ci.com/ 11.7K ▲60% ... 6.96K ▼0.9% snap-­ci.com...s-­delivery 3.49K ▲163% snap-­ci.com...learn_more 7.96K ▲170% / 0 ▼100% /learn_more 0 ▼100% Homepage 11.7K ▲330% (+9  more  pages) 1.73K ▲>500% (not  set) 12.1K ▼39% Blog 1.08K ▲>500% Dashboard 1.51K ▲307% Build  History 2K ▲273% Docs 2.12K ▲>500% Plans  Page 4.12K ▲211% Dashboard 726 ▲312% Blog 403 ▲475% (+9  more  pages) 1.04K ▲121% Build  History 1.56K ▲354% Blog 593 ▲>500% Build  History 769 ▲377% Docs 2.7K ▲423% Homepage 656 ▲27% (not  set) 444 ▲44% (+10  more  pages) 1.66K ▲478% Docs 484 ▲>500% (+9  more  pages) 789 ▲114% Plans  Page 429 ▲293% Blog 1.07K ▲478% Build  History 731 ▲393% Dashboard 265 ▲167% ⇩ ⇩ ©  2014  Google All  Sessions +0.00% Google Analytics MixPanel Não deixe para a última hora pensar sobre seus dados.