Apresentado para o Pop-ES e NPD da Ufes. Conheça o significado de DevOps e como ele pode apoiar entregas mais rápidas de software por meio da mudança de cultura, automatização entre outras...
17. Desenvolvimento e operação Tradicional
• Separação de responsabilidades
Time de
desenvolvimento
• criar produtos
• criar novas
funcionalidades
• corrigir bugs
Time de operação
• Cuidar dos produtos em
produção
20. Gargalo para o deploy
Exige docs para configurar e instalar,
tickets para comunicação
21. O ciclo diminui
habilidade de
resposta rápida
a mudanças no
negócio
Imagem: http://www.infoq.com/br/presentations/padroes-de-deploy-para-devops
Desenvolvimento e operação
Tradicional
25. Mas o que é devops?
“DevOps é colaboração
entre desenvolvedores
e operação”
“DevOps é usar
Automação”
“DevOps é fazer
deploys pequenos”
“DevOps é tratar
sua infra como
código”
“DevOps é troca
de funcionalidades”
26. Mudança
de cultura...
... Nunca é fácil
O QUE QUEREMOS?
COLABORAÇÃO ENTRE
DEVs E SYSADMIN!
E QUANDO QUEREMOS? NO PRÓXIMO PROJETO!
27. DevOps – Mudança Cultural
•Reconhecer o conflito de objetivos e criar
um ambiente de colaboração entre as
equipes
•Isso vai influenciar
•Fluxo de trabalho completado
•Frequência de deploys
•Estabilidade e robustez do ambiente de
produção
28. DevOps – Por quê?
Competitividade e Adaptação à Mudanças
32. DevOps – Automatizar o que?
entre outras atividades...
Compilação
do código
testes
automatizados
empacotamento
criação de ambientes
para teste ou produção
configuração da
infraestrutura
migração de dados
monitoramento
agregamento de
logs e métricas
auditoria
segurança
desempenho
deploy
39. Automatizando o setup de desenvolvimento
O VirtualBox possui uma ferramenta de
linha de comando para executar e
configurar as máquinas virtuais, porém...
40. Automatizando o setup de desenvolvimento
...podemos complementar o uso do VirtualBox
com o Vagrant, uma DSL para definir,
gerenciar e configurar ambientes virtuais
41. Vagrant para automatizar a definição, gerência e
configuração de máquinas virtuais
1. Adiconar uma nova box
42. Vagrant para automatizar a definição, gerência e
configuração de máquinas virtuais
2. Declarar o Vagrantfile
43. Vagrant para automatizar a definição, gerência e
configuração de máquinas virtuais
3. Subindo o servidor
44. Vagrant para automatizar a definição, gerência e
configuração de máquinas virtuais
4. Comunicando com a máquina
50. Ok, faço controle de versão, e agora?
Hora de automatizar o build
Compilação, download e resolução de
dependências, vinculação com
bibliotecas, empacotamento, testes
automatizados
52. SCV
BUILD AUTOMATIZADO
Hora de automatizar os testes...
Compilar não é
garantia que o
sistema irá funcionar
corretamente
53. SCV
BUILD AUTOMATIZADO
Hora de automatizar os testes...
•Testes automatizáveis
•Teste de unidade
•Teste de integração
•Testes funcionais
54. Agora podemos automatizar a integração
Integração Contínua
Trabalhar em paralelo
exige mais
•Comunicação
•Coordenação
Quanto mais tempo sem
integrar, maior o risco de
se criar conflitos
57. Boas práticas para
Integração Contínua
1. Rodar um build local para garantir que
isoladamente esta ok
2. Atualiza repositório local
3. Testes novamente
4. Compartilha commit com repo central
59. Monitoramento
Com o sistema em produção preciso
saber se está funcionando normalmente...
• Muito popular
• Implementação robusta
• Ecossistema de plug-ins
60. Orquestração de Deploy
Quanto mais componentes você possuir
na arquitetura, maior a necessidade de
orquestrar a ordem do deploy
Exemplo: Provisionar o banco de dados antes do
servidor web, deploy em clusters...
67. Automatizando a Infra
• Scripts só funcionam para instalar e
configurar o servidor pela primeira vez
• Não serve de documentação
Motivos para trocarmos os
scripts por ferramentas...
68. Automatizando a Infra
• Execute diversas vezes o mesmo código e
apenas o necessário será alterado
• serviço rodando? não será reiniciado
• arquivo com conteúdo correto? não será
alterado
Idempotência
69. Automatizando a Infra
• Ao invés da instrução ser "instale o pacote X”
ou "crie o usuário Y” ,
• Você diz "eu quero que o pacote X esteja
instalado” ou "eu quero que o usuárioY exista”
Escrever código de infra
de forma declarativa
70. Padronizar a
Automatização da Infra
Controle de versões, testes, empacotando
e distribuindo módulos comuns
Tratar infra como tratamos código!
73. Conceitos
•Diretiva: Cada comando que você
declara na linguagem (recursos no
Puppet)
•Arquivo de diretivas: Arquivo de código
fonte (manifesto no Puppet)
76. Recursos do Puppet
são abstratos!
Não precisamos dizer para o Puppet
qual gerenciador de pacotes usar...
Provedores para package
apt , rpm , yum , gem ,etc
77. DevOps além das ferramentas
• John Willis, Damon Edwards e Jez Humble definiram o
acrônimo CALMS para definir o que é DevOps
John Willis.What devops means to me. 2010.
(C)ultura
(A)utomação
(L)ean (pensamento enxuto)
(M)edição
(S)haring (compartilhamento)