Continuous Delivery
“Entrega Contínua”
            Marco Valtas (@mavcunha)
                 ThoughtWorks




Feedback e perguntas: #agilevale #cd
 Material Inspirado nas apresentações de Jez Humble e Tim Brown
Pesquisa Rápida
  Qual é a sua
   profissão?

  Desenvolvedor?
  Gerente de Projeto?
  Administrador de BD?
  Analista de Qualidade?
  Analista de Produto?
Pesquisa Rápida
      Qual é
 o tamanho da sua
     empresa?
    Alguns (entre trinta)
    De respeito (mais de cem)
    Grande (mais de
 quinhentos)
    A perder de vista
       (dez
Pesquisa Rápida
       Quantos
dias p/ funcionalidade
 entrar em produção?

    Alguns (entre trinta)
    De respeito (mais de cem)
    Grande (mais de
 quinhentos)
    A perder de vista
        (dez
Pesquisa Rápida

         "How long would it take
    your organization to deploy a
  change that involves just one single
line of code? Do you do this on a
 repeatable, reliable basis?"
     Mary & Tom Poppendieck - Implement Lean
         Software Development.
Software
Desenvolvedor




                           Usuário
Software
Desenvolvedor




                           Usuário
Software
                  Version
Desenvolvedores   Control




                             Usuário
Software
                  Version   Continuous
Desenvolvedores   Control   Integration




                                          Usuário
Software
                             Version     Continuous
Desenvolvedores              Control     Integration




                  Preview




                            Analista        Novas
                                       funcionalidades
                                                         Usuário
Software
                             Version     Continuous
Desenvolvedores              Control     Integration




                  Preview




     Qualidade
                            Analista        Novas
                                       funcionalidades
                                                         Usuário
Software
                             Version     Continuous
Desenvolvedores              Control     Integration



                                                         Sys Admin


                  Preview




     Qualidade
                            Analista        Novas
                                       funcionalidades
                                                                     Usuário
Software
                             Version     Continuous
                                                                     DBA

Desenvolvedores              Control     Integration



                                                         Sys Admin


                  Preview




     Qualidade
                            Analista        Novas
                                       funcionalidades
                                                                     Usuário
Entrega Contínua
                                          Testes de
Idéia   Planejamento   Dev   Integração               Implantação
                                           Release
Entrega Contínua
                                                  Testes de
        Idéia   Planejamento   Dev   Integração               Implantação
                                                   Release




 a lo
V r




       e ra
E sp
Entrega Contínua
                                              Testes de
Idéia   Planejamento   Dev      Integração                Implantação
                                               Release




                             Agile Movement
Entrega Contínua
                                                 Testes de
Idéia   Planejamento   Dev      Integração                     Implantação
                                                  Release




                             Agile Movement


                                             DevOps Movement
Entrega Contínua
                                                 Testes de
Idéia   Planejamento   Dev      Integração                     Implantação
                                                  Release




                             Agile Movement


                                             DevOps Movement

                                Continuous Delivery
Dicotomia
                  Diretoria de T.I.


       Mais Rápido!                   Mais Estável!




Desenvolvimento                         Operações
É Possível?
É Possível?
  Feedback
      e
Automatização
É Possível?




(18/08/2011) http://code.flickr.com
Testes, testes, testes

Aceitação

Integração

Unitários
Testes, testes, testes

Aceitação

Integração

Unitários

             Quantidade
Testes, testes, testes
                          Custo

Aceitação

Integração

Unitários

             Quantidade
Testes, testes, testes
                          Custo

Aceitação

Integração

Unitários

             Quantidade           Velocidade
Testes, testes, testes
                          Custo         Complexidade

Aceitação

Integração

Unitários

             Quantidade           Velocidade
ão
        Testes, testes, testes
 itaç




            Unitários       Unitários    Unitários
Ace




                     Integração   Integração

80% de cobertura
por tipo de teste.
Integração Contínua
Desenvolvedor                   Controle
                                de Versão

                     Check In
                                                          Artefatos (Binários)
                                                           são um potencial
                                                                release
                                       Mudança
                                       Detectada



                Feedback                           Repositório de artefatos




                                Integração
                                 Contínua
Controle de Versão




          http://derekring.blogspot.com/2010/09/back-to-future-is-now-available.html
Controle de Versão

           Release Branch
Controle de Versão
              Feature Branch
Controle de Versão
              Feature Branch




              Release Branch
Controle de Versão
              Feature Branch



                  OUCH!




              Release Branch
Controle de Versão
              Feature Branch



                  OUCH!




              Release Branch
Controle de Versão
       No Branch / Experimental Branch




   Todos fazem check in na linha
     principal (trunk / head)
Branch por Abstração
                    Biblioteca




Aplicação
Branch por Abstração
                    Biblioteca




Aplicação




                    Biblioteca
Branch por Abstração
                         Biblioteca




Aplicação   Interface   Implementa



                         Biblioteca
Branch por Abstração
                         Biblioteca




Aplicação   Interface   Implementa



                         Biblioteca
Branch por Abstração
                         Biblioteca




Aplicação   Interface   Implementa



                         Biblioteca
Branch por Abstração
                         Biblioteca




Aplicação   Interface   Implementa



                         Biblioteca
Branch por Abstração


Aplicação   Interface   Implementa



                         Biblioteca
Branch por Abstração


Aplicação




                    Biblioteca
Flags de
Funcionalidade


coolNewTheme = false
Flags de
Funcionalidade


coolNewTheme =   true
Banco de Dados



           http://xkcd.com/327/
Banco de Dados

      •Sempre um case “especial”
      •Dados são Persistentes
      •Rollback é doloroso
      •Pouca Colaboração
Banco de Dados
                       Controle
                       de Versão




             Deltas




          •dbdeploy
Estado    •LiquiBase               Estado
Inicial                             Final
Banco de Dados

      •Refatoração
      •Mudanças no BD comunicadas
      aos DBA’s pelo I.C.
      •Pratique os deploys
      •Evite mudanças manuais
Implantação




         http://xkcd.com/918/
Verde - Azul
          Web    App    DB




Router
Verde - Azul
          Web     App     DB


          v 1.1   v 1.1   v 1.1



Router
Verde - Azul
          Web     App     DB


          v 1.1   v 1.1   v 1.1



Router
          v 2.0   v 2.0   v 2.0
Dark Launching
Dark Launching


UI        Aplicação



            Nova
        Funcionalidade
Canary Release
Canary Release



Router
Canary Release



Router
Provisionamento



Sysadmin
Provisionamento



Sysadmin
Provisionamento
                      Puppet!




Sysadmin




http://www.puppetlabs.com/
Princípios
•Crie um processo repetível e confiável para a entrega de software.
•Automatize tudo o que for possível.
•Pessoas devem se ocupar com tarefas de alto valor.
•Todos os envolvidos estão envolvidos (DBA’s, SysAdmins...).
•Tudo no controle de versão.
•Todos são responsáveis pela entrega.
Obrigado


Marco Valtas (@mavcunha)
     ThoughtWorks

Continuous delivery

Notas do Editor

  • #2 \n
  • #3 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #4 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #5 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #6 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #7 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #8 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #9 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #10 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #11 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #12 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #13 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #14 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #15 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #16 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #17 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #18 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #19 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #20 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #21 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #22 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #23 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #24 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #25 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #26 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #27 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #28 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #29 - O que é? E o que fazemos na ThoughtWorks?\n- É um lugar onde os desenvolvedores recebem o respeito que merecem.\n- Onde somos apaixonados por software e desenvolvemos nas horas vagas.\n- Onde levamos muito a sério o que fazemos...\n- ... mas não necessariamente as roupas.\n- Onde usamos legos para mostrar a nós e aos clientes como desenvolvemos software.\n- Onde diversidade é importante.\n- Ás vezes trabalhamos em situações adversas....\n- mas com a colegas talentosos a gente supera o desafio.\n- tudo para entregar o melhor software o melhor valor.\n
  • #30 - E por último estes são ou foram seus colegas de trabalho.\n
  • #31 - E por último estes são ou foram seus colegas de trabalho.\n
  • #32 - E por último estes são ou foram seus colegas de trabalho.\n
  • #33 - E por último estes são ou foram seus colegas de trabalho.\n
  • #34 - E por último estes são ou foram seus colegas de trabalho.\n
  • #35 \n
  • #36 \n
  • #37 \n
  • #38 \n
  • #39 \n
  • #40 \n
  • #41 \n
  • #42 \n
  • #43 \n
  • #44 \n
  • #45 \n
  • #46 \n
  • #47 \n
  • #48 \n
  • #49 \n
  • #50 \n
  • #51 \n
  • #52 \n
  • #53 \n
  • #54 \n
  • #55 \n
  • #56 \n
  • #57 \n
  • #58 \n
  • #59 \n
  • #60 \n
  • #61 \n
  • #62 \n
  • #63 \n
  • #64 \n
  • #65 \n
  • #66 \n
  • #67 \n
  • #68 \n
  • #69 \n
  • #70 \n
  • #71 \n
  • #72 \n
  • #73 \n
  • #74 \n
  • #75 \n
  • #76 \n
  • #77 \n
  • #78 \n
  • #79 \n
  • #80 \n
  • #81 \n
  • #82 \n
  • #83 \n
  • #84 \n
  • #85 \n
  • #86 \n
  • #87 \n
  • #88 \n
  • #89 \n
  • #90 \n
  • #91 \n
  • #92 \n
  • #93 \n
  • #94 \n
  • #95 \n
  • #96 \n
  • #97 \n
  • #98 \n
  • #99 \n
  • #100 \n
  • #101 \n
  • #102 \n
  • #103 \n
  • #104 \n