Primeiros passos
Fernanda Lanção Morais Martins
DevOps
Agenda
❏ Breve introdução sobre DevOps
❏ Estudo sobre contexto e análise de problemas
❏ Algumas dicas de ferramentas
Equipe de Desenvolvimento & Operações
Mudança Vs Estabilidade
Fonte:houseofgeekery
Como facilitar esse
processo?
Criação de manuais de deploy, sistemas de tickets
e processos de gerência de mudanças
Com o tempo….
Frequencia
de
Deploy
Quantidade
de
Mudanças
Risco
Processo
- +
+ +
Fonte:DevOps na Prática
Entrega Contínua
Frequencia
de
Deploy
Quantidade
de
Mudanças
Risco
Processo
+ -
-
Fonte:DevOps na Prática
E onde DevOps entra nisso?
DevOps é a cultura de colaboração entre equipe
de desenvolvimento e operações para aumentar o
fluxo de trabalho..
Como aumentar o fluxo de trabalho?
Automatização de deploys, de criação de
ambientes e etc...
Legal… E agora?
Mapeie seu contexto
Anote tudo que te incomoda...
Tudo mesmo!
Não pense em obstáculos técnicos, não-
técnicos… o céu é o limite!
Seja chato!
Para cada item...
Busque referências internas
Se você se incomoda, certamente outras
pessoas da sua equipe também!
Converse com elas! As vezes elas até já tem
uma solução desenhada
Mapeie dependências
Quem é a pessoa que eu preciso conversar?
Pra melhorar isso, é realmente necessário
mudar alguma outra coisa?
Cuidado! Um problema geralmente gera
muitas depedências, trate cada uma delas em
separado! Faça tudo em pequenos passos!
Busque referências externas
Com o problema e suas dependências em
mãos...? Será que alguém já passou por isso?
Google it!
Trabalhe em uma solução
Faça um timebox: aloque um tempo semanal
para trabalhar em uma solução!
Peça ajuda! Quem sabe aquela pessoa que
você conversou antes…
Se prepare para muitas tentativas e erros...
E agora… Dicas!
Obs: Ferramentas preferidas por mim, estão em
vermelho.
Automação de configuração de infraestrutura
Qual problema resolve?
● Precisamos configurar um projeto automaticamente em
uma máquina com sistema operacional para que seja
mais rápida a adoção por novos integrantes.
● Gostaria de provisionar um servidor de produção para
rodar minha aplicação rapidamente evitando assim
Snowflake servers
Ferramentas: Chef, Puppet, Ansible
Por que não usar shell script? As ferramentas acima são
idempotêntes!
Automação de criação de infraestrutura
Qual problema resolve?
● Precisamos colocar um sistema operacional dentro de
uma máquina automaticamente
Perceba que o slide anterior falava de configuração de um
sistema operacional já instalado!
Ferramentas: Packer
Baixe sistemas operacionais e configure-os utilizando a
ferramenta fornecida pelo OS. kickstart para CentOS ou XML
para Windows
Automação de criação de máquinas virtuais
Qual problema resolve?
● Precisamos colocar e configurar um sistema operacional
dentro de uma máquina virtual em ambiente de dev
Ferramentas: Vagrant
=> Possui sistemas operacionais já "pré-configurados" na
internet, você só precisa fazer download.
=> Usado em ambientes de dev com VirtualBox
=> Você pode baixar o OS e usar um Ansible para configurar
garantindo que tanto seu servidor de produção e sua máquina
de dev sejam iguais.
=> Pra quê usar VM? Pra não "manchar sua máquina", pra usar
algo próximo de produção.! Isolamento da sua máquina!
Automação de criação de infraestrutura com containers
Qual problema resolve?
● Precisamos colocar e configurar um sistema operacional
em qualquer ambiente
Ferramentas: Docker
É um Vagrant para todos os ambientes, mas ao invés de VMs
que são pesadas e demandam recurso, utiliza-se containers.
Resumindo suas opções em dev
vagrant + ansible/chef... =>
quero configurar uma VM qualquer
packer + ansible/... =>
quero configurar uma máquina e configurar seu OS por completo
DEV
packer instalando vagrant + ansible =>
quero configurar minha VM completamente + destruí-la e subi-la
facilmente (vagrant)
Docker => quero configurar um OS qualquer num container
DevOps é só automatização de infra?
● Automatização de tarefas como rodar testes, instalação e
empacotamento da sua aplicação também entram nas
práticas.
● Utiliza-se um servidor de CI para manter as coisas
organizadas: Travis, SNAP-CI, Go-CD, Jenkins...
● Cada tarefa possui ferramentas apropriadas de acordo
com a linguagem de programação (ou tech stack)
utilizada…
● Dica: Automatize sempre incluindo o mínimo de
complexidade em sua aplicação. Ferramentas demais
podem se tornar confusas e ninguém vai querer dar
manutenção !
Resumindo suas opções em ci/prod/stg
CI
Compila
Testes
unitários
Outros
Testes
Empacota
Deploy
Automatização CI
CI
Compila
Testes
unitários
Outros
Testes
Empacota
Deploy
A tarefa de deploy roda scripts ansible/chef...
para garantir que a máquina de prod/stg está OK
e instala o pacote da aplicação
O que acontece se seu servidor de CI quebra?
Pode-se automatizar também a criação do servidor de CI, assim
você tem todos os ambientes iguais, cada um com sua
configuração base e outras configurações adicionais para cada
ambiente.
Quase tudo é automatizável!
Shell script também pode ser seu melhor
amigo!
Dica: Sempre versione o seu código!
Dicas de Livros
http://12factor.net/pt_br/
Obrigada!
@flmmartins
flmmartins@gmail.com
https://github.com/flmmartins
http://www.linkedin.com/in/flmmartins

