SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
globo
.com
Test Driven
Infrastructure na
Globo.com
FernandoCaroloeRogérioSchneider
QConSãoPaulo2014
Quinta-feira
15:45
Uma turminha do
barulho aprontando
altas confusões
configurações
Tudo era feito à mão
!
!
PARTE 1
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
globo
.com
Uma maneira melhor
Infraestrutura = código
globo
.com
Mesmos princípios
Controle de versão
Pair programming e revisão de código
Test driven development
Integração contínua
globo
.com
Ferramentas
Controle de versão
Automação
Máquinas virtuais
Integração contínua
Escolha as suas
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
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
globo
.com
Puppet
Configuração do host para um projeto
Pacotes de software
Arquivos de configuração
Controle do startup da máquina
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
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
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
Aprendizado
!
!
PARTE 2
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
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
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
Infraestrutura =
código dos outros
!
!
PARTE 3
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
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
globo
.com
TDI
Ruby – gem install tdi
Open source (github)
Beta
Curta e compatilhe
Pull requests são bem-vindos
Demonstração
!
!
PARTE 4
globo
.com
Serviços externos via HTTP
URLs de serviços públicos na internet
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
}
}
}
}
globo
.com
globo
.com
Acessos de rede
Conexões em portas específicas
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]
}
}
}
}
globo
.com
Perguntas
!
!
FINAL
CRÉDITOS
globo
.com
Fernando Carolo
carolo@corp.globo.com
Rogério Schneider
rogerio.schneider@corp.globo.com
!
TDI
github.com/globocom/tdi
rubygems.org/gems/tdi
globo
.com
Kickstart
fedoraproject.org/wiki/Anaconda/Kickstart
Puppet
puppetlabs.com/puppet/puppet-open-source
Foreman
theforeman.org
Vagrant
www.vagrantup.com
Obrigado

Mais conteúdo relacionado

Mais procurados

Projeto para a faculdade? Canivete Python resolve!
Projeto para a faculdade? Canivete Python resolve!Projeto para a faculdade? Canivete Python resolve!
Projeto para a faculdade? Canivete Python resolve!Guilherme Medeiros
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Developmentpugpe
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Renato Groff
 
Testadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de DockerTestadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de DockerStefan Teixeira
 
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...tdc-globalcode
 
Composer para Gestão de Dependências - Encontro PHP - Season
Composer para Gestão de Dependências - Encontro PHP - SeasonComposer para Gestão de Dependências - Encontro PHP - Season
Composer para Gestão de Dependências - Encontro PHP - SeasonRogerio Prado de Jesus
 
Gerenciamento de dependências em PHP com o Composer
Gerenciamento de dependências em PHP com o ComposerGerenciamento de dependências em PHP com o Composer
Gerenciamento de dependências em PHP com o ComposerAndre Cardoso
 
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...Stefan Teixeira
 
TDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerTDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerRafael Gomes
 
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amorMeetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amorStefan Teixeira
 
Piores Práticas em Containers!
Piores Práticas em Containers!Piores Práticas em Containers!
Piores Práticas em Containers!Pery Lemke
 
Novidades das Bibliotecas Jetpack do Android (2021)
Novidades das Bibliotecas Jetpack do Android (2021)Novidades das Bibliotecas Jetpack do Android (2021)
Novidades das Bibliotecas Jetpack do Android (2021)Nelson Glauber Leal
 
Automatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com JenkinsAutomatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com JenkinsFelipe Santos
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureGrupo de Testes Carioca
 
Integração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usarIntegração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usarThiago Paes
 
Orquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeOrquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeRoberto Hashioka
 
Palestra sobre produção de Vídeo em Software Livre no Latinoware 2011
Palestra sobre produção de Vídeo em Software Livre no Latinoware 2011Palestra sobre produção de Vídeo em Software Livre no Latinoware 2011
Palestra sobre produção de Vídeo em Software Livre no Latinoware 2011Drica Veloso
 

