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.
1. CI -> CD apenas com
ferramentas open-source
Raphael Paiva e Carlos Felippe Cardoso
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. 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. 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
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?
16. ● Identificamos problemas rápido
● Os resolvemos mais cedo
● Reduzimos drasticamente o efeito bola de
neve
● Nos estressamos menos
Por que usamos CI?
24. 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
25.
26. 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!
38. ● 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