test driven infrastructure na globo - qconsp.com · barulho aprontando altas confusões...

35
globo .com Test Driven Infrastructure na Globo.com Fernando Carolo e Rogério Schneider QCon São Paulo 2014

Upload: lyxuyen

Post on 24-Nov-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .comTest Driven Infrastructure na Globo.comFernando Carolo e Rogério Schneider QCon São Paulo 2014

Page 2: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

Quinta-feira 15:45

Page 3: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era
Page 4: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

Uma turminha do barulho aprontando

altas confusões configurações

Page 5: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

Tudo era feito à mão !

!

PARTE 1

Page 6: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Configurar um servidor era tarefa manual Instalar pacotes, editar arquivos Alguns arquivos foram para um share NFS /etc, /opt, /usr/local acertados manualmente Trabalho repetido em vários hosts ClusterSSH, Capistrano

Page 7: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Uma maneira melhor Infraestrutura = código

Page 8: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Mesmos princípios Controle de versão Pair programming e revisão de código Test driven development Integração contínua

Page 9: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Ferramentas Controle de versão Automação Máquinas virtuais Integração contínua Escolha as suas

Page 10: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Ferramentas que usamos Controle de versão Git Automação Kickstart, Puppet Máquinas virtuais Vagrant Integração contínua Jenkins Não são as únicas

Page 11: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Kickstart Instalação padronizada de SO Imagens para boot via PXE Apenas os pacotes básicos Serviços essenciais (resolver, ntp, ldap) Diferenças só por conta do hardware

Page 12: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Puppet Configuração do host para um projeto Pacotes de software Arquivos de configuração Controle do startup da máquina

Page 13: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Foreman Front-end para o puppet master Atribuição de papéis a cada host Gerência de certificados do puppet Status de cada host

Page 14: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Vagrant Gerenciamento de máquinas virtuais Criação de VMs por script Compatível com Virtualbox, VMWare, etc Ambiente completo no seu notebook

Page 15: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Jenkins Integração contínua também para infra Testes unitários nos módulos puppet Montagem de ambientes com Vagrant Instalação e testes do projeto

Page 16: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

Aprendizado !

!

PARTE 2

Page 17: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Puppet é funcional Módulos descrevem o estado desejado Pense em makefile, não em script Dependências devem ser explícitas Use requires e anchors Desfazer é difícil Usar ensure => absent fica confuso Começar do zero é mais fácil

Page 18: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Unifique o código do seu projeto Aplicação + módulos puppet Versionamento em conjunto Isole os parâmetros do código Use defines separados ou hiera Código legível é código bonito puppet-lint

Page 19: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Separe os ambientes no Foreman Versões para desenvolvimento, QA, produção Cuidado com módulos compartilhados Testes e eterna vigilância Librarian-puppet pode ajudar Decida como aplicar as mudanças Use --onetime ao invés de rodar o agente como daemon

Page 20: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

Infraestrutura = código dos outros

!

!

PARTE 3

Page 21: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Mudanças acontecem o tempo todo Em outros lugares Principalmente em produção Nem tudo está do jeito desejado Serviços externos, bases de dados, servidores de arquivos, ACLs, etc Precisamos de testes de aceitação

Page 22: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Nossa solução: TDI Ferramenta para rodar testes sobre a infra DNS, filesystem, HTTP, etc Prática de TDD Escreva o teste, rode, corrija os erros Plano de teste num arquivo JSON Pode ser gerado no build da aplicação Ajustado ao papel de cada host Torna-se teste de aceitação da infraestrutura

Page 23: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

TDI Ruby – gem install tdi Open source (github) Beta Curta e compatilhe Pull requests são bem-vindos

Page 24: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

Demonstração !

!

PARTE 4

Page 25: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Serviços externos via HTTP URLs de serviços públicos na internet

Page 26: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

{ "app": { "desc": "Test service dependencies", "http": { "http://globoesporte.globo.com/healthcheck": { "match": "WORKING" }, "http://api.sde.globo.com": { "code" : 301 }, "https://api.sde.globo.com": { "code" : 401 }, "https://api.cartola.globo.com/mercado/status.json": { "code" : 200 }, "https://api.cartola.globo.com/wrong-url": { "code" : 200 } } } }

Page 27: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Page 28: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Acessos de rede Conexões em portas específicas

Page 29: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

{ "app": { "desc": "Test network connectivity", "acl": { "port": 80, "www.globo.com": { }, "globoesporte.globo.com": { }, "g1.globo.com": { }, "www.example.com": { "port": 9999 }, "localhost": { "port": [22, 80, 65535] } } } }

Page 30: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Page 31: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

Perguntas !

!

FINAL

Page 32: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

CRÉDITOS

Page 33: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Fernando Carolo [email protected] Rogério Schneider [email protected]

!

TDI github.com/globocom/tdi rubygems.org/gems/tdi

Page 34: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

globo .com

Kickstart fedoraproject.org/wiki/Anaconda/Kickstart Puppet puppetlabs.com/puppet/puppet-open-source

Foreman theforeman.org

Vagrant www.vagrantup.com

Page 35: Test Driven Infrastructure na Globo - qconsp.com · barulho aprontando altas confusões configurações. Tudo era feito à mão!! PARTE 1. globo .com Configurar um servidor era

Obrigado