DevOps Primeiros Passos

  • 1.
  • 2.
    Agenda ❏ Breve introduçãosobre DevOps ❏ Estudo sobre contexto e análise de problemas ❏ Algumas dicas de ferramentas
  • 3.
    Equipe de Desenvolvimento& Operações Mudança Vs Estabilidade Fonte:houseofgeekery
  • 4.
    Como facilitar esse processo? Criaçãode manuais de deploy, sistemas de tickets e processos de gerência de mudanças
  • 5.
  • 6.
  • 7.
    E onde DevOpsentra nisso? DevOps é a cultura de colaboração entre equipe de desenvolvimento e operações para aumentar o fluxo de trabalho.. Como aumentar o fluxo de trabalho? Automatização de deploys, de criação de ambientes e etc...
  • 8.
  • 9.
    Mapeie seu contexto Anotetudo que te incomoda... Tudo mesmo! Não pense em obstáculos técnicos, não- técnicos… o céu é o limite! Seja chato!
  • 10.
  • 11.
    Busque referências internas Sevocê se incomoda, certamente outras pessoas da sua equipe também! Converse com elas! As vezes elas até já tem uma solução desenhada
  • 12.
    Mapeie dependências Quem éa pessoa que eu preciso conversar? Pra melhorar isso, é realmente necessário mudar alguma outra coisa? Cuidado! Um problema geralmente gera muitas depedências, trate cada uma delas em separado! Faça tudo em pequenos passos!
  • 13.
    Busque referências externas Como problema e suas dependências em mãos...? Será que alguém já passou por isso? Google it!
  • 14.
    Trabalhe em umasolução Faça um timebox: aloque um tempo semanal para trabalhar em uma solução! Peça ajuda! Quem sabe aquela pessoa que você conversou antes… Se prepare para muitas tentativas e erros...
  • 15.
    E agora… Dicas! Obs:Ferramentas preferidas por mim, estão em vermelho.
  • 16.
    Automação de configuraçãode infraestrutura Qual problema resolve? ● Precisamos configurar um projeto automaticamente em uma máquina com sistema operacional para que seja mais rápida a adoção por novos integrantes. ● Gostaria de provisionar um servidor de produção para rodar minha aplicação rapidamente evitando assim Snowflake servers Ferramentas: Chef, Puppet, Ansible Por que não usar shell script? As ferramentas acima são idempotêntes!
  • 17.
    Automação de criaçãode infraestrutura Qual problema resolve? ● Precisamos colocar um sistema operacional dentro de uma máquina automaticamente Perceba que o slide anterior falava de configuração de um sistema operacional já instalado! Ferramentas: Packer Baixe sistemas operacionais e configure-os utilizando a ferramenta fornecida pelo OS. kickstart para CentOS ou XML para Windows
  • 18.
    Automação de criaçãode máquinas virtuais Qual problema resolve? ● Precisamos colocar e configurar um sistema operacional dentro de uma máquina virtual em ambiente de dev Ferramentas: Vagrant => Possui sistemas operacionais já "pré-configurados" na internet, você só precisa fazer download. => Usado em ambientes de dev com VirtualBox => Você pode baixar o OS e usar um Ansible para configurar garantindo que tanto seu servidor de produção e sua máquina de dev sejam iguais. => Pra quê usar VM? Pra não "manchar sua máquina", pra usar algo próximo de produção.! Isolamento da sua máquina!
  • 19.
    Automação de criaçãode infraestrutura com containers Qual problema resolve? ● Precisamos colocar e configurar um sistema operacional em qualquer ambiente Ferramentas: Docker É um Vagrant para todos os ambientes, mas ao invés de VMs que são pesadas e demandam recurso, utiliza-se containers.
  • 20.
    Resumindo suas opçõesem dev vagrant + ansible/chef... => quero configurar uma VM qualquer packer + ansible/... => quero configurar uma máquina e configurar seu OS por completo DEV packer instalando vagrant + ansible => quero configurar minha VM completamente + destruí-la e subi-la facilmente (vagrant) Docker => quero configurar um OS qualquer num container
  • 21.
    DevOps é sóautomatização de infra? ● Automatização de tarefas como rodar testes, instalação e empacotamento da sua aplicação também entram nas práticas. ● Utiliza-se um servidor de CI para manter as coisas organizadas: Travis, SNAP-CI, Go-CD, Jenkins... ● Cada tarefa possui ferramentas apropriadas de acordo com a linguagem de programação (ou tech stack) utilizada… ● Dica: Automatize sempre incluindo o mínimo de complexidade em sua aplicação. Ferramentas demais podem se tornar confusas e ninguém vai querer dar manutenção !
  • 22.
    Resumindo suas opçõesem ci/prod/stg CI Compila Testes unitários Outros Testes Empacota Deploy
  • 23.
    Automatização CI CI Compila Testes unitários Outros Testes Empacota Deploy A tarefade deploy roda scripts ansible/chef... para garantir que a máquina de prod/stg está OK e instala o pacote da aplicação O que acontece se seu servidor de CI quebra? Pode-se automatizar também a criação do servidor de CI, assim você tem todos os ambientes iguais, cada um com sua configuração base e outras configurações adicionais para cada ambiente.
  • 24.
    Quase tudo éautomatizável! Shell script também pode ser seu melhor amigo! Dica: Sempre versione o seu código!
  • 25.
  • 26.