Quebrando barreiras entre desenvolvimento e operação de software com DevOps
-
Upload
jose-alexandre-macedo -
Category
Technology
-
view
101 -
download
1
Transcript of Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Monte Sião/MG
Quem sou eu
Foz do Iguaçu/PRAlfenas/MG
Vila Velha/ESVitória/ES
Guarapari/ES
Rio de Janeiro/RJ
Monte Sião/MG
Quem sou eu
Foz do Iguaçu/PRAlfenas/MG
Vila Velha/ESVitória/ES
Guarapari/ES
Rio de Janeiro/RJ
Desenvolvimento e operação Tradicional
Imagem: http://www.infoq.com/br/presentations/padroes-de-deploy-para-devops
Desenvolvimento e operação Tradicional
Imagem: http://www.infoq.com/br/presentations/padroes-de-deploy-para-devops
Métodos Ágeis
•Software entregue mais rápido
•Menos bugs
•Cliente participando mais
... mudando a execução das atividades
Novas preocupações surgem...
Imagem: http://www.infoq.com/br/presentations/padroes-de-deploy-para-devops
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
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
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”
Mudançade cultura...
... Nunca é fácil
O QUE QUEREMOS?COLABORAÇÃO ENTRE
DEVs E SYSADMIN!
E QUANDO QUEREMOS? NO PRÓXIMO PROJETO!
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
DevOps – Como?
•Aumentar quantidade de deploy
•- tempo ciclo + qualidade
Imagem: http://www.infoq.com/br/presentations/padroes-de-deploy-para-devops
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 dadosmonitoramento
agregamento de
logs e métricas
auditoria
segurança
desempenho
deploy
Benefícios comprovados
do DevOps
http://devops.com/features/fresh-stats-comparing-traditional-it-and-devops-oriented-productivity/
Automatizando o setup de desenvolvimento
O VirtualBox possui uma ferramenta de
linha de comando para executar e
configurar as máquinas virtuais, porém...
Automatizando o setup de desenvolvimento
...podemos complementar o uso do VirtualBox
com o Vagrant, uma DSL para definir,
gerenciar e configurar ambientes virtuais
Vagrant para automatizar a definição, gerência e configuração de máquinas virtuais
1. Adiconar uma nova box
Vagrant para automatizar a definição, gerência e configuração de máquinas virtuais
2. Declarar o Vagrantfile
Vagrant para automatizar a definição, gerência e configuração de máquinas virtuais
3. Subindo o servidor
Vagrant para automatizar a definição, gerência e configuração de máquinas virtuais
4. Comunicando com a máquina
Por onde começar antes de automatizar tarefas de
desenvolvimento?
Sistemas de
controle de versão
Os primórdios da entrega deve ser o commit...
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
SCV BUILD AUTOMATIZADOHora de automatizar os testes...
Compilar não é
garantia que o
sistema irá funcionar
corretamente
SCV BUILD AUTOMATIZADOHora de automatizar os testes...
•Testes automatizáveis
•Teste de unidade
•Teste de integração
•Testes funcionais
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
Boas práticas paraIntegraçã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
Monitoramento
Com o sistema em produção preciso saber se está funcionando normalmente...
• Muito popular
• Implementação robusta
• Ecossistema de plug-ins
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...
Automatizando a Infra
• Cada um escreve sua própria versão
• Difícil de reutilizar em outras situações
Qual o problemadisso?
Automatizando a Infra
Devs são bons (ou deveriam ser) em
escrever código modularizado e
reusável
Aprendendo comdesenvolvedores...
Automatizando a Infra
• Scripts só funcionam para instalar e
configurar o servidor pela primeira vez
• Não serve de documentação
Motivos para trocarmos osscripts por ferramentas...
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
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ário Y exista”
Escrever código de infra de forma declarativa
Padronizar aAutomatização da Infra
Controle de versões, testes, empacotando
e distribuindo módulos comuns
Tratar infra como tratamos código!
Exemplificando• Madura
• Aceita na comunidade
de admisys
• Bem adotada pela
comunidade
Tratar infra como tratamos código!
Conceitos
•Diretiva: Cada comando que você
declara na linguagem (recursos no
Puppet)
•Arquivo de diretivas: Arquivo de código
fonte (manifesto no Puppet)
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
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)
Referências e Recursos
• http://web.experiencedevops.org/resources/
• http://www.infoq.com/br/presentations/padroes-de-deploy-para-devops
• http://www.infoq.com/br/presentations/devops-com-exemplos-praticos
• http://www.infoq.com/br/presentations/devops-na-zendesk