Mais procurados (20)

Projeto para a faculdade? Canivete Python resolve!
Projeto para a faculdade? Canivete Python resolve!Projeto para a faculdade? Canivete Python resolve!
Projeto para a faculdade? Canivete Python resolve!
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Development
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
 
Testadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de DockerTestadores 2015 - O Fantástico Mundo de Docker
Testadores 2015 - O Fantástico Mundo de Docker
 
Python com TDD
Python com TDDPython com TDD
Python com TDD
 
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
 
Composer para Gestão de Dependências - Encontro PHP - Season
Composer para Gestão de Dependências - Encontro PHP - SeasonComposer para Gestão de Dependências - Encontro PHP - Season
Composer para Gestão de Dependências - Encontro PHP - Season
 
Gerenciamento de dependências em PHP com o Composer
Gerenciamento de dependências em PHP com o ComposerGerenciamento de dependências em PHP com o Composer
Gerenciamento de dependências em PHP com o Composer
 
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
 
TDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerTDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop docker
 
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amorMeetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
Meetup DevOps Carioca - GoCD + Docker + Docker Compose: uma história de amor
 
Msr (ideia) {pptx}
Msr (ideia) {pptx}Msr (ideia) {pptx}
Msr (ideia) {pptx}
 
Piores Práticas em Containers!
Piores Práticas em Containers!Piores Práticas em Containers!
Piores Práticas em Containers!
 
Novidades das Bibliotecas Jetpack do Android (2021)
Novidades das Bibliotecas Jetpack do Android (2021)Novidades das Bibliotecas Jetpack do Android (2021)
Novidades das Bibliotecas Jetpack do Android (2021)
 
Automatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com JenkinsAutomatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com Jenkins
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows Azure
 
Workshop Docker
Workshop DockerWorkshop Docker
Workshop Docker
 
Integração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usarIntegração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usar
 
Orquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeOrquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e Compose
 
Palestra sobre produção de Vídeo em Software Livre no Latinoware 2011
Palestra sobre produção de Vídeo em Software Livre no Latinoware 2011Palestra sobre produção de Vídeo em Software Livre no Latinoware 2011
Palestra sobre produção de Vídeo em Software Livre no Latinoware 2011
 

Semelhante a Test Driven Infrastructure na Globo.com

Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Felipe Klerk Signorini
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaLeonardo Kobus
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...Bruno Tanoue
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Jaime Neto
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agileAlini Rebonatto
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122Bruno Souza
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVinícius Krolow
 
Como aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipeComo aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipeWende Mendes
 
Web Tools Pt B R
Web Tools Pt  B RWeb Tools Pt  B R
Web Tools Pt B Rguestb9d145
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Luís Cobucci
 
Infraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvemInfraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvemFernando Ike
 
Jenkins - livre-se da parte chata do Java
Jenkins - livre-se da parte chata do JavaJenkins - livre-se da parte chata do Java
Jenkins - livre-se da parte chata do JavaFernando Boaglio
 
Overview install jammer
Overview install jammerOverview install jammer
Overview install jammerOromar Dantas
 
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPPedro Chaves
 

Semelhante a Test Driven Infrastructure na Globo.com (20)

Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuida
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
Introdução ao Maven
Introdução ao MavenIntrodução ao Maven
Introdução ao Maven
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
Como aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipeComo aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipe
 
Web Tools Pt B R
Web Tools Pt  B RWeb Tools Pt  B R
Web Tools Pt B R
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Infraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvemInfraestrutura imutável - A base das aplicações na nuvem
Infraestrutura imutável - A base das aplicações na nuvem
 
Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
 
Jenkins - livre-se da parte chata do Java
Jenkins - livre-se da parte chata do JavaJenkins - livre-se da parte chata do Java
Jenkins - livre-se da parte chata do Java
 
Overview install jammer
Overview install jammerOverview install jammer
Overview install jammer
 
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHP
 

Test Driven Infrastructure na Globo.com