Quebrando barreiras entre desenvolvimento e operação de software com DevOps

79
Quebrando barreiras entre desenvolvimento e operação de software com DevOps José Alexandre Macedo

Transcript of Quebrando barreiras entre desenvolvimento e operação de software com DevOps

Quebrando barreiras entre desenvolvimento e operação de

software com DevOps

José Alexandre Macedo

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

Software faz parte do nosso dia a dia

Quantos software estão envolvidos em uma

viajem de férias?

Quantos software estão envolvidos em uma

viajem de férias?

Sistemafora do ar...

Sistemafora do ar...

problemas para

todos

investimentos emqualidade e estabilidade são

fundamentaisdesde o inicio até a produção

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

Um belo dia o código é colocado em produção

E o inesperado acontece...

Um belo dia o código é colocado em produção

Desenvolvimento e operação Tradicional

Prioridade é manter rodando...

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

Conflito de interesses

•Devs introduzemmudanças

•Operacao evita mudanças•+ risco a estabilidade

Novos processos são criados para definir modo trabalho

Gargalo para o deploy

Exige docs para configurar e instalar, tickets para comunicaçã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

DevOps e Entrega Contínua

Qual aalternativa?

Entrega contínua

Diminuir o tempo entre criação da ideia e colocar em produção

DevOps nasceu para aproximar

as áreas de desenvolvimento

e operação

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 – Por quê?

Competitividade e Adaptação à Mudanças

DevOps – Como?

•Aumentar quantidade de deploy

•- tempo ciclo + qualidade

Imagem: http://www.infoq.com/br/presentations/padroes-de-deploy-para-devops

DevOps – Como?

•Um dos segredos para inversão do ciclo é aautomatização do processo

DevOps – Como?

Automatizar o que exatamente?

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

Como as empresas encaram DevOps?

DevOps sem miséria

Como as empresas encaram DevOps?

Como as empresas encaram DevOps?

Benefícios comprovados

do DevOps

http://devops.com/features/fresh-stats-comparing-traditional-it-and-devops-oriented-productivity/

Conceitos eFerramentas

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

Provisionamentode VM agora!

Por onde começar antes de automatizar tarefas de

desenvolvimento?

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...

Por onde começar antes de automatizar tarefas de

desenvolvimento?

Git e GitLab

Ok, faço controle de versão, e agora?

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

Build Automatizado

Ferramentas em Java

Resultado do build são

arquivos binários (artefatos)

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

Ferramentas paraIntegração Contínua

Jenkins

Ferramentas paraIntegração Contínua

Serviços na nuvem

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...

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...

Ferramentas paraOrquestração de Deploy

Fabric

Mcollective

Automatizando a Infra

Administradores de sistema aprendem o poder da linha de comando desde

Automatizando a Infra

Administradores de sistema amam seus scripts!

Scripts

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

Gosto tanto dos meus scripts...

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!

Ferramentas paraAutomatizar a Infra

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)

Exemplificando

Exemplificando

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

@jamacedojamacedo.com