Da Integração Contínua à Entrega Contínua apenas com ferramentas open-source

583 visualizações

Publicada em

Apresentado no Scrum Gathering Rio 2015.

Nesta apresentação falo sobre os princípios de Continuous Delivery e como implementar um release pipeline apenas com ferramentas gratuitas e de código aberto, como Docker, Fabric e Jenkins.

Publicada em: Tecnologia
0 comentários
5 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
583
No SlideShare
0
A partir de incorporações
0
Número de incorporações
7
Ações
Compartilhamentos
0
Downloads
8
Comentários
0
Gostaram
5
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Da Integração Contínua à Entrega Contínua apenas com ferramentas open-source

  1. 1. CI -> CD apenas com ferramentas open-source Raphael Paiva e Carlos Felippe Cardoso
  2. 2. Raphael Paiva ● B.Sc. em Ciência da Computação pela UFRJ ● Agile Coach da Equipe SIGA-UFRJ ● Ajudei a implantar práticas ágeis como TDD, CI, CD, automatização e cultura DevOps durante 7 anos (e contando). Raphael Paiva @raphaelmacoli /raphaelmacoli
  3. 3. Carlos Felippe Cardoso (CFC) ● CSD Trainer ● Auxiliou e guiou a implementação do Ágil em diversas Organizações ● Consultorias técnicas e sobre agilidade
  4. 4. Público-alvo ● Já conhece/pratica CI ● Desconhece tranquilidade em dia de release ● Realiza deploys manualmente ● "Terminei, agora é problema do pessoal de ops/infra" ● Não faz perguntas difíceis :p
  5. 5. Integração Contínua
  6. 6. O que é Integração Contínua (CI), quais são e pra quem são os benefícios imediatos? Usuário ou Time? Integração Contínua
  7. 7. ● Fail Fast -- detectamos problemas mais cedo ● + Qualidade ● + Tempo desenvolvendo e - apagando incêndios ● - Estresse Integração Contínua
  8. 8. CI agrega muito valor
  9. 9. Mas quando e quão frequentemente este valor é entregue ao cliente?
  10. 10. O que acontece depois da integração?
  11. 11. ● Build gera um pacote pronto para deploy? ● Como é o deploy para os diferentes ambientes? ○ Testes exploratórios ○ Homologação ○ Produção O que acontece depois da integração?
  12. 12. O que é pronto?
  13. 13. Commitado? Buildado? O que é pronto?
  14. 14. Pronto deveria significar Produção!
  15. 15. Por que usamos CI?
  16. 16. ● Identificamos problemas rápido ● Os resolvemos mais cedo ● Reduzimos drasticamente o efeito bola de neve ● Nos estressamos menos Por que usamos CI?
  17. 17. Entrega Contínua Por que não utilizar as mesmas idéias para a etapa pós-integração?
  18. 18. Ou pior, o time de DevOps Não percam a palestra do Carlos Felippe Mas tem o time de operações...
  19. 19. Todos devem ser responsáveis pelo processo de entrega
  20. 20. Como?
  21. 21. 1. O processo de entrega precisa ser reprodutível e confiável 2. Automatize tudo! 3. Se algo é doloroso, faça-o mais freqüentemente. 4. Mantenha tudo sob versionamento 5. Pronto significa entregue 6. Integre qualidade 7. Todos devem ter responsabilidade sobre o processo de entrega 8. Melhore continuamente Os 8 princípios da entrega contínua
  22. 22. As 4 práticas da entrega contínua ● Construa binários uma só vez ● Use o mesmo mecanismo para o deploy em todos os ambientes. ● Faça Smoke Tests ● Se alguma coisa falhar, pare (stop the line)! ○ Todos devem ser responsáveis pelo processo de entrega!
  23. 23. O que pode me ajudar? Ferramentas Open-Source
  24. 24. jenkins-ci.org Jenkins
  25. 25. ● Robô de Integração Contínua ● Canivete Suíço ○ Integração Contínua ○ Agendamento de processos ○ Executor de Smoke Tests ○ Visibilidade/Monitoramento ○ Pipeline Jenkins
  26. 26. Visibilidade
  27. 27. Visibilidade
  28. 28. Fabric http://www.fabfile.org/
  29. 29. ● Se precisarmos fazer um deploy em 100 servidores ao mesmo tempo? ● Rodar um comando em todas as máquinas de produção? Fabric
  30. 30. Fabric
  31. 31. Fabric
  32. 32. Docker www.docker.com
  33. 33. ● Empacote uma aplicação com um sistema de arquivos com tudo que ela precisa: ○ Código ○ Ferramentas e bibliotecas de sistema ○ Middleware ○ Tudo que você instalaria em um servidor ● Garantia de que o software rodará da mesma forma, independente de ambiente. Docker
  34. 34. Docker
  35. 35. Docker ● Milhares de imagens prontas ● Disponíveis em um registro web ● Assim como o NPM, Ruby Gems, CPAN etc.
  36. 36. Como Integrar essas ferramentas?
  37. 37. Slave “Code, please!” “Deploy, please!” Integration Server
  38. 38. github.com/diegomartins/fabricio A REST/web-ui approach to fabric Vejamos na prática
  39. 39. Dúvidas? raphaeldpaiva@gmail.com cfc@k21.com.br Obrigado!

×