45
CI -> CD apenas com ferramentas open-source Raphael Paiva e Carlos Felippe Cardoso

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

Embed Size (px)

Citation preview

CI -> CD apenas com ferramentas open-sourceRaphael Paiva e Carlos Felippe Cardoso

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

Integração Contínua

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

CI agrega muito valor

Mas quando e quão frequentemente este valor é

entregue ao cliente?

O que acontece depois da integração?

● 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?

O que é pronto?

Commitado? Buildado?

O que é pronto?

Pronto deveria significar Produção!

Por que usamos CI?

● Identificamos problemas rápido● Os resolvemos mais cedo● Reduzimos drasticamente o efeito bola de

neve● Nos estressamos menos

Por que usamos CI?

Entrega ContínuaPor que não utilizar as mesmas idéias para

a etapa pós-integração?

Ou pior, o time de DevOpsNão percam a palestra do Carlos Felippe

Mas tem o time de operações...

Todos devem ser responsáveis pelo

processo de entrega

Como?

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!

O que pode me ajudar?Ferramentas Open-Source

jenkins-ci.org

Jenkins

● Robô de Integração Contínua● Canivete Suíço

○ Integração Contínua○ Agendamento de processos○ Executor de Smoke Tests○ Visibilidade/Monitoramento○ Pipeline

Jenkins

Visibilidade

Visibilidade

Fabrichttp://www.fabfile.org/

● Se precisarmos fazer um deploy em 100 servidores ao mesmo tempo?

● Rodar um comando em todas as máquinas de produção?

Fabric

Fabric

Fabric

Dockerwww.docker.com

● 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

Docker

● Milhares de imagens prontas● Disponíveis em um registro web● Assim como o NPM, Ruby Gems, CPAN etc.

Como Integrar essas ferramentas?

Slave

“Code, please!”

“Deploy, please!”

Integration Server

github.com/diegomartins/fabricioA REST/web-ui approach to fabric

Vejamos na prática