Padrões de deploy para DevOps e Entrega Contínua

1,272 views

Published on

Slides da minha palestra "Padrões de deploy para DevOps e Entrega Contínua" na Geek Night Recife em Julho

Published in: Technology

Padrões de deploy para DevOps e Entrega Contínua

  1. 1. G e e k N i g h t R e c i f e PADRÕES DE DEPLOY PARA DEVOPS E ENTREGA CONTÍNUA Danilo Sato (@dtsato) dsato@thoughtworks.com
  2. 2. QUEM SOU EU? ▫︎Desenvolvedor ▫︎Arquiteto ▫︎Coach ▫︎Treinador ▫︎Administrador de Rede 2 @dtsato
  3. 3. 3 www.devopsnapratica.com.br
  4. 4. 3 www.devopsnapratica.com.br
  5. 5. Desenvolvimento Operações
  6. 6. Eu quero mudanças Desenvolvimento Operações
  7. 7. Eu quero mudanças Eu quero estabilidade Desenvolvimento Operações
  8. 8. Eu quero mudanças Eu quero estabilidade Desenvolvimento Operações
  9. 9. Desenvolvimento Operações + DevOps
  10. 10. UMA HISTÓRIA COMUM… “O dia que fizemos o deploy errado” 6
  11. 11. 7 Freqüência de deploy Quantidade de mudanças Risco Processo
  12. 12. COM UM FINAL DIFERENTE… “Problemas difíceis não se resolvem do dia para a noite” 8
  13. 13. 9 Freqüência de deploy Quantidade de mudanças Risco Processo DevOps
  14. 14. 10 Ideia Em produção
  15. 15. 11 Ideia Em produção Código Testes Pacote Servidores/Am bientes Exploração /Hom ologação /Aprovação Im plantar
  16. 16. 11 Ideia Em produção Código Testes Pacote Servidores/Am bientes Exploração /Hom ologação /Aprovação Im plantar Pipeline de Entrega
  17. 17. 12 M onitoram entoAlertas Suporte Dados/AnálisesFeedback dosusuários Insights Em produção
  18. 18. 12 M onitoram entoAlertas Suporte Dados/AnálisesFeedback dosusuários Insights Em produção Ideia
  19. 19. 13 Qualidade Tempo de Ciclo
  20. 20. Nosso objetivo é tornar o deploy um “não-evento” 14
  21. 21. PRINCÍPIOS PARA ENTREGAS DE BAIXO RISCO
  22. 22. 1. Incremental é melhor que “big bang” PRINCÍPIOS PARA ENTREGAS DE BAIXO RISCO
  23. 23. 1. Incremental é melhor que “big bang” 2. Implantação != Entrega PRINCÍPIOS PARA ENTREGAS DE BAIXO RISCO
  24. 24. 1. Incremental é melhor que “big bang” 2. Implantação != Entrega 3. Foque em entregar lotes pequenos PRINCÍPIOS PARA ENTREGAS DE BAIXO RISCO
  25. 25. 1. Incremental é melhor que “big bang” 2. Implantação != Entrega 3. Foque em entregar lotes pequenos 4. Qualidade deve estar embutida no processo PRINCÍPIOS PARA ENTREGAS DE BAIXO RISCO
  26. 26. 1. Mudança paralela 2. Implantação Azul-Verde 3. Implantação Canário 4. Feature Toggles 5. Entrega no Escuro PADRÕES DE DEPLOY
  27. 27. MUDANÇA PARALELA Também conhecida como “Expansão e Contração” http://www.thoughtworks.com/insights/blog/mudança-paralela 17https://www.flickr.com/photos/telstar/8246798446
  28. 28. 1. EXPANSÃO 18 class Grid { private Cell[][] cells; … ! public void addCell(int x, int y, Cell cell) { cells[x][y] = cell; } public Cell fetchCell(int x, int y) { return cells[x][y]; } ! ! public boolean isEmpty(int x, int y) { return cells[x][y] == null; } ! ! ! }
  29. 29. 1. EXPANSÃO 19 class Grid { private Cell[][] cells; … ! public void addCell(int x, int y, Cell cell) { cells[x][y] = cell; } ! public Cell fetchCell(int x, int y) { return cells[x][y]; } ! ! ! public boolean isEmpty(int x, int y) { return cells[x][y] == null; } ! ! ! }
  30. 30. 1. EXPANSÃO 20 class Grid { private Cell[][] cells; private Map<Coordinate, Cell> newCells; … ! public void addCell(int x, int y, Cell cell) { cells[x][y] = cell; } public void addCell(Coordinate coordinate, Cell cell) { newCells.put(coordinate, cell); } public Cell fetchCell(int x, int y) { return cells[x][y]; } public Cell fetchCell(Coordinate coordinate) { return newCells.get(coordinate); } public boolean isEmpty(int x, int y) { return cells[x][y] == null; } public boolean isEmpty(Coordinate coordinate) { return !newCells.containsKey(coordinate); } }
  31. 31. 2. MIGRAÇÃO 21 Nova Versão Cliente Versão Antiga Cliente Cliente addCell(int x, int y, Cell cell) fetchCell(int x, int y) isEmpty(int x, int y) Cell[][] cells Map<Coordinate, Cell> newCells
  32. 32. 2. MIGRAÇÃO 22 Nova Versão Cliente Versão Antiga Cliente Cliente addCell(int x, int y, Cell cell) fetchCell(Coordinate c) isEmpty(Coordinate c) Cell[][] cells Map<Coordinate, Cell> newCells
  33. 33. 3. CONTRAÇÃO 23 Nova Versão Cliente Cliente Cliente addCell(Coordinate c, Cell cell) fetchCell(Coordinate c) isEmpty(Coordinate c) Cell[][] cells Map<Coordinate, Cell> cells
  34. 34. 3. CONTRAÇÃO 24 class Grid { private Cell[][] cells; private Map<Coordinate, Cell> newCells; … ! public void addCell(int x, int y, Cell cell) { cells[x][y] = cell; } public void addCell(Coordinate coordinate, Cell cell) { newCells.put(coordinate, cell); } public Cell fetchCell(int x, int y) { return cells[x][y]; } public Cell fetchCell(Coordinate coordinate) { return newCells.get(coordinate); } public boolean isEmpty(int x, int y) { return cells[x][y] == null; } public boolean isEmpty(Coordinate coordinate) { return !newCells.containsKey(coordinate); } }
  35. 35. 3. CONTRAÇÃO 25 class Grid { ! private Map<Coordinate, Cell> cells; … ! ! ! ! public void addCell(Coordinate coordinate, Cell cell) { cells.put(coordinate, cell); } ! ! ! public Cell fetchCell(Coordinate coordinate) { return cells.get(coordinate); } ! ! ! public boolean isEmpty(Coordinate coordinate) { return !cells.containsKey(coordinate); } }
  36. 36. IMPLANTAÇÃO AZUL-VERDE http://www.thoughtworks.com/insights/blog/implementando-implantacoes- azul-verde-com-amazon-web-services-aws 26
  37. 37. IMPLANTAÇÃO AZUL-VERDE 27 Azul Verde Servidor web Servidor de aplicação Servidor de BD RoteadorUsuários Servidor web Servidor de aplicação Servidor de BD
  38. 38. IMPLANTAÇÃO AZUL-VERDE 28 Azul Verde Servidor web Servidor de aplicação Servidor de BD RoteadorUsuários Servidor web Servidor de aplicação Servidor de BD
  39. 39. “Mas e o Banco de Dados?” 29
  40. 40. IMPLANTAÇÃO AZUL-VERDE 30 Azul Verde Azul Verde Servidor web Servidor de BD RoteadorUsuários Servidor web Servidor de BD Servidor de aplicação Servidor de aplicação
  41. 41. IMPLANTAÇÃO AZUL-VERDE 31 Azul Verde Azul Verde Servidor web Servidor de BD RoteadorUsuários Servidor web Servidor de BD Servidor de aplicação Servidor de aplicação
  42. 42. IMPLANTAÇÃO AZUL-VERDE 32 Azul Verde Azul Verde Servidor web Servidor de BD RoteadorUsuários Servidor web Servidor de BD Servidor de aplicação Servidor de aplicação
  43. 43. IMPLANTAÇÃO CANÁRIO http://www.thoughtworks.com/insights/blog/implantações-canário 33
  44. 44. IMPLANTAÇÃO CANÁRIO 34 Nova Versão Versão Antiga Servidor web Servidor de aplicação Servidor de BD Servidor web Servidor de aplicação Servidor de BD RoteadorUsuários Todos os usuários
  45. 45. IMPLANTAÇÃO CANÁRIO 35 Nova Versão Versão Antiga Servidor web Servidor de aplicação Servidor de BD Servidor web Servidor de aplicação Servidor de BD RoteadorUsuários Maior parte dos usuários (95%) Alguns usuários (5%)
  46. 46. IMPLANTAÇÃO CANÁRIO 36 Nova Versão Versão Antiga Servidor web Servidor de aplicação Servidor de BD Servidor web Servidor de aplicação Servidor de BD Usuários Roteador Alguns usuários (2%) Maior parte dos usuários (98%)
  47. 47. IMPLANTAÇÃO CANÁRIO 37 Nova Versão Versão Antiga Servidor web Servidor de aplicação Servidor de BD Servidor web Servidor de aplicação Servidor de BD Usuários Todos os usuários Roteador
  48. 48. FEATURE TOGGLES 38https://www.flickr.com/photos/waynewilkinson/6187603535
  49. 49. FEATURE TOGGLE 39 share_with_friends = false Googlehttp://www.devopsnapratica.com.br Livro Devops na Prática: Entrega de Software Confiável e Automatizada Configuração:
  50. 50. FEATURE TOGGLE 40 share_with_friends = true Googlehttp://www.devopsnapratica.com.br Livro Devops na Prática: Entrega de Software Confiável e Automatizada Configuração:
  51. 51. ENTREGA NO ESCURO 41https://www.flickr.com/photos/dwrose/3967195917
  52. 52. ENTREGA NO ESCURO 42 Googlehttp://facebook.com Web Page Title João Backend de Chat Googlehttp://facebook.com Web Page Title Maria
  53. 53. ENTREGA NO ESCURO 43 Googlehttp://facebook.com Web Page Title Phasellus nulla risus, semper non dictum semper, congue vitae augue. Nunc vulputate ligula eget neque tempus. Maria disse Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur eget ultrices velit. Suspendisse ut justo elementum felis facilisis aliquam ut sit amet mi. Praesent sit amet venenatis eros. Fusce est tellus, congue ac augue in, congue elementum quam.João disse João Backend de Chat Googlehttp://facebook.com Web Page Title Phasellus nulla risus, semper non dictum semper, congue vitae augue. Nunc vulputate ligula eget neque tempus. Maria disse Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur eget ultrices velit. Suspendisse ut justo elementum felis facilisis aliquam ut sit amet mi. Praesent sit amet venenatis eros. Fusce est tellus, congue ac augue in, congue elementum quam.João disse Maria
  54. 54. ENTREGA NO ESCURO 44 Googlehttp://facebook.com Web Page Title Phasellus nulla risus, semper non dictum semper, congue vitae augue. Nunc vulputate ligula eget neque tempus. Maria disse Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur eget ultrices velit. Suspendisse ut justo elementum felis facilisis aliquam ut sit amet mi. Praesent sit amet venenatis eros. Fusce est tellus, congue ac augue in, congue elementum quam.João disse João Backend de Chat Googlehttp://facebook.com Web Page Title Phasellus nulla risus, semper non dictum semper, congue vitae augue. Nunc vulputate ligula eget neque tempus. Maria disse Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur eget ultrices velit. Suspendisse ut justo elementum felis facilisis aliquam ut sit amet mi. Praesent sit amet venenatis eros. Fusce est tellus, congue ac augue in, congue elementum quam.João disse Maria
  55. 55. DEVOPS ALÉM DAS FERRAMENTAS DevOps é mais que automação e ferramentas 45
  56. 56. CALMS 46
  57. 57. CALMS Cultura 46
  58. 58. CALMS Cultura Automação 46
  59. 59. CALMS Cultura Automação Lean (pensamento enxuto) 46
  60. 60. CALMS Cultura Automação Lean (pensamento enxuto) Medição 46
  61. 61. CALMS Cultura Automação Lean (pensamento enxuto) Medição Sharing (compartilhamento) 46
  62. 62. 47 MAIS CONTEÚDO ▫︎Kit de Entrega Contínua: ▫︎http://info.thoughtworks.com/entrega-continua-toolkit ▫︎Insights (blogs e artigos) ▫︎Livros ▫︎Slides ▫︎Vídeo
  63. 63. PERGUNTAS? #DevopsNaPratica 48
  64. 64. Danilo Sato (@dtsato) dsato@thoughtworks.com OBRIGADO! www.devopsnapratica.com.br ! Continue a discussão usando a hashtag #DevopsNaPratica

×