SlideShare uma empresa Scribd logo
1 de 50
Con$nuous	
  Delivery	
  
                                                           	
  
Wagner	
  Roberto	
  dos	
  Santos	
  (Twi3er:	
  @wrsantos)	
  
                          Agile	
  Coache	
  /	
  Enterprise	
  Architect	
  
Hello!	
  

                                                 	
  
                                 Agile	
  experience	
  with	
  	
  
                      Investment	
  Banks	
  and	
  Retail	
  Banks	
  
                                                 	
  
                               Off-­‐shore	
  development	
  
                                Teams	
  up	
  to	
  60	
  people	
  
                                                 	
  
       Architecture,	
  IS	
  Management,	
  ExperMse,	
  and	
  methodology	
  
                                             (Agile)	
  
                                                 	
  
           Supported	
  Agile	
  adopMon	
  in	
  main	
  Banks	
  in	
  France:	
  
       Credit	
  Agricole,	
  LCL,	
  Société	
  Générale,	
  BNP	
  Parisbas/ForMs	
  
	
  
	
  
Apresentação	
  

§    Arquiteto	
  de	
  SoXware	
  /	
  Agile	
  Coach	
  /	
  SoXware	
  CraXsman	
  
§    Consultor	
  senior	
  da	
  OCTO	
  Technology	
  (h3p://www.octo.com/br)	
  
§    Instrutor	
  da	
  Globalcode	
  da	
  formação	
  Academia	
  Agile	
  e	
  Arquiteto	
  
§    Editor	
  do	
  Portal	
  InfoQ	
  Brasil	
  (h3p://infoq.com/br).	
  
§    ParMcipação	
  nos	
  projetos	
  de	
  tradução	
  e	
  teste	
  do	
  NetBeans.	
  
§    Palestrante	
  de	
  eventos	
  como	
  Just	
  Java,	
  Sun	
  Tech	
  Days,	
  Campus	
  
      Party.	
  
§    Premiações	
  em	
  compeMções	
  de	
  tecnologia	
  .	
  
§    Autor	
  de	
  vários	
  arMgos	
  para	
  as	
  revistas	
  Mundo	
  Java	
  e	
  Java	
  Magazine	
  
§    CerMficações:	
  SCJA,	
  SCJP,	
  SCSNI,	
  SCJWSD,	
  SCBCD,	
  SCEA,	
  CSM	
  e	
  ACP.	
  
§    Mantém	
  o	
  blog	
  h3p://neeeijao.blogspot.com	
  
§    Twi3er:	
  @wrsantos	
  
Agenda	
  


    Desafios em um processo de Desenvolvimento
    SCM
    Criando uma Software Factory
    Deployment Pipeline
    Infra-estrutura Agile




© OCTO 2011                                                   4
Desafio:	
  Qualidade	
  
§  Erros	
  em	
  IT	
  tem	
  um	
  forte	
  impacto	
  nas	
  operações	
  
      «	
  Customers’	
  accounts	
  of	
  BNP	
  Paribas	
  have	
  been	
  debited	
  or	
  credited	
  by	
  
            error	
  »	
  (February	
  2009)	
  
      «	
  A	
  bug	
  on	
  French	
  telecom	
  operator	
  »	
  (February	
  2010)	
  
      «	
  Big	
  IT	
  bug	
  at	
  the	
  SNCF	
  today	
  (French	
  Railroad	
  company)	
  »	
  (May	
  2010)	
  

§  Medir	
  a	
  Qualidade	
  
      §  Ter	
  métricas	
  de	
  qualidade	
  disponíveis	
  




 © OCTO 2011                                                                                                             5
Desafio:	
  produMvidade	
  e	
  integração	
  
§  Produtividade
     §  Focar	
  em	
  aMvidades	
  que	
  realmente	
  adicionam	
  valor	
  
     §  Reduzir	
  tarefas	
  manuais	
  e	
  recorrentes	
  



§  Dificuldades de Integração
     §  Eliminar	
  as	
  aMvidades	
  de	
  merge	
  e	
  integração	
  
     §  Minimizar	
  os	
  riscos	
  e	
  esforços	
  necessários	
  para	
  instalar	
  a	
  aplicação	
  em	
  
         ambiente	
  de	
  produção	
  




© OCTO 2011                                                                                                          6
Agile	
  101	
  




                           Arquitetura & Design
                           Testes & Codificação          Integração    Operações
                           Demonstração                     & QA          TI
Cliente                       It1 .. It2 .. It3 .. ItN

                                   Iterações                  O Último KM




                                                                                  7
 © Université du Système d’Information
ConMnuous	
  Delivery	
  
§  Princípios
     §    Criar um processo confiável, repetitível para entrega do Software
     §    Automatizar tudo que é possível
     §    Manter tudo no Sistema de Controle de Versão
     §    Se causa dor, faça isto mais frequentemente, and traga a dor para perto
     §    Construa com qualidade inserida
     §    Todos são responsáveis pelo processo de Delivery
     §    Melhoria Contínua




© OCTO 2011                                                                          8
Agenda	
  


    Desafios em um processo de Desenvolvimento
    SCM
    Criando uma Software Factory
    Deployment Pipeline
    Infra-estrutura Agile




© OCTO 2011                                                   9
Value	
  Stream	
  Mapping	
  


  PLANEJAMENTO
     e DESIGN            CONSTRUÇÃO          HOMOLOGAÇÃO             DEPLOYMENT              SUSTENTAÇÃO



•  Identificar as      •  Recuperar o       •  Criar uma tag       •  Criar uma tag       •  Arrumar os bugs
   aplicações e           còdigo para o        para a nova            para a nova            críticos e
   módulos                desenvolvimento      versão para teste      versão pronta          urgentes no
   necessårios para    •  Desenvolver,      •  Criar um novo          para deploy.           branch de
   o projeto              check-out,           branch a partir     •  Criar um branch a      manutenção
•  Definir qual           merge, testar e      desta tag para         partir desta tag    •  Efetuar o merge
   versão das             commit               correções              para manutenção        destas correções
   funcionalidades o                        •  Arrumar os bugs e      e tratamento de        nos branches de
   projeto ser                                 efetuar as             bug                    test
   desenvolvido                                alterações no                                 desenvolvimento
•  Define qual                                 branch
   versao das                               •  Efetuar o merge
   aplicações e                                das correções
   módulos que o                               com o trunk de
   desenvolvedores                             desenvolvimento
   irao utilizar                               para evitar
                                               regressões




© OCTO 2011                                                                                                     10
SCM	
  
§  Problemas	
  de	
  Merge?	
  




                                            11
© Université du Système d’Information
Conceitos	
  

§  Trunk
     §  ÚlMma	
  versão	
  do	
  desenvolvimento	
  
     §  O	
  Mme	
  de	
  desenvolvimento	
  faz	
  commits	
  diários	
  no	
  trunk.	
  
     §  É	
  a	
  baseline	
  para	
  o	
  Mme	
  de	
  desenvolvimento	
  
     §  Para	
  toda	
  correção	
  no	
  branch	
  deve	
  ser	
  feito	
  o	
  merge	
  no	
  trunk.	
  
§  Branch
     §  Branch	
  de	
  Homologação	
  
             •  Fazer	
  as	
  correções	
  de	
  bug	
  e	
  modificações	
  de	
  um	
  aplicaMvo	
  que	
  está	
  em	
  
                fase	
  de	
  teste	
  /	
  homologação	
  
      §  Branch	
  de	
  Release	
  
             •  Para	
  cada	
  release	
  novo	
  do	
  aplicaMvo,	
  é	
  criado	
  um	
  Branch	
  de	
  Release.	
  
§  Tags
      §  São	
  uMlizadas	
  para	
  idenMficar	
  pontos	
  significantes	
  de	
  alteração	
  na	
  
          linha	
  do	
  tempo,	
  incluindo	
  releases	
  e	
  finalizações	
  de	
  bugs	
  

    © OCTO 2011                                                                                                               12
Estrutura	
  de	
  SCV	
  
§  Projeto Simples
    §  Exemplo	
  de	
  um	
  projeto	
  simples.	
  




   © OCTO 2011                                                                        13
Estrutura	
  de	
  SCV	
  

§  Múltiplos Projetos
    §  Exemplo	
  de	
  um	
  ambiente	
  com	
  múlMplos	
  projetos.	
  




  © OCTO 2011                                                                                         14
Recomendação	
  de	
  Uso	
  de	
  Tags	
  e	
  Branches	
  

§  Release Branches
     §  Cada	
  release	
  do	
  projeto	
  em	
  um	
  branch	
  separado.	
  
§  Releases (Tags)
     §  O	
  Release	
  Branch	
  pode	
  conter	
  um	
  (e	
  possivelmente	
  mais)	
  releases,	
  
         para	
  os	
  pontos	
  nas	
  quais	
  o	
  projeto	
  é	
  lançado,	
  podemos	
  uMlizar	
  as	
  tags	
  
         de	
  release	
  para	
  idenMficar	
  estes	
  pontos.	
  	
  
§  Bug Fixes
     §  Bugs	
  descobertos	
  na	
  Release	
  são	
  tratadas	
  na	
  Release	
  Branch.	
  Em	
  
         casos	
  onde	
  o	
  bug	
  é	
  arrumado	
  em	
  um	
  commit,	
  o	
  número	
  da	
  revisão	
  do	
  
         Subversion	
  já	
  é	
  suficiente.	
  	
  
     §  Tags	
  pode	
  ser	
  criadas	
  para	
  marcar	
  o	
  início	
  e	
  fim	
  do	
  acerto	
  no	
  bug.	
  
§  Development Experiments
     §  Quando	
  o	
  Mme	
  for	
  pesquisar	
  uma	
  tecnologia	
  nova,	
  ou	
  fazer	
  uma	
  
         mudança	
  muito	
  significaMva	
  na	
  aplicação,	
  que	
  pode	
  comprometer	
  o	
  
         design	
  da	
  aplicação..	
  
   © OCTO 2011                                                                                                           15
Recomendação	
  de	
  Uso	
  de	
  Tags	
  e	
  Branches	
  


                Nome     	
                                	
  
                                                        Es$lo                             	
  
                                                                                   Exemplos
 Test	
  Release	
                TEST-­‐versao	
                 TEST-­‐1.1	
  
 Test	
  branch	
                 TB-­‐versao	
                   TB-­‐1.1	
  
 Releases	
                       RELEASE-­‐rel	
                 RELEASE-­‐1.0	
  
                                                                  RELEASE-­‐1.0.1a	
  
 Release	
  branch	
              RB-­‐rel	
                      RB-­‐1.0	
  
 Development	
  Experiments	
     TRY-­‐descrição	
               TRY-­‐MR-­‐nhibernate	
  




Legenda

rel: Número da Release
versao: Número da Versão
© OCTO 2011                                                                                      16
Estrutura	
  Interna	
  de	
  um	
  AplicaMvo	
  

§  Todo projeto deve seguir um padrão de estrutura de diretórios na
    criação de um Projeto
§  Para a pasta raiz dos projetos (trunk/), é sugerido criar os seguintes
    arquivos:
     §  README	
  
          •  Deve	
  servir	
  para	
  ajudar	
  novos	
  arquitetos,	
  ou	
  qualquer	
  outra	
  pessoa	
  
             interessada	
  em	
  conhecer	
  o	
  básico	
  sobre	
  o	
  projeto.	
  
          •  Escrever	
  um	
  parágrafo	
  descrevendo	
  o	
  projeto,	
  os	
  problemas	
  que	
  ele	
  visa	
  
             resolver,	
  a	
  tecnologia	
  uMlizada,	
  entre	
  outras	
  informações	
  perMnentes	
  ao	
  
             projeto.	
  
    §  BUILDING	
  
          •  Descreve	
  as	
  tarefas	
  necessárias	
  para	
  fazer	
  o	
  build	
  do	
  código.	
  
    §  GLOSSARY	
  
          •  Colocar	
  os	
  termos,	
  jargões	
  específicos	
  do	
  projeto.	
  Para	
  facilitar	
  a	
  vida	
  dos	
  
             desenvolvedores,	
  quando	
  em	
  algum	
  momento	
  se	
  depararem	
  com	
  um	
  
             termo	
  muito	
  específico.	
  
  © OCTO 2011                                                                                                                   17
Estrutura	
  Interna	
  de	
  um	
  AplicaMvo	
  
§  Para a pasta raiz dos projetos (trunk/), é sugerido criar os seguintes
   diretórios:
    §  bin/	
  (vendor/Assembly)	
  
           •  Se	
  o	
  projeto	
  uMliza	
  bibliotecas	
  de	
  terceiros	
  ou	
  outros	
  artefatos	
  que	
  é	
  
              preciso	
  para	
  o	
  bom	
  funcionamento	
  do	
  sistema,	
  este	
  é	
  a	
  pasta	
  é	
  o	
  lugar.	
  
    §  doc/	
  
           •  Documentos,	
  manuais	
  e	
  emails	
  referentes	
  ao	
  projeto.	
  
    §  db/	
  
           •  Se	
  o	
  projeto	
  uMliza	
  Banco	
  de	
  Dados,	
  armazenar	
  todos	
  os	
  artefatos	
  
              relacionados	
  ao	
  schema	
  aqui.	
  Exemplo	
  scripts,	
  procedures,	
  tabelas,	
  etc...	
  
    §  src/	
  
           •  Nesta	
  pasta,	
  fica	
  a	
  estrutura	
  do	
  projeto	
  (código	
  fonte,	
  testes,	
  etc..)	
  
    §  uMl/	
  (or	
  tools/)	
  
           •  Armazenar	
  aqui	
  todos	
  os	
  uMlitários,	
  ferramentas	
  e	
  scripts	
  do	
  projeto.	
  
    §  publish/	
  
           •  Executáveis	
  e	
  binários	
  do	
  sistema,	
  pacotes	
  para	
  deploy	
  do	
  projeto	
  
  © OCTO 2011                                                                                                                     18
Agenda	
  


    Desafios em um processo de desenvolvimento
    SCM
    Criando uma Fábrica de Construção
    Deployment Pipeline
    Infra-estrutura Agile




© OCTO 2011                                                   19
Visão	
  Geral	
  


                     Integração
                      Contínua


        Fábrica de      Teste
        Construção   Automáticos


                     Métricas de
                     Qualidade



© OCTO 2011                                 20
Integração Contínua




   « Uma abordagem que visa a integração do código em tempo
            real, ao invés de a cada 2 ou 3 semanas »




© OCTO 2011                                                   21
Uma	
  Fábrica	
  de	
  Construção	
  dinâmica	
  

                               Desenvolvedores compilam
                                 em testam seu código
        Desenvolvedor codifica   na estação de trabalho      Desenvolvedores
          em seu IDE em sua                                 submetem o código
         estação de trabalho                            alterado para o repositório




                                                                A fábrica de construção
      Desenvolvedor faz                                          retorna todo o código
     check out do código                                             do repositório



                                                            A fábrica de construção compila,
                                                                 testa e analisa o código


                              A Fábrica de construção empacota e
                               e cria os aplicativos, entregáveis e
                           documentos e os armazena para referência


© OCTO 2011                                                                                    22
Fábrica	
  de	
  Construção:	
  as	
  Ferramentas	
  

                                                                           Retrieve	
  	
  
                                                                           dependences	
  

                           Source	
  	
                        Build	
     Compile	
  
                            code	
            Con$nuous	
  
      Local	
  	
        repository	
                                                                          Repository	
  of	
  	
  
                                              integra$on	
                 Execute	
  tests	
                    binaries	
  
      Build	
                                    server
                                                      	
  

                                                                           Verify	
  code	
  quality	
  
                                      No$fica$ons	
  


                                                                           Package	
  


                                                                           Deploy	
  

                                                                                                              Test	
  plaCorm	
  
                                                                           Document	
  

                                                                             Build

                                                                                                           Documenta$on	
  
                                                                                                             &	
  metrics	
   23
© OCTO 2011                                                                                                                               23
Não	
  é	
  somente	
  uma	
  questão	
  de	
  
                                       ferramentas	
  




© OCTO 2011                                                     24
Crie	
  uma	
  cultura	
  de	
  «	
  BUILD	
  »	
  
§  Crie	
  rituais	
  para	
  a	
  Fábrica	
  de	
  Construção	
  
            §  «	
  Quem	
  quebrar	
  o	
  build,	
  paga	
  uma	
  rodada	
  de	
  cerveja	
  J	
  »	
  




§  Todos	
  os	
  membros	
  da	
  equipe	
  são	
  responsáveis	
  pelo	
  Build	
  
            §  «	
  O	
  build	
  quebrou…minha	
  prioridade	
  top	
  é	
  acertá-­‐lo	
  »	
  
            §  Alinhar	
  o	
  Mme	
  quanto	
  a	
  qualidade	
  do	
  código	
  
	
  

       © OCTO 2011                                                                                             25
O	
  Código	
  compila,	
  mas	
  ele	
  funciona?	
  




© OCTO 2011                                                            26
Test	
  Driven	
  Development	
  



                          Write a
                         test that
                           fails



                                     Code
                                     and
              Readapt
                                     make
              the code
                                      test
                                     pass



© OCTO 2011                                                  27
Testes	
  Unitários	
  AutomaMzados	
  

    Testes unitários: ciclo do TDD se repete até o fim
      do desenvolvimento de uma funcionalidade

                                Write
                                a test
                                 that
   Write                         fails
                                                    Make
acceptance
                                                 acceptance
  tests in                               Code
                      Readapt
                                         and      tests pass
   error               code
                                         make
                                          test
                                         pass




 Um novo ciclo se repete para cada funcionalidade nova
© OCTO 2011                                                    28
Resumindo:	
  Faça	
  antes	
  em	
  seu	
  projeto	
  !	
  

           Fazer	
  integração,	
  controle	
  de	
  qualidade	
  e	
  testes	
  na	
  final	
  do	
  projeto,	
  	
  
                nos	
  dá	
  pouco	
  tempo	
  para	
  corrigir	
  problemas	
  inesperados	
  
    	
  
    Con$nuous	
  integra$on	
  permite	
  :	
  
           §    Reduzir	
  aMvidades	
  intermináveis	
  de	
  integração	
  
           §    Integrar	
  o	
  código	
  fonte	
  muito	
  antes	
  do	
  deployment	
  
           §    Planejar	
  e	
  testar	
  o	
  processo	
  de	
  deployment	
  
           §    Ter	
  acesso	
  a	
  um	
  aplicaMvo	
  demo	
  funcionando	
  antes	
  da	
  fase	
  
                 de	
  homologação	
  




© OCTO 2011                                                                                                             29
Ambiente	
  de	
  CI	
  


              Source code
              + tests          Automated     Bug and Task     Documentation
                               tests         Management       Repository

Developer




                                               Quality
               Source code     Continuous
                                               assurance
               repository      integration
                                               control




              Source code
              + tests
Developer


                               Artifact                     Automated
                 Dependences   repository                   acceptance        A new version
                                                            tests             for homologation
© OCTO 2011                                                                                  30
Métricas	
  e	
  reporMng	
  




© OCTO 2011                                   31
Uma	
  Fábrica	
  de	
  Construção	
  Adaptada	
  
§  Atualmente	
  existem	
  cada	
  vez	
  mais	
  sinergia	
  e	
  suporte	
  a	
  novas	
  tecnologias	
  
    entre	
  ferramentas	
  de	
  build	
  e	
  reporMng	
  
     Ruby,	
  Flex,	
  JavaScript,	
  PLSQL	
  ...	
  
     	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  …	
  e	
  até	
  iPhone,	
  iPad,	
  Android,	
  etc	
  

§  Feramentas	
  Especializadas	
  em	
  ConMnuous	
  integraMon	
  
        §  Team	
  FoundaMon	
  Server,	
  Hudson,	
  TeamCity,	
  Bamboo,	
  CruiseControl,	
  
            Pulse,	
  …	
  

§  Uma	
  abordagem	
  diferente	
  de	
  acordo	
  com	
  o	
  contexto	
  
        §  Metodologia	
  de	
  Projeto	
  
        §  Tecnologias	
  UMlizadas	
  
        §  Organização	
  (ex	
  :	
  SoXware	
  Houses)	
  

§  ConMnuous	
  integraMon	
  é	
  muito	
  importante!	
  

 © OCTO 2011                                                                                                                                                                                                                                    32
Fique	
  operacional	
  no	
  primeiro	
  dia	
  
§  Instalação	
  NNF	
  /	
  domine	
  a	
  instalação	
  
     §  Instalação	
  via	
  Script	
  
     §  Arvore	
  de	
  diretórios	
  e	
  configuração	
  deve	
  ser	
  o	
  mesmo	
  em	
  todas	
  
         as	
  estações	
  de	
  desenvolvimento	
  do	
  Mme	
  

§  SoluMons	
  to	
  package	
  IDE	
  
     1.  Escolha	
  uma	
  distruição	
  Eclipse	
  
              •  SpringIDE	
  from	
  SpringSource	
  
              •  Maven	
  studio	
  for	
  Eclipse	
  chez	
  Sonatype	
  
              •  …	
  
     2.  Plug-­‐ins	
  para	
  Eclipse	
  with	
  Nexus	
  




© OCTO 2011                                                                                               33
Minimizar	
  a	
  instabilidade	
  do	
  «	
  Build	
  »	
  
§  Manter	
  o	
  repositório	
  de	
  código	
  «	
  clean	
  »	
  

§  Prevenir	
  que	
  desenvolvedores	
  bloqueiem	
  uns	
  aos	
  outros	
  

§  Favorer	
  o	
  uso	
  diário	
  do	
  repositório	
  de	
  fontes	
  para	
  outros	
  artefatos	
  que	
  não	
  
     sejam	
  somente	
  código	
  fonte	
  



                                                                                    Repositório	
  de	
  
                                                                                     código	
  fonte	
  




 © OCTO 2011                                                                                                              34
Uma	
  primeira	
  solução:	
  Unbreakable	
  build	
  




                                                               Retrieve	
  	
  
                                                               dependences	
  

                      Protected	
                              Compile	
  
                     source	
  code	
     Con$nuous	
  
                      repository  	
      Integra$on   	
  
                                             Server
                                                  	
          Execute	
  tests	
  

                                                                Build	
  
    Developers	
  




© OCTO 2011                                                                          35
Evolução	
  Incremental	
  dos	
  Schemas	
  	
  
                                        do	
  banco	
  de	
  dados	
  
§  Principios	
  
     §  Toda	
  evolução	
  nos	
  schemas	
  do	
  banco	
  são	
  versionados	
  no	
  
         repositório	
  de	
  fontes	
  
     §  AutomaMzar	
  da	
  criação	
  até	
  update	
  do	
  schema	
  do	
  banco	
  
     §  Altere	
  os	
  schemas	
  de	
  maneira	
  incremental	
  


§  Ferramentas	
  
     §  Team	
  system	
  Database	
  
     	
  




© OCTO 2011                                                                                  36
Profiled	
  build	
  


                                                                                                                      10 min

                                                                     Build	
  rapide	
  :	
  tests	
  unitaires	
  

                                                                                                                       night

                                                                     Build	
  documenta$on	
  

                                                                                                                        4h
                           Source	
  code	
  	
                      Build	
  integra$on	
  tests	
  
                            repository	
  
                                                    Con$nuous	
  
      Local	
  Build	
                              integra$on	
                                                       night
                                                       server
                                                            	
  
                                                                     Build	
  quality	
  metrics	
  
                                                                                                                        On
                                                                                                                      request
                                                                     Full	
  	
  

                                                                                                                        On
                                                                                                                      request
                 ...                                                 Package	
              ...
© OCTO 2011                                                                                                                     37
Distributed	
  build	
  
                                                                                                                                   ƒ	
  

                                                                                 Build	
  documenta$on	
  
                                                                                                                                  240	
  



                                                              Agent	
  	
        Build	
  integra$on	
  tests	
  

                                                                                                                                  10	
  


                   Source	
  code	
  	
                                          Build	
  rapide	
  :	
  tests	
  unitaires	
  
                    repository	
  
                                             Con$nuous	
  
   Local	
  	
                               integra$on	
                                                                          ƒ	
  
   build	
  

                                            (master)	
                           Build	
  quality	
  metrics	
  
                                                                                                                                  N	
  

                                                                                 Complete	
  build	
  
                                                                                                                                  N	
  
                                                              Agent	
  
                                                                                 Package	
  
© OCTO 2011                                                                                                                                 38
Na	
  Cloud	
  
§  Tome	
  vantagem	
  de	
  uma	
  solução	
  de	
  cloud	
  flexível	
  
	
  
§  Procure	
  por	
  soluções	
  completas	
  

§  Externalize	
  somente	
  o	
  build	
  
            §  Virtual	
  machine	
  pronta	
  para	
  uso	
  
            §  Plugin	
  Hudson	
  em	
  EC2	
  	
  




       © OCTO 2011                                                                             39
Big	
  visible	
  chart	
  &	
  Extreme	
  feeback	
  device	
  
«	
  Alinhe	
  o	
  Tme	
  com	
  ferramentas	
  visuais	
  comparTlhadas	
  »	
  

§  Radiadores	
  (Sonar,	
  Hudson,	
  …)	
  
§  AmbientOrb	
  
§  Nabastaz	
  
Agenda	
  


    Desafios em um processo de Desenvolvimento
    SCM
    Criando uma Software Factory
    Deployment Pipeline
    Infra-Estrutura Agile




© OCTO 2011                                                   41
Deployment	
  Pipeline	
  
 Ambiente de Integração e Configuração                          Fase de Aceitação
                                                                •  Ambiente de
                                                                   Configuração
                                                                •  Deploy dos binários
                                                                •  Teste de Fumaça
                                                                •  Testes de Aceitação

         Desenvolvedores analisam                                                             Testes de Aceite do Usuário
         Métricas e Testes que falharam                                                       •  Ambiente de Configuração
                                                                                              •  Deploy dos binários
                                          Métricas              Testers                       •  Teste de Fumaça
                                          Falhas                          Solicitam execução
                                                                          de testes sob demanda

           Commit                                                                             Testes de Performance
                                                                                              •  Ambiente de Configuração
                                                                                              •  Deploy dos binários
                                                                                              •  Teste de Fumaça
Desenvolvedor                                                                                 •  Execução de Testes de Performance
                       SVN

                                      Fábrica de Construção
            Fase de Commit                                                                    Produção
            •  Compile                                                                        •  Ambiente de Configuração
            •  Commit do testes                                                               •  Deploy dos binários
            •  Assemble                                                                       •  Teste de Fumaça
                                                                Operador Autoriza Deploy
            •  Análise do Código                                         através de um clique
                                                     Binários

 Repositório de Artefatos
 •  Relatórios
 •  Metadados
 •  Binários
Agenda	
  


    Desafios em um processo de Desenvolvimento
    SCM
    Criando uma Software Factory
    Deployment Pipeline
    Infra-Estrutura Agile




© OCTO 2011                                                   43
Problemas	
  da	
  área	
  de	
  infra	
  




                                                                              44
© Université du Système d’Information
DevOps	
  




                                               45
© Université du Système d’Information
DevOps:	
  Problemas	
  de	
  Infra	
  
§    Aplicações	
  Legadas,	
  plataformas	
  heterôgeneas	
  
§    Perder	
  maior	
  parte	
  do	
  tempo,	
  apagando	
  incêndios	
  
§    Processo	
  pesado,	
  conservador	
  
§    Geralmente,	
  o	
  custo	
  com	
  operações	
  chega	
  a	
  80%	
  do	
  budget	
  de	
  
      TI.	
  




                                                                                                46
 © Université du Système d’Information
Disaster	
  Recovery	
  




                                                             47
© Université du Système d’Information
Aplicação disponível todo o tempo	
  
§  Continuous deployment
     §  Expanda o escopo da integração contínua
     §  Adapte seu « Definition Of Done »
     §  Inclua os requisitos de operação no inicio do projeto


§  Industrialize os deployments
     §  Trabalhe com os times de operação


§  Grandes players daweb (Amazon) vão até o deployment
   contínuo da aplicação em ambientes de produção




© OCTO 2011                                                      48
Referências	
  




                                                    49
© Université du Système d’Information
Perguntas?




          Obrigado


  Wagner Roberto dos Santos
      Twitter: @wrsantos
Email: wrsconsulting@gmail.com

Mais conteúdo relacionado

Mais procurados

Clean architecture em NodeJS
Clean architecture em NodeJSClean architecture em NodeJS
Clean architecture em NodeJSRodrigo Souza
 
Provisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTS
Provisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTSProvisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTS
Provisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTSIgor Abade
 
DevOps - Estado da Arte
DevOps - Estado da ArteDevOps - Estado da Arte
DevOps - Estado da Arteilegra
 
[Natal Nerd] IT Talks - NET Core
[Natal Nerd] IT Talks - NET Core[Natal Nerd] IT Talks - NET Core
[Natal Nerd] IT Talks - NET CoreJaqueline Ramos
 
QAOps e a sua impotância para a qualidade de software
QAOps e a sua impotância para a qualidade de softwareQAOps e a sua impotância para a qualidade de software
QAOps e a sua impotância para a qualidade de softwareSandy Maciel
 
Latinoware - Quarkus io cloud native apps
Latinoware - Quarkus io cloud native appsLatinoware - Quarkus io cloud native apps
Latinoware - Quarkus io cloud native appsRaul Leite
 
DevOps Braga #4: Infrastructure as Code: Impulsionar DevOps
DevOps Braga #4: Infrastructure as Code: Impulsionar DevOpsDevOps Braga #4: Infrastructure as Code: Impulsionar DevOps
DevOps Braga #4: Infrastructure as Code: Impulsionar DevOpsDevOps Braga
 
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!Jaqueline Ramos
 
Infraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvemInfraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvemFernando Ike
 
Spring cloud and netflix oss
Spring cloud and netflix ossSpring cloud and netflix oss
Spring cloud and netflix ossFelipe Adorno
 
Spring cloud + netflix oss
Spring cloud + netflix ossSpring cloud + netflix oss
Spring cloud + netflix ossFelipe Adorno
 
Docker: ganhe tempo e seja eficiente na entrega de serviços de TI
Docker: ganhe tempo e seja eficiente na entrega de serviços de TIDocker: ganhe tempo e seja eficiente na entrega de serviços de TI
Docker: ganhe tempo e seja eficiente na entrega de serviços de TIRicardo Ferreira Costa
 
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonSuporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonRicardo Ferreira
 
Simplificando seu DevOps com o Azure DevOps Project
Simplificando seu DevOps com o Azure DevOps ProjectSimplificando seu DevOps com o Azure DevOps Project
Simplificando seu DevOps com o Azure DevOps ProjectResource IT
 
Azure Weekend SP 2017 - Azure DevTest Labs
Azure Weekend SP 2017 - Azure DevTest LabsAzure Weekend SP 2017 - Azure DevTest Labs
Azure Weekend SP 2017 - Azure DevTest LabsJaqueline Ramos
 
Teltools - Fábrica de Software - Resumida - V1
Teltools - Fábrica de Software - Resumida - V1Teltools - Fábrica de Software - Resumida - V1
Teltools - Fábrica de Software - Resumida - V1slides_teltools
 
Infraestrutura Ágil: como isso pode melhorar a vida de um sysadmin?
Infraestrutura Ágil: como isso pode melhorar a vida de um sysadmin?Infraestrutura Ágil: como isso pode melhorar a vida de um sysadmin?
Infraestrutura Ágil: como isso pode melhorar a vida de um sysadmin?Adriel Viana
 

Mais procurados (20)

Clean architecture em NodeJS
Clean architecture em NodeJSClean architecture em NodeJS
Clean architecture em NodeJS
 
Provisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTS
Provisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTSProvisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTS
Provisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTS
 
DevOps - Estado da Arte
DevOps - Estado da ArteDevOps - Estado da Arte
DevOps - Estado da Arte
 
[Natal Nerd] IT Talks - NET Core
[Natal Nerd] IT Talks - NET Core[Natal Nerd] IT Talks - NET Core
[Natal Nerd] IT Talks - NET Core
 
DevOps Days SP 2019
DevOps Days SP 2019DevOps Days SP 2019
DevOps Days SP 2019
 
QAOps e a sua impotância para a qualidade de software
QAOps e a sua impotância para a qualidade de softwareQAOps e a sua impotância para a qualidade de software
QAOps e a sua impotância para a qualidade de software
 
Latinoware - Quarkus io cloud native apps
Latinoware - Quarkus io cloud native appsLatinoware - Quarkus io cloud native apps
Latinoware - Quarkus io cloud native apps
 
DevOps Braga #4: Infrastructure as Code: Impulsionar DevOps
DevOps Braga #4: Infrastructure as Code: Impulsionar DevOpsDevOps Braga #4: Infrastructure as Code: Impulsionar DevOps
DevOps Braga #4: Infrastructure as Code: Impulsionar DevOps
 
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
Women@MicrosoftCommunities - DevOps e Azure: uma combinação perfeita!
 
Infraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvemInfraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvem
 
Spring cloud and netflix oss
Spring cloud and netflix ossSpring cloud and netflix oss
Spring cloud and netflix oss
 
Spring cloud + netflix oss
Spring cloud + netflix ossSpring cloud + netflix oss
Spring cloud + netflix oss
 
Docker: ganhe tempo e seja eficiente na entrega de serviços de TI
Docker: ganhe tempo e seja eficiente na entrega de serviços de TIDocker: ganhe tempo e seja eficiente na entrega de serviços de TI
Docker: ganhe tempo e seja eficiente na entrega de serviços de TI
 
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonSuporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
 
Simplificando seu DevOps com o Azure DevOps Project
Simplificando seu DevOps com o Azure DevOps ProjectSimplificando seu DevOps com o Azure DevOps Project
Simplificando seu DevOps com o Azure DevOps Project
 
ESX Tech Lives - DevOps
ESX Tech Lives - DevOpsESX Tech Lives - DevOps
ESX Tech Lives - DevOps
 
Azure Weekend SP 2017 - Azure DevTest Labs
Azure Weekend SP 2017 - Azure DevTest LabsAzure Weekend SP 2017 - Azure DevTest Labs
Azure Weekend SP 2017 - Azure DevTest Labs
 
Teltools - Fábrica de Software - Resumida - V1
Teltools - Fábrica de Software - Resumida - V1Teltools - Fábrica de Software - Resumida - V1
Teltools - Fábrica de Software - Resumida - V1
 
DevOps 101
DevOps 101DevOps 101
DevOps 101
 
Infraestrutura Ágil: como isso pode melhorar a vida de um sysadmin?
Infraestrutura Ágil: como isso pode melhorar a vida de um sysadmin?Infraestrutura Ágil: como isso pode melhorar a vida de um sysadmin?
Infraestrutura Ágil: como isso pode melhorar a vida de um sysadmin?
 

Semelhante a Continuous Delivery e DevOps

Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Ramon Durães
 
Testes em projetos usando Scrum
Testes em projetos usando ScrumTestes em projetos usando Scrum
Testes em projetos usando ScrumPablo Quiroga
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração ContínuaScrumHalf Tool
 
Como aplicar práticas DevOps em um sistema monólito
Como aplicar práticas DevOps em um sistema monólito Como aplicar práticas DevOps em um sistema monólito
Como aplicar práticas DevOps em um sistema monólito Anderson Silveira
 
Qualidade de Software com Microsoft Visual Studio
Qualidade de Software com Microsoft Visual StudioQualidade de Software com Microsoft Visual Studio
Qualidade de Software com Microsoft Visual StudioAdriano Bertucci
 
DevOps - Melhores práticas na plataforma microsoft
DevOps - Melhores práticas na plataforma microsoftDevOps - Melhores práticas na plataforma microsoft
DevOps - Melhores práticas na plataforma microsoftIgor Abade
 
Teched Brasil 2005 - A Metodologia MSF Agile e o Visual Studio Team System
Teched Brasil 2005 -  A Metodologia MSF Agile e o Visual Studio Team SystemTeched Brasil 2005 -  A Metodologia MSF Agile e o Visual Studio Team System
Teched Brasil 2005 - A Metodologia MSF Agile e o Visual Studio Team SystemFábio Câmara
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...iMasters
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
DevOps - Novos Desafios para TI
DevOps - Novos Desafios para TIDevOps - Novos Desafios para TI
DevOps - Novos Desafios para TICarlos Buzeto
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlabJackson F. de A. Mafra
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaOtávio Calaça Xavier
 
Introdução ao ALM e a visão da Plataforma Microsoft para developers.
Introdução ao ALM e a visão da Plataforma Microsoft para developers.Introdução ao ALM e a visão da Plataforma Microsoft para developers.
Introdução ao ALM e a visão da Plataforma Microsoft para developers.Gustavo Malheiros
 
Integração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimentoIntegração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimentoMario Mendonça
 
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...Antonio Lobato
 
Institucional - Apresentação
Institucional - ApresentaçãoInstitucional - Apresentação
Institucional - Apresentaçãoslides_teltools
 

Semelhante a Continuous Delivery e DevOps (20)

Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016
 
Testes em projetos usando Scrum
Testes em projetos usando ScrumTestes em projetos usando Scrum
Testes em projetos usando Scrum
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Como aplicar práticas DevOps em um sistema monólito
Como aplicar práticas DevOps em um sistema monólito Como aplicar práticas DevOps em um sistema monólito
Como aplicar práticas DevOps em um sistema monólito
 
Qualidade de Software com Microsoft Visual Studio
Qualidade de Software com Microsoft Visual StudioQualidade de Software com Microsoft Visual Studio
Qualidade de Software com Microsoft Visual Studio
 
DevOps - Melhores práticas na plataforma microsoft
DevOps - Melhores práticas na plataforma microsoftDevOps - Melhores práticas na plataforma microsoft
DevOps - Melhores práticas na plataforma microsoft
 
Teched Brasil 2005 - A Metodologia MSF Agile e o Visual Studio Team System
Teched Brasil 2005 -  A Metodologia MSF Agile e o Visual Studio Team SystemTeched Brasil 2005 -  A Metodologia MSF Agile e o Visual Studio Team System
Teched Brasil 2005 - A Metodologia MSF Agile e o Visual Studio Team System
 
SAFe - Como escalar algo artesanal?
SAFe - Como escalar algo artesanal?SAFe - Como escalar algo artesanal?
SAFe - Como escalar algo artesanal?
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
DevOps - Novos Desafios para TI
DevOps - Novos Desafios para TIDevOps - Novos Desafios para TI
DevOps - Novos Desafios para TI
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega Continua
 
jCompany for SAP NetWeaver
jCompany for SAP NetWeaverjCompany for SAP NetWeaver
jCompany for SAP NetWeaver
 
Cast IT group
Cast IT groupCast IT group
Cast IT group
 
Introdução ao ALM e a visão da Plataforma Microsoft para developers.
Introdução ao ALM e a visão da Plataforma Microsoft para developers.Introdução ao ALM e a visão da Plataforma Microsoft para developers.
Introdução ao ALM e a visão da Plataforma Microsoft para developers.
 
Integração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimentoIntegração contínua - Prática de desenvolvimento
Integração contínua - Prática de desenvolvimento
 
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Institucional - Apresentação
Institucional - ApresentaçãoInstitucional - Apresentação
Institucional - Apresentação
 

Mais de Wagner Roberto dos Santos

Mais de Wagner Roberto dos Santos (7)

Tdc2013 Inspecionando antes da adoção
Tdc2013 Inspecionando antes da adoçãoTdc2013 Inspecionando antes da adoção
Tdc2013 Inspecionando antes da adoção
 
TDC2013 Escalando Aplicações Java com In Memory Datagrids
TDC2013 Escalando Aplicações Java com In Memory DatagridsTDC2013 Escalando Aplicações Java com In Memory Datagrids
TDC2013 Escalando Aplicações Java com In Memory Datagrids
 
Infinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com JavaInfinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com Java
 
[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas
[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas
[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas
 
Como Se Dar Bem Com Java
Como Se Dar Bem Com JavaComo Se Dar Bem Com Java
Como Se Dar Bem Com Java
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações Mashup
 
Como me dei bem com Java
Como me dei bem com JavaComo me dei bem com Java
Como me dei bem com Java
 

Continuous Delivery e DevOps

  • 1. Con$nuous  Delivery     Wagner  Roberto  dos  Santos  (Twi3er:  @wrsantos)   Agile  Coache  /  Enterprise  Architect  
  • 2. Hello!     Agile  experience  with     Investment  Banks  and  Retail  Banks     Off-­‐shore  development   Teams  up  to  60  people     Architecture,  IS  Management,  ExperMse,  and  methodology   (Agile)     Supported  Agile  adopMon  in  main  Banks  in  France:   Credit  Agricole,  LCL,  Société  Générale,  BNP  Parisbas/ForMs      
  • 3. Apresentação   §  Arquiteto  de  SoXware  /  Agile  Coach  /  SoXware  CraXsman   §  Consultor  senior  da  OCTO  Technology  (h3p://www.octo.com/br)   §  Instrutor  da  Globalcode  da  formação  Academia  Agile  e  Arquiteto   §  Editor  do  Portal  InfoQ  Brasil  (h3p://infoq.com/br).   §  ParMcipação  nos  projetos  de  tradução  e  teste  do  NetBeans.   §  Palestrante  de  eventos  como  Just  Java,  Sun  Tech  Days,  Campus   Party.   §  Premiações  em  compeMções  de  tecnologia  .   §  Autor  de  vários  arMgos  para  as  revistas  Mundo  Java  e  Java  Magazine   §  CerMficações:  SCJA,  SCJP,  SCSNI,  SCJWSD,  SCBCD,  SCEA,  CSM  e  ACP.   §  Mantém  o  blog  h3p://neeeijao.blogspot.com   §  Twi3er:  @wrsantos  
  • 4. Agenda   Desafios em um processo de Desenvolvimento SCM Criando uma Software Factory Deployment Pipeline Infra-estrutura Agile © OCTO 2011 4
  • 5. Desafio:  Qualidade   §  Erros  em  IT  tem  um  forte  impacto  nas  operações   «  Customers’  accounts  of  BNP  Paribas  have  been  debited  or  credited  by   error  »  (February  2009)   «  A  bug  on  French  telecom  operator  »  (February  2010)   «  Big  IT  bug  at  the  SNCF  today  (French  Railroad  company)  »  (May  2010)   §  Medir  a  Qualidade   §  Ter  métricas  de  qualidade  disponíveis   © OCTO 2011 5
  • 6. Desafio:  produMvidade  e  integração   §  Produtividade §  Focar  em  aMvidades  que  realmente  adicionam  valor   §  Reduzir  tarefas  manuais  e  recorrentes   §  Dificuldades de Integração §  Eliminar  as  aMvidades  de  merge  e  integração   §  Minimizar  os  riscos  e  esforços  necessários  para  instalar  a  aplicação  em   ambiente  de  produção   © OCTO 2011 6
  • 7. Agile  101   Arquitetura & Design Testes & Codificação Integração Operações Demonstração & QA TI Cliente It1 .. It2 .. It3 .. ItN Iterações O Último KM 7 © Université du Système d’Information
  • 8. ConMnuous  Delivery   §  Princípios §  Criar um processo confiável, repetitível para entrega do Software §  Automatizar tudo que é possível §  Manter tudo no Sistema de Controle de Versão §  Se causa dor, faça isto mais frequentemente, and traga a dor para perto §  Construa com qualidade inserida §  Todos são responsáveis pelo processo de Delivery §  Melhoria Contínua © OCTO 2011 8
  • 9. Agenda   Desafios em um processo de Desenvolvimento SCM Criando uma Software Factory Deployment Pipeline Infra-estrutura Agile © OCTO 2011 9
  • 10. Value  Stream  Mapping   PLANEJAMENTO e DESIGN CONSTRUÇÃO HOMOLOGAÇÃO DEPLOYMENT SUSTENTAÇÃO •  Identificar as •  Recuperar o •  Criar uma tag •  Criar uma tag •  Arrumar os bugs aplicações e còdigo para o para a nova para a nova críticos e módulos desenvolvimento versão para teste versão pronta urgentes no necessårios para •  Desenvolver, •  Criar um novo para deploy. branch de o projeto check-out, branch a partir •  Criar um branch a manutenção •  Definir qual merge, testar e desta tag para partir desta tag •  Efetuar o merge versão das commit correções para manutenção destas correções funcionalidades o •  Arrumar os bugs e e tratamento de nos branches de projeto ser efetuar as bug test desenvolvido alterações no desenvolvimento •  Define qual branch versao das •  Efetuar o merge aplicações e das correções módulos que o com o trunk de desenvolvedores desenvolvimento irao utilizar para evitar regressões © OCTO 2011 10
  • 11. SCM   §  Problemas  de  Merge?   11 © Université du Système d’Information
  • 12. Conceitos   §  Trunk §  ÚlMma  versão  do  desenvolvimento   §  O  Mme  de  desenvolvimento  faz  commits  diários  no  trunk.   §  É  a  baseline  para  o  Mme  de  desenvolvimento   §  Para  toda  correção  no  branch  deve  ser  feito  o  merge  no  trunk.   §  Branch §  Branch  de  Homologação   •  Fazer  as  correções  de  bug  e  modificações  de  um  aplicaMvo  que  está  em   fase  de  teste  /  homologação   §  Branch  de  Release   •  Para  cada  release  novo  do  aplicaMvo,  é  criado  um  Branch  de  Release.   §  Tags §  São  uMlizadas  para  idenMficar  pontos  significantes  de  alteração  na   linha  do  tempo,  incluindo  releases  e  finalizações  de  bugs   © OCTO 2011 12
  • 13. Estrutura  de  SCV   §  Projeto Simples §  Exemplo  de  um  projeto  simples.   © OCTO 2011 13
  • 14. Estrutura  de  SCV   §  Múltiplos Projetos §  Exemplo  de  um  ambiente  com  múlMplos  projetos.   © OCTO 2011 14
  • 15. Recomendação  de  Uso  de  Tags  e  Branches   §  Release Branches §  Cada  release  do  projeto  em  um  branch  separado.   §  Releases (Tags) §  O  Release  Branch  pode  conter  um  (e  possivelmente  mais)  releases,   para  os  pontos  nas  quais  o  projeto  é  lançado,  podemos  uMlizar  as  tags   de  release  para  idenMficar  estes  pontos.     §  Bug Fixes §  Bugs  descobertos  na  Release  são  tratadas  na  Release  Branch.  Em   casos  onde  o  bug  é  arrumado  em  um  commit,  o  número  da  revisão  do   Subversion  já  é  suficiente.     §  Tags  pode  ser  criadas  para  marcar  o  início  e  fim  do  acerto  no  bug.   §  Development Experiments §  Quando  o  Mme  for  pesquisar  uma  tecnologia  nova,  ou  fazer  uma   mudança  muito  significaMva  na  aplicação,  que  pode  comprometer  o   design  da  aplicação..   © OCTO 2011 15
  • 16. Recomendação  de  Uso  de  Tags  e  Branches   Nome     Es$lo   Exemplos Test  Release   TEST-­‐versao   TEST-­‐1.1   Test  branch   TB-­‐versao   TB-­‐1.1   Releases   RELEASE-­‐rel   RELEASE-­‐1.0   RELEASE-­‐1.0.1a   Release  branch   RB-­‐rel   RB-­‐1.0   Development  Experiments   TRY-­‐descrição   TRY-­‐MR-­‐nhibernate   Legenda rel: Número da Release versao: Número da Versão © OCTO 2011 16
  • 17. Estrutura  Interna  de  um  AplicaMvo   §  Todo projeto deve seguir um padrão de estrutura de diretórios na criação de um Projeto §  Para a pasta raiz dos projetos (trunk/), é sugerido criar os seguintes arquivos: §  README   •  Deve  servir  para  ajudar  novos  arquitetos,  ou  qualquer  outra  pessoa   interessada  em  conhecer  o  básico  sobre  o  projeto.   •  Escrever  um  parágrafo  descrevendo  o  projeto,  os  problemas  que  ele  visa   resolver,  a  tecnologia  uMlizada,  entre  outras  informações  perMnentes  ao   projeto.   §  BUILDING   •  Descreve  as  tarefas  necessárias  para  fazer  o  build  do  código.   §  GLOSSARY   •  Colocar  os  termos,  jargões  específicos  do  projeto.  Para  facilitar  a  vida  dos   desenvolvedores,  quando  em  algum  momento  se  depararem  com  um   termo  muito  específico.   © OCTO 2011 17
  • 18. Estrutura  Interna  de  um  AplicaMvo   §  Para a pasta raiz dos projetos (trunk/), é sugerido criar os seguintes diretórios: §  bin/  (vendor/Assembly)   •  Se  o  projeto  uMliza  bibliotecas  de  terceiros  ou  outros  artefatos  que  é   preciso  para  o  bom  funcionamento  do  sistema,  este  é  a  pasta  é  o  lugar.   §  doc/   •  Documentos,  manuais  e  emails  referentes  ao  projeto.   §  db/   •  Se  o  projeto  uMliza  Banco  de  Dados,  armazenar  todos  os  artefatos   relacionados  ao  schema  aqui.  Exemplo  scripts,  procedures,  tabelas,  etc...   §  src/   •  Nesta  pasta,  fica  a  estrutura  do  projeto  (código  fonte,  testes,  etc..)   §  uMl/  (or  tools/)   •  Armazenar  aqui  todos  os  uMlitários,  ferramentas  e  scripts  do  projeto.   §  publish/   •  Executáveis  e  binários  do  sistema,  pacotes  para  deploy  do  projeto   © OCTO 2011 18
  • 19. Agenda   Desafios em um processo de desenvolvimento SCM Criando uma Fábrica de Construção Deployment Pipeline Infra-estrutura Agile © OCTO 2011 19
  • 20. Visão  Geral   Integração Contínua Fábrica de Teste Construção Automáticos Métricas de Qualidade © OCTO 2011 20
  • 21. Integração Contínua « Uma abordagem que visa a integração do código em tempo real, ao invés de a cada 2 ou 3 semanas » © OCTO 2011 21
  • 22. Uma  Fábrica  de  Construção  dinâmica   Desenvolvedores compilam em testam seu código Desenvolvedor codifica na estação de trabalho Desenvolvedores em seu IDE em sua submetem o código estação de trabalho alterado para o repositório A fábrica de construção Desenvolvedor faz retorna todo o código check out do código do repositório A fábrica de construção compila, testa e analisa o código A Fábrica de construção empacota e e cria os aplicativos, entregáveis e documentos e os armazena para referência © OCTO 2011 22
  • 23. Fábrica  de  Construção:  as  Ferramentas   Retrieve     dependences   Source     Build   Compile   code   Con$nuous   Local     repository   Repository  of     integra$on   Execute  tests   binaries   Build   server   Verify  code  quality   No$fica$ons   Package   Deploy   Test  plaCorm   Document   Build Documenta$on   &  metrics   23 © OCTO 2011 23
  • 24. Não  é  somente  uma  questão  de   ferramentas   © OCTO 2011 24
  • 25. Crie  uma  cultura  de  «  BUILD  »   §  Crie  rituais  para  a  Fábrica  de  Construção   §  «  Quem  quebrar  o  build,  paga  uma  rodada  de  cerveja  J  »   §  Todos  os  membros  da  equipe  são  responsáveis  pelo  Build   §  «  O  build  quebrou…minha  prioridade  top  é  acertá-­‐lo  »   §  Alinhar  o  Mme  quanto  a  qualidade  do  código     © OCTO 2011 25
  • 26. O  Código  compila,  mas  ele  funciona?   © OCTO 2011 26
  • 27. Test  Driven  Development   Write a test that fails Code and Readapt make the code test pass © OCTO 2011 27
  • 28. Testes  Unitários  AutomaMzados   Testes unitários: ciclo do TDD se repete até o fim do desenvolvimento de uma funcionalidade Write a test that Write fails Make acceptance acceptance tests in Code Readapt and tests pass error code make test pass Um novo ciclo se repete para cada funcionalidade nova © OCTO 2011 28
  • 29. Resumindo:  Faça  antes  em  seu  projeto  !   Fazer  integração,  controle  de  qualidade  e  testes  na  final  do  projeto,     nos  dá  pouco  tempo  para  corrigir  problemas  inesperados     Con$nuous  integra$on  permite  :   §  Reduzir  aMvidades  intermináveis  de  integração   §  Integrar  o  código  fonte  muito  antes  do  deployment   §  Planejar  e  testar  o  processo  de  deployment   §  Ter  acesso  a  um  aplicaMvo  demo  funcionando  antes  da  fase   de  homologação   © OCTO 2011 29
  • 30. Ambiente  de  CI   Source code + tests Automated Bug and Task Documentation tests Management Repository Developer Quality Source code Continuous assurance repository integration control Source code + tests Developer Artifact Automated Dependences repository acceptance A new version tests for homologation © OCTO 2011 30
  • 31. Métricas  e  reporMng   © OCTO 2011 31
  • 32. Uma  Fábrica  de  Construção  Adaptada   §  Atualmente  existem  cada  vez  mais  sinergia  e  suporte  a  novas  tecnologias   entre  ferramentas  de  build  e  reporMng   Ruby,  Flex,  JavaScript,  PLSQL  ...                                                                                          …  e  até  iPhone,  iPad,  Android,  etc   §  Feramentas  Especializadas  em  ConMnuous  integraMon   §  Team  FoundaMon  Server,  Hudson,  TeamCity,  Bamboo,  CruiseControl,   Pulse,  …   §  Uma  abordagem  diferente  de  acordo  com  o  contexto   §  Metodologia  de  Projeto   §  Tecnologias  UMlizadas   §  Organização  (ex  :  SoXware  Houses)   §  ConMnuous  integraMon  é  muito  importante!   © OCTO 2011 32
  • 33. Fique  operacional  no  primeiro  dia   §  Instalação  NNF  /  domine  a  instalação   §  Instalação  via  Script   §  Arvore  de  diretórios  e  configuração  deve  ser  o  mesmo  em  todas   as  estações  de  desenvolvimento  do  Mme   §  SoluMons  to  package  IDE   1.  Escolha  uma  distruição  Eclipse   •  SpringIDE  from  SpringSource   •  Maven  studio  for  Eclipse  chez  Sonatype   •  …   2.  Plug-­‐ins  para  Eclipse  with  Nexus   © OCTO 2011 33
  • 34. Minimizar  a  instabilidade  do  «  Build  »   §  Manter  o  repositório  de  código  «  clean  »   §  Prevenir  que  desenvolvedores  bloqueiem  uns  aos  outros   §  Favorer  o  uso  diário  do  repositório  de  fontes  para  outros  artefatos  que  não   sejam  somente  código  fonte   Repositório  de   código  fonte   © OCTO 2011 34
  • 35. Uma  primeira  solução:  Unbreakable  build   Retrieve     dependences   Protected   Compile   source  code   Con$nuous   repository   Integra$on   Server   Execute  tests   Build   Developers   © OCTO 2011 35
  • 36. Evolução  Incremental  dos  Schemas     do  banco  de  dados   §  Principios   §  Toda  evolução  nos  schemas  do  banco  são  versionados  no   repositório  de  fontes   §  AutomaMzar  da  criação  até  update  do  schema  do  banco   §  Altere  os  schemas  de  maneira  incremental   §  Ferramentas   §  Team  system  Database     © OCTO 2011 36
  • 37. Profiled  build   10 min Build  rapide  :  tests  unitaires   night Build  documenta$on   4h Source  code     Build  integra$on  tests   repository   Con$nuous   Local  Build   integra$on   night server   Build  quality  metrics   On request Full     On request ... Package   ... © OCTO 2011 37
  • 38. Distributed  build   ƒ   Build  documenta$on   240   Agent     Build  integra$on  tests   10   Source  code     Build  rapide  :  tests  unitaires   repository   Con$nuous   Local     integra$on   ƒ   build   (master)   Build  quality  metrics   N   Complete  build   N   Agent   Package   © OCTO 2011 38
  • 39. Na  Cloud   §  Tome  vantagem  de  uma  solução  de  cloud  flexível     §  Procure  por  soluções  completas   §  Externalize  somente  o  build   §  Virtual  machine  pronta  para  uso   §  Plugin  Hudson  em  EC2     © OCTO 2011 39
  • 40. Big  visible  chart  &  Extreme  feeback  device   «  Alinhe  o  Tme  com  ferramentas  visuais  comparTlhadas  »   §  Radiadores  (Sonar,  Hudson,  …)   §  AmbientOrb   §  Nabastaz  
  • 41. Agenda   Desafios em um processo de Desenvolvimento SCM Criando uma Software Factory Deployment Pipeline Infra-Estrutura Agile © OCTO 2011 41
  • 42. Deployment  Pipeline   Ambiente de Integração e Configuração Fase de Aceitação •  Ambiente de Configuração •  Deploy dos binários •  Teste de Fumaça •  Testes de Aceitação Desenvolvedores analisam Testes de Aceite do Usuário Métricas e Testes que falharam •  Ambiente de Configuração •  Deploy dos binários Métricas Testers •  Teste de Fumaça Falhas Solicitam execução de testes sob demanda Commit Testes de Performance •  Ambiente de Configuração •  Deploy dos binários •  Teste de Fumaça Desenvolvedor •  Execução de Testes de Performance SVN Fábrica de Construção Fase de Commit Produção •  Compile •  Ambiente de Configuração •  Commit do testes •  Deploy dos binários •  Assemble •  Teste de Fumaça Operador Autoriza Deploy •  Análise do Código através de um clique Binários Repositório de Artefatos •  Relatórios •  Metadados •  Binários
  • 43. Agenda   Desafios em um processo de Desenvolvimento SCM Criando uma Software Factory Deployment Pipeline Infra-Estrutura Agile © OCTO 2011 43
  • 44. Problemas  da  área  de  infra   44 © Université du Système d’Information
  • 45. DevOps   45 © Université du Système d’Information
  • 46. DevOps:  Problemas  de  Infra   §  Aplicações  Legadas,  plataformas  heterôgeneas   §  Perder  maior  parte  do  tempo,  apagando  incêndios   §  Processo  pesado,  conservador   §  Geralmente,  o  custo  com  operações  chega  a  80%  do  budget  de   TI.   46 © Université du Système d’Information
  • 47. Disaster  Recovery   47 © Université du Système d’Information
  • 48. Aplicação disponível todo o tempo   §  Continuous deployment §  Expanda o escopo da integração contínua §  Adapte seu « Definition Of Done » §  Inclua os requisitos de operação no inicio do projeto §  Industrialize os deployments §  Trabalhe com os times de operação §  Grandes players daweb (Amazon) vão até o deployment contínuo da aplicação em ambientes de produção © OCTO 2011 48
  • 49. Referências   49 © Université du Système d’Information
  • 50. Perguntas? Obrigado Wagner Roberto dos Santos Twitter: @wrsantos Email: wrsconsulting@gmail.com