Continuous Integration,
Automated Builds e Continuous Deployment,
desenvolvimento com qualidade
Locaweb, 19 de setembro de 2015
RobsonAgapitoCorrea
Robson Agapito
 Divulgador de Qualidade de Software
 Coordenador de Qualidade na Locaweb
 br.linkedin.com/in/robsonagapito
 www.testadores.com
 @robsonagapito
COMO ERA ANTES
API
API
API
API
API
SYSTEMS
SYSTEMSSYSTEMS
1
REPO
DEV
REPO
QA
REPO
PRODUÇÃO
BRICKLAYER
MANUAL?!?
Disponibilizado no Repo
pelo BRICKLAYER,
tudo bem... mas como era
instalado nas máquinas?
TUDO MANUAL!!!!
TUDO MANUAL ?!?!?
NÃOOOOO!!!!!
QUANDO MENOS SE
ESPERA...
3 QAs Júnior
1 QA Sênior
2 Especialistas
3 QAs Júnior
1 QA Sênior
1 Especialista
+1 Especialista
-1 Especialista
O QUE PENSAMOS PARA 2014
NA NA NI NA NÃO!
PRIMEIRO PASSO
Contratação de um QAOps
+ QUE
500
MÁQUINAS
VERSIONAMENTO
Semantic Version
2.0
1.2.34
major.minor.patch
JENKINS CENTRALIZADO
CONTINUOUS INTEGRATION
DEBIAN 6 - SQUEEZE
DEBIAN 8 - JESSIE
BUILDS
CI
DEBIAN 6 - SQUEEZE
DEBIAN 8 - JESSIE
PROMOÇÃO DE PACOTES
REPO
PROD
CI
DEV PRODUÇÃOQA
Package Installer
APOIO (CI) – GEMS/BIBLIOTECAS
SIMPLECOV BRAKEMAN
BUNDLER-AUDITING
CI
TESTES DE SISTEMAS - FUNCIONAIS
...
DEV QA
CI
NÓ 01 NÓ 02 NÓ N
OLHANDO NA PRÁTICA
PRINCIPAIS DIFICULDADES
• Pouco conhecimento técnico do ambiente
• Infraestrutura muito complexa
• Somente olhar para QAs funcionais
• Ambiente centralizado em uma pessoa apenas
• Pouca automação para manter ambiente de QA
• QA muito diferente de produção
• Alterações em produção diretamente não
sendo replicadas em QA
PRINCIPAIS GANHOS
• Mesmo pacote transitando entre os ambientes
• Versionamento oficial do pacote
• Grid para testes funcionais com Selenium Webdriver
• Jenkins centralizado
• Possibilidade de colocar pontos de verificação durante
o processo de desenvolvimento
• Maior proximidade de Devs / QAs / SysAdmin
• Maior agilidade em acertar o ambiente de QA
• Ter um ambiente de QA mais confiável
• Monitoração do ambiente de QA
• Conseguindo visualizar maior agilidade no processo de
desenvolvimento
LIÇÕES APRENDIDAS
• Utilize do conhecimento de todos na sua volta (Dev e
SysAdmin)
• QAs tem que estar no time do projeto e não em um
time separado
• Comunicação entre os QAs dos times de diferentes
projetos ajuda a melhorar o projeto como um todo
• A coisa somente funciona se todos estiverem todos
indo para o mesmo lado, então alinhamento é muito
importante
• Para arquiteturas complexas é necessário um
especialista da área
• Automação, automação e automação
PRÓXIMOS PASSOS
Utilização do Docker
PRÓXIMOS PASSOS
Utilização do Package Installer nos
projetos que são possíveis
PRÓXIMOS PASSOS
Testes Não Funcionais
(Foco em Performance)
PRÓXIMOS PASSOS
BDD
(Behavior Driven Development)
PRÓXIMOS PASSOS
Um QAOps por time
PRÓXIMOS PASSOS
Ambiente de QA
em High Availability (HA)
PRÓXIMOS PASSOS
Preparação de Continuous
Deployment em Produção
http://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment
Dúvidas?
Robson Agapito Correa
robson.agapito@locaweb.com.br
robsonagapito@gmail.com
Muito Obrigado!
Estamos contratando!
Front End / Back End
Continuous Integration,
Automated Builds e Continuous Deployment,
desenvolvimento com qualidade
RubyConf, 19 de setembro de 2015
RobsonAgapitoCorrea

Ruby Conf Brasil 2015