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
Carlos Felippe Cardoso (CFC)
● CSD Trainer● Auxiliou e guiou a implementação do Ágil
em diversas Organizações● Consultorias técnicas e sobre agilidade
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
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
● Fail Fast -- detectamos problemas mais cedo● + Qualidade● + Tempo desenvolvendo e - apagando incêndios● - Estresse
Integração Contínua
● 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?
● Identificamos problemas rápido● Os resolvemos mais cedo● Reduzimos drasticamente o efeito bola de
neve● Nos estressamos menos
Por que usamos CI?
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 versionamento5. Pronto significa entregue6. Integre qualidade7. Todos devem ter responsabilidade sobre o processo de
entrega8. Melhore continuamente
Os 8 princípios da entrega contínua
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!
● Robô de Integração Contínua● Canivete Suíço
○ Integração Contínua○ Agendamento de processos○ Executor de Smoke Tests○ Visibilidade/Monitoramento○ Pipeline
Jenkins
● Se precisarmos fazer um deploy em 100 servidores ao mesmo tempo?
● Rodar um comando em todas as máquinas de produção?
Fabric
● 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
Docker
● Milhares de imagens prontas● Disponíveis em um registro web● Assim como o NPM, Ruby Gems, CPAN etc.
github.com/diegomartins/fabricioA REST/web-ui approach to fabric
Vejamos na prática
Top Related