SlideShare uma empresa Scribd logo
1 de 79
A 
prá&ca 
de 
entrega 
de 
so0ware 
com 
rapidez 
e 
qualidade
Rodrigo 
Russo 
@zrusso 
Walmart.com 
iG 
Itautec 
Cetelem 
… 
Coordenador 
de 
Con&nuous 
Delivery
#1 
Walmart 
pela 
Fortune 
• Ranking 
Fortune 
Global 
500 
elegeu 
as 
maiores 
companhias 
em 
lucro 
e 
faturamento 
1. Walmart 
2. Royal 
Dutch 
Shell 
3. Sinopec 
Group 
4. China 
Na&onal 
Petroleum 
5. Exxon 
Mobil 
hUp://exame.abril.com.br/negocios/no&cias/revista-­‐fortune-­‐aponta-­‐wal-­‐mart-­‐como-­‐maior-­‐empresa-­‐do-­‐mundo
O 
Departamento 
hUp://api.ning.com/files/z5LYHFwf1ruO8aADGGgDAMNhFm-­‐ydcKSXdej8Szjfwq3fV51MdSpvemYDlo8gWpCwKhkCnMJhBjNOkf3LcLHypsijLGuXtjf/OldWest18501865.jpg
Plataforma 
de 
fornecedor 
hUp://judlaw.files.wordpress.com/2013/12/mesa-­‐ect-­‐368.jpg
hUp://cdn.acidcow.com/pics/20120311/old_west_01.jpg
Testes 
hUp://www.touristmaker.com/images/western-­‐sahara/western-­‐sahara-­‐desert-­‐and-­‐ocean.jpg
Herói
Build 
Master 
hUp://dreamchimney.com/o0heday/otd_images/20110527044721_auto.jpg
… 
Fornecedor 
A 
Fornecedor 
B 
TFS 
2 
Devs 
Code 
review 
Manutenção 
Pequenas 
melhorias 
Máquina 
do 
build 
Master 
• Merge 
do 
código 
• Versionamento 
• Empacotamento
hUp://images.huffingtonpost.com/2014-­‐06-­‐23-­‐gunfight.jpeg
E 
mesmo 
assim… 
Venda… 
Venda… 
Venda… 
hUp://www.insidemysteryshopping.com/assets/happy%20shopper%202.jpg
hUp://upload.wikimedia.org/wikipedia/commons/8/8e/Marco_zero_de_S%C3%A3o_Paulo_2.JPG
A 
Startup 
hUp://cdni.wired.co.uk/1240x826/a_c/A_startup.jpg
Novas 
dire&vas 
• Data 
center 
próprio 
• Equipe 
de 
infraestrutura 
(~4) 
• Equipe 
de 
System 
Engineers 
(1) 
• Equipe 
de 
InfoSec 
(1) 
• Equipe 
de 
desenvolvimento 
(~10) 
• Agilista 
(1)
Nova 
equipe 
• Foco 
na 
entrega 
• Equipe 
enxuta 
• Autonomia 
• Automação 
• Inovação 
• Novas 
tecnologias
Automação 
e 
novas 
tecnologias 
Push 
Pull 
… 
Package 
Repository 
apt-­‐get 
yum
Novo 
sistema 
no 
ar 
em 
poucas 
semanas 
• +90% 
de 
cobertura 
de 
testes 
unitários 
• Testes 
funcionais 
automa&zados 
• TDD 
• Pair 
programming 
• Infraestrutura 
como 
código 
• Build 
automa&zado 
• Down&me 
zero 
durante 
deploy 
• Possibilidade 
de 
realizar 
N 
deploys 
a 
qualquer 
momento 
• Agile 
• Dev 
+ 
Ops
2012 
hUp://dailypicksandflicks.com/wp-­‐content/uploads/2014/07/Sabella-­‐almost-­‐falling-­‐vs-­‐Beligum.jpg
A 
Empresa
Nova 
plataforma
• A 
equipe 
define 
a 
melhor 
tecnologia 
para 
o 
problema 
– Jenkins 
– Build 
– Deploy 
– Testes 
– …. 
• Não 
abra 
mão 
da 
qualidade
Era 
assim 
hUp://ecx.images-­‐amazon.com/images/I/A1Kc-­‐7nR8EL._SL1500_.jpg
Não 
foram 
só 
pessoas 
que 
aumentaram
Vários 
jenkins 
espalhados 
Vários 
padrões 
Perda 
de 
foco 
em 
novas 
features 
hUp://2.bp.blogspot.com/-­‐cN416AOoo_E/Tu3t5a97IEI/AAAAAAAAAr4/qXo3ez1WytY/s1600/child%2527s+progress.jpg 
Apenas 
Sys. 
Engs 
&nham 
acesso 
a 
receita 
do 
chef 
Devs 
não 
sen&am 
que 
a 
código 
de 
infra 
é 
parte 
do 
fluxo 
Deploy 
após 
vários 
sprints 
Grandes 
entregas 
com 
potenciais 
de 
rollback 
“Pacote 
está 
pronto, 
só 
falta 
instalar” 
Entregas 
demoradas
Agile 
InfoSec 
Devs 
Ops 
hUp://www.museumsyndicate.com/images/6/56154.jpg
“Devops 
é 
uma 
cultura” 
hUp://xdesktopwallpapers.com/wp-­‐content/uploads/2012/04/Morning%20Scene%20In%20Green%20Fields.jpg
hUp://www.defense.gov/DODCMSShare/NewsStoryPhoto/2009-­‐11/hrs_DF-­‐ST-­‐91-­‐01423.jpg
Desenvolver 
ferramentas 
para 
facilitar 
a 
prá*ca 
de 
Con*nuous 
Delivery 
e 
promover 
as 
prá&cas 
de 
engenharia 
de 
so9ware 
ágil 
para 
reduzir 
o 
lead 
&me, 
reduzir 
o 
risco 
e 
aumentar 
a 
qualidade 
dos 
so0wares 
desenvolvidos.
Mapa 
das 
equipes 
x 
Prá&cas 
de 
engenharia
Build 
automa&zado 
Testes 
unitários 
automa&zado 
Testes 
de 
desempenho 
20 
equipes 
Script 
de 
build 
Servidor 
de 
CI 
Build 
quebrando 
em 
função 
de 
testes 
que 
falham 
Deploy 
automa&zado 
Teste 
funcional 
automa&zado 
Ambientes 
Mapa 
das 
equipes 
x 
Prá&cas 
de 
engenharia
Estratégia
Cultura 
Engenharia 
de 
Releases 
Ferramentas 
hUp://lendio.com/cms/wp-­‐content/uploads/2011/08/ThreePillars.png
“Culture 
is 
the 
way 
you 
think, 
act, 
and 
interact.” 
• Pair 
programming 
• Testes, 
testes, 
testes 
e 
mais 
testes 
• TDD 
• Con&nuous 
Integra&on 
(CI) 
• “Every 
build 
is 
a 
poten&al 
version” 
(kill 
snapshot) 
• Dev 
+ 
Ops 
donos 
do 
código 
de 
infraestrutura
Works 
on 
my 
machine
Coaching
Con&nuous 
Integra&on 
“Con&nuous 
Integra&on 
(CI) 
is 
the 
prac&ce, 
in 
so0ware 
engineering, 
of 
merging 
all 
developer 
working 
copies 
with 
a 
shared 
mainline 
several 
&mes 
a 
day.”
Branching 
Strategy 
• Centralized 
workflow 
• Forking 
workflow 
• Feature 
branch 
workflow 
hUp://th09.deviantart.net/fs70/PRE/i/2009/352/8/d/snibston_train_line___by_Ph0t0_girl.jpg
Deployment 
pipeline
Testes 
Automa&zados 
• Testes 
Automa&zados 
• Execução 
dos 
testes 
automa&zados 
no 
jenkins 
• O 
resultado 
dos 
testes 
são 
decisivos 
• O 
resultado 
dos 
testes 
devem 
ser 
visíveis 
a 
todos
Feedback 
• E-­‐mail 
• Build 
Monitor 
plugin 
• Slack 
no&fica&on 
• … 
hUp://bamboo-­‐river.com/wp-­‐content/uploads/2011/02/feedback1.jpg
“The 
whole 
point 
of 
con&nuous 
delivery 
is 
that 
every 
check-­‐in 
creates 
a 
poten&al 
release 
candidate. 
“ 
Kill Snapshot 
Jez 
Humble 
• Testes 
realizados 
com 
pacote 
“-­‐snapshot” 
não 
eram 
os 
mesmos 
que 
eram 
promovidos 
para 
produção. 
• Testes 
realizados 
2x. 
Pacote 
“-­‐snapshot” 
e 
pacote 
released 
• Ausência 
de 
tag 
no 
git 
com 
a 
versão 
do 
pacote 
fechada 
• Falta 
de 
rastreabilidade 
no 
código
StepUp 
Marcelo 
Manzan 
StepUp 
is 
an 
u&lity 
that 
helps 
other 
projects 
to 
manage 
your 
versioning 
increase. 
• Bene|cios 
hUps://github.com/kawamanza/step-­‐up 
– Seman&c 
Versioning 
(hUp://semver.org/) 
– Changelog! 
e 
versionado 
– Não 
é 
necessário 
lembrar 
o 
que 
foi 
feito 
para 
definir 
um 
número 
de 
versão 
– Menos 
preocupação 
para 
o 
desenvolvedor 
“Um 
grupo 
de 
commits 
é 
uma 
potencial 
versão 
para 
produção”
> 
git 
commit 
–m 
“xyz” 
> 
git 
commit 
–m 
“abc” 
> 
git 
commit 
–m 
“e” 
> 
stepup 
notes 
add 
-­‐-­‐sec&on 
bugfixes 
-­‐m 
"support 
for 
old 
installa&ons” 
> 
git 
push 
1.0.0 
Bugfixes: 
-­‐ 
support 
for 
old 
installa&ons
> 
git 
commit 
–m 
“xyz” 
> 
git 
commit 
–m 
“abc” 
> 
git 
commit 
–m 
“e” 
> 
stepup 
notes 
add 
-­‐-­‐sec&on 
bugfixes 
-­‐m 
"support 
for 
old 
installa&ons” 
> 
git 
push 
Pull 
> 
stepup 
version 
create 
QA 
Package 
Repository 
App 
App 
App 
App 
App 
1.0.0 
1.0.1 
Bugfixes: 
-­‐ 
support 
for 
old 
installa&ons
> 
git 
commit 
–m 
“xyz” 
> 
git 
commit 
–m 
“abc” 
> 
git 
commit 
–m 
“e” 
> 
stepup 
notes 
add 
-­‐-­‐sec&on 
bugfixes 
-­‐m 
"support 
for 
old 
installa&ons” 
> 
git 
push 
Pull 
> 
stepup 
version 
create 
QA 
Package 
Repository 
App 
App 
App 
App 
App 
STG 
Package 
Repository 
App 
App 
App 
App 
App 
Promote 
1.0.0 
1.0.1 
Bugfixes: 
-­‐ 
support 
for 
old 
installa&ons
> 
git 
commit 
–m 
“xyz” 
> 
git 
commit 
–m 
“abc” 
> 
git 
commit 
–m 
“e” 
> 
stepup 
notes 
add 
-­‐-­‐sec&on 
bugfixes 
-­‐m 
"support 
for 
old 
installa&ons” 
> 
git 
push 
Pull 
> 
stepup 
version 
create 
QA 
Package 
Repository 
App 
App 
App 
App 
App 
STG 
Package 
Repository 
App 
App 
App 
App 
App 
PROD 
Package 
Repository 
App 
App 
App 
App 
App 
Promote 
Promote 
1.0.0 
1.0.1 
Bugfixes: 
-­‐ 
support 
for 
old 
installa&ons
Outras 
mudanças 
culturais 
• Feature 
toggle 
• Branch 
by 
abstrac&on 
• Teste 
é 
da 
equipe, 
não 
do 
QA 
• Deploy 
frequentes 
• Pacotes 
menores 
• Deploy 
não 
deve 
ser 
uma 
cerimônia 
• Rollback 
não 
é 
a 
morte! 
• "A 
vida 
é 
muito 
curta 
para 
fazer 
deploy 
de 
madrugada"
PL/SQL Oracle Forms
BACON 
Build 
Applica&on 
CON&nuously 
• Plataforma 
para 
agilizar 
a 
entrega 
de 
so0ware 
• Independente 
de 
linguagem 
e 
tecnologia 
• Suporte 
a 
novas 
tecnologias 
rapidamente 
• Serviço 
core 
para 
equipes 
(monitoração, 
backup, 
24hx7, 
…) 
• Suporte 
a 
u&lização
Build 
Sta&c 
Analysis 
Security 
Sta&c 
Analysis 
Tagging 
Package 
Promote 
/ 
Deploy 
Smoke 
Tests 
Func&onal 
Tests 
Security 
dynamic 
Analysis 
Performance 
testes 
Geminabox
Ecossistema 
Logging 
& 
Metrics 
Test 
Environment 
Orchestra&on 
Build 
Data 
Repo 
SCM 
Ar&fact 
Repo 
Build 
Provision 
Deploy 
Test 
Release
Organização 
das 
equipes 
de 
devtools, 
qa, 
syseng, 
infosec,… 
ITGov 
System 
Engineers/ 
System 
Administrators 
DevTools 
Equipes 
de 
desenvolvimento 
Quality 
Assurance 
Agile 
Process 
InfoSec
Deploy 
+ 
+ 
• Entender 
o 
fluxo 
• Criamos 
uma 
ferramenta 
interna 
para 
fazer 
a 
“cola” 
entre 
jenkins 
e 
chef 
• Primeiro 
este 
passo, 
para 
então 
u&lizar 
as 
ferramentas 
corretas
Deploy 
+ 
+ 
• Blue-­‐green 
• CanaryRelease
Garan&a 
da 
qualidade 
• Automação 
• Autonomia 
• BDD 
• Testes 
automa&zados 
• Testes 
exploratórios 
• Comunicação 
• Critérios 
de 
aceite
“You 
write 
you 
own” 
Neil 
Ashe, 
President 
and 
CEO 
at 
Walmart 
Global 
eCommerce
2013
DevTools 
acelera 
o 
amadurecimento 
da 
equipe
Setembro/2014 
• +250 
TI 
• +40 
produtos 
• +24 
equipes 
internas 
+ 
10 
externas 
• + 
1400 
jobs 
• Setembro: 
– 200 
deploys
Métricas 
• Sonar 
• Projeto 
interno 
para 
visualizar 
métricas 
por 
projeto 
de 
so0ware 
• Score 
por 
projeto 
de 
so0ware 
• Score 
é 
decisório 
para 
“Mudança 
ágil”
Pontos 
importantes 
• Métricas 
são 
fundamentais 
• Padrões 
são 
necessários 
para 
automação 
• Mudança 
cultural 
organizacional 
é 
imprescíndivel 
• Plan 
Do 
Check 
Act 
• Cada 
equipe 
tem 
o 
seu 
tempo 
para 
amadurecer 
• Cada 
equipe 
é 
única, 
e 
cada 
so0ware 
também 
• Não 
desista! 
Vale 
a 
pena
Obrigado 
!!! 
Rodrigo.russo@walmart.com

Mais conteúdo relacionado

Mais procurados

Utilizando metodologias ágeis em uma empresa CMMI nível 5
Utilizando metodologias ágeis em uma empresa CMMI nível 5Utilizando metodologias ágeis em uma empresa CMMI nível 5
Utilizando metodologias ágeis em uma empresa CMMI nível 5Joao Paulo Coelho
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous deliveryMarco Valtas
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIAlefe Variani
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceGlobalcode
 
DevOps, NoOps...afinal que raios é isso?
DevOps, NoOps...afinal que raios é isso?DevOps, NoOps...afinal que raios é isso?
DevOps, NoOps...afinal que raios é isso?Thiago Ganzarolli
 
O que é DevOps? Introdução à abordagem pela IBM
O que é DevOps? Introdução à abordagem pela IBMO que é DevOps? Introdução à abordagem pela IBM
O que é DevOps? Introdução à abordagem pela IBMFelipe Freire
 
DevOps Apresentação Encontro Rational 2013
DevOps Apresentação Encontro Rational 2013DevOps Apresentação Encontro Rational 2013
DevOps Apresentação Encontro Rational 2013Felipe Freire
 

Mais procurados (8)

Utilizando metodologias ágeis em uma empresa CMMI nível 5
Utilizando metodologias ágeis em uma empresa CMMI nível 5Utilizando metodologias ágeis em uma empresa CMMI nível 5
Utilizando metodologias ágeis em uma empresa CMMI nível 5
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous delivery
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
 
Introdução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open SourceIntrodução a Application Life-cycle Management Open Source
Introdução a Application Life-cycle Management Open Source
 
DevOps, NoOps...afinal que raios é isso?
DevOps, NoOps...afinal que raios é isso?DevOps, NoOps...afinal que raios é isso?
DevOps, NoOps...afinal que raios é isso?
 
O que é DevOps? Introdução à abordagem pela IBM
O que é DevOps? Introdução à abordagem pela IBMO que é DevOps? Introdução à abordagem pela IBM
O que é DevOps? Introdução à abordagem pela IBM
 
DevOps Apresentação Encontro Rational 2013
DevOps Apresentação Encontro Rational 2013DevOps Apresentação Encontro Rational 2013
DevOps Apresentação Encontro Rational 2013
 

Destaque

Webinar Navita | Saiba Como Profissionalizar a Gestão de Dispositivos Móveis...
Webinar Navita |  Saiba Como Profissionalizar a Gestão de Dispositivos Móveis...Webinar Navita |  Saiba Como Profissionalizar a Gestão de Dispositivos Móveis...
Webinar Navita | Saiba Como Profissionalizar a Gestão de Dispositivos Móveis...Navita BR
 
Designing a Mobile Device Lab - XBOSoft Webinar
Designing a Mobile Device Lab - XBOSoft WebinarDesigning a Mobile Device Lab - XBOSoft Webinar
Designing a Mobile Device Lab - XBOSoft WebinarXBOSoft
 
Hassle-Free Continuous Integration with Real Device Testing
Hassle-Free Continuous Integration with Real Device TestingHassle-Free Continuous Integration with Real Device Testing
Hassle-Free Continuous Integration with Real Device TestingBitbar
 
Testing in a continuous delivery environment
Testing in a continuous delivery environmentTesting in a continuous delivery environment
Testing in a continuous delivery environmentStefan Verhoeff
 
CI/CD for mobile at HERE
CI/CD for mobile at HERECI/CD for mobile at HERE
CI/CD for mobile at HEREStefan Verhoeff
 
Best Practices for DevOps in Mobile App Testing
Best Practices for DevOps in Mobile App TestingBest Practices for DevOps in Mobile App Testing
Best Practices for DevOps in Mobile App TestingBitbar
 

Destaque (7)

Webinar Navita | Saiba Como Profissionalizar a Gestão de Dispositivos Móveis...
Webinar Navita |  Saiba Como Profissionalizar a Gestão de Dispositivos Móveis...Webinar Navita |  Saiba Como Profissionalizar a Gestão de Dispositivos Móveis...
Webinar Navita | Saiba Como Profissionalizar a Gestão de Dispositivos Móveis...
 
Designing a Mobile Device Lab - XBOSoft Webinar
Designing a Mobile Device Lab - XBOSoft WebinarDesigning a Mobile Device Lab - XBOSoft Webinar
Designing a Mobile Device Lab - XBOSoft Webinar
 
Hassle-Free Continuous Integration with Real Device Testing
Hassle-Free Continuous Integration with Real Device TestingHassle-Free Continuous Integration with Real Device Testing
Hassle-Free Continuous Integration with Real Device Testing
 
Testing in a continuous delivery environment
Testing in a continuous delivery environmentTesting in a continuous delivery environment
Testing in a continuous delivery environment
 
CI/CD for mobile at HERE
CI/CD for mobile at HERECI/CD for mobile at HERE
CI/CD for mobile at HERE
 
Best Practices for DevOps in Mobile App Testing
Best Practices for DevOps in Mobile App TestingBest Practices for DevOps in Mobile App Testing
Best Practices for DevOps in Mobile App Testing
 
Build Features, Not Apps
Build Features, Not AppsBuild Features, Not Apps
Build Features, Not Apps
 

Semelhante a Case Walmart.com: a prática da entrega de software com rapidez e qualidade

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
 
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horasSamanta Cicilia
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAmazon Web Services LATAM
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsLeonardo Comelli
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSAmazon Web Services LATAM
 
[DevOps Carioca] Continuous Delivery
[DevOps Carioca]  Continuous Delivery[DevOps Carioca]  Continuous Delivery
[DevOps Carioca] Continuous DeliverySamanta Cicilia
 
Apresentação "O CMS Seguro"
Apresentação "O CMS Seguro"Apresentação "O CMS Seguro"
Apresentação "O CMS Seguro"ISCTE
 
QConSP 2014 - Continuous Delivery - Part 05 - Testes
QConSP 2014 - Continuous Delivery - Part 05 - TestesQConSP 2014 - Continuous Delivery - Part 05 - Testes
QConSP 2014 - Continuous Delivery - Part 05 - TestesRodrigo Russo
 
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de ValorSamanta Cicilia
 
Levando seu SCM à outro nível com Feature Flags
Levando seu SCM à outro nível com Feature FlagsLevando seu SCM à outro nível com Feature Flags
Levando seu SCM à outro nível com Feature FlagsAndré Paulovich
 
TDC2016POA | Trilha Web - Front-end that scales
TDC2016POA | Trilha Web - Front-end that scalesTDC2016POA | Trilha Web - Front-end that scales
TDC2016POA | Trilha Web - Front-end that scalestdc-globalcode
 
Android Dev Conference 2017 - Automação de Testes na Cloud
Android Dev Conference 2017 - Automação de Testes na CloudAndroid Dev Conference 2017 - Automação de Testes na Cloud
Android Dev Conference 2017 - Automação de Testes na CloudiMasters
 
[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery[Lady talks]Continuous Delivery
[Lady talks]Continuous DeliverySamanta Cicilia
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoAlvaro Viebrantz
 
Comunidade Ágil Netshoes - O que tem dado certo no time de Integração
Comunidade Ágil Netshoes - O que tem dado certo no time de IntegraçãoComunidade Ágil Netshoes - O que tem dado certo no time de Integração
Comunidade Ágil Netshoes - O que tem dado certo no time de IntegraçãoDenis Santos
 

Semelhante a Case Walmart.com: a prática da entrega de software com rapidez e qualidade (20)

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
 
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOps
 
Webinar DevOps - Encontros Ágeis
Webinar DevOps - Encontros ÁgeisWebinar DevOps - Encontros Ágeis
Webinar DevOps - Encontros Ágeis
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWS
 
DevOps
DevOpsDevOps
DevOps
 
[DevOps Carioca] Continuous Delivery
[DevOps Carioca]  Continuous Delivery[DevOps Carioca]  Continuous Delivery
[DevOps Carioca] Continuous Delivery
 
Apresentação "O CMS Seguro"
Apresentação "O CMS Seguro"Apresentação "O CMS Seguro"
Apresentação "O CMS Seguro"
 
QConSP 2014 - Continuous Delivery - Part 05 - Testes
QConSP 2014 - Continuous Delivery - Part 05 - TestesQConSP 2014 - Continuous Delivery - Part 05 - Testes
QConSP 2014 - Continuous Delivery - Part 05 - Testes
 
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
 
Precisa testar? - Parte 1
Precisa testar? - Parte 1Precisa testar? - Parte 1
Precisa testar? - Parte 1
 
SAPO Session: Continuous Integration
SAPO Session: Continuous IntegrationSAPO Session: Continuous Integration
SAPO Session: Continuous Integration
 
Levando seu SCM à outro nível com Feature Flags
Levando seu SCM à outro nível com Feature FlagsLevando seu SCM à outro nível com Feature Flags
Levando seu SCM à outro nível com Feature Flags
 
TDC2016POA | Trilha Web - Front-end that scales
TDC2016POA | Trilha Web - Front-end that scalesTDC2016POA | Trilha Web - Front-end that scales
TDC2016POA | Trilha Web - Front-end that scales
 
Android Dev Conference 2017 - Automação de Testes na Cloud
Android Dev Conference 2017 - Automação de Testes na CloudAndroid Dev Conference 2017 - Automação de Testes na Cloud
Android Dev Conference 2017 - Automação de Testes na Cloud
 
[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
Comunidade Ágil Netshoes - O que tem dado certo no time de Integração
Comunidade Ágil Netshoes - O que tem dado certo no time de IntegraçãoComunidade Ágil Netshoes - O que tem dado certo no time de Integração
Comunidade Ágil Netshoes - O que tem dado certo no time de Integração
 

Mais de Rodrigo Russo

QConSP 2014 - Continuous Delivery - Part 06 - Conclusão
QConSP 2014 - Continuous Delivery - Part 06 - ConclusãoQConSP 2014 - Continuous Delivery - Part 06 - Conclusão
QConSP 2014 - Continuous Delivery - Part 06 - ConclusãoRodrigo Russo
 
QConSP 2014 - Continuous Delivery - Part 05b - Deployment
QConSP 2014 - Continuous Delivery - Part 05b - DeploymentQConSP 2014 - Continuous Delivery - Part 05b - Deployment
QConSP 2014 - Continuous Delivery - Part 05b - DeploymentRodrigo Russo
 
QConSP 2014 - Continuous Delivery - Part 05a - Data Migration
QConSP 2014 - Continuous Delivery - Part 05a - Data MigrationQConSP 2014 - Continuous Delivery - Part 05a - Data Migration
QConSP 2014 - Continuous Delivery - Part 05a - Data MigrationRodrigo Russo
 
QConSP 2014 - Continuous Delivery - Part 04 - Agile
QConSP 2014 - Continuous Delivery - Part 04 - AgileQConSP 2014 - Continuous Delivery - Part 04 - Agile
QConSP 2014 - Continuous Delivery - Part 04 - AgileRodrigo Russo
 
QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous IntegrationQConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous IntegrationRodrigo Russo
 
QConSP 2014 - Continuous Delivery - Part 01 - Introdução
QConSP 2014 - Continuous Delivery - Part 01 - IntroduçãoQConSP 2014 - Continuous Delivery - Part 01 - Introdução
QConSP 2014 - Continuous Delivery - Part 01 - IntroduçãoRodrigo Russo
 

Mais de Rodrigo Russo (6)

QConSP 2014 - Continuous Delivery - Part 06 - Conclusão
QConSP 2014 - Continuous Delivery - Part 06 - ConclusãoQConSP 2014 - Continuous Delivery - Part 06 - Conclusão
QConSP 2014 - Continuous Delivery - Part 06 - Conclusão
 
QConSP 2014 - Continuous Delivery - Part 05b - Deployment
QConSP 2014 - Continuous Delivery - Part 05b - DeploymentQConSP 2014 - Continuous Delivery - Part 05b - Deployment
QConSP 2014 - Continuous Delivery - Part 05b - Deployment
 
QConSP 2014 - Continuous Delivery - Part 05a - Data Migration
QConSP 2014 - Continuous Delivery - Part 05a - Data MigrationQConSP 2014 - Continuous Delivery - Part 05a - Data Migration
QConSP 2014 - Continuous Delivery - Part 05a - Data Migration
 
QConSP 2014 - Continuous Delivery - Part 04 - Agile
QConSP 2014 - Continuous Delivery - Part 04 - AgileQConSP 2014 - Continuous Delivery - Part 04 - Agile
QConSP 2014 - Continuous Delivery - Part 04 - Agile
 
QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous IntegrationQConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
 
QConSP 2014 - Continuous Delivery - Part 01 - Introdução
QConSP 2014 - Continuous Delivery - Part 01 - IntroduçãoQConSP 2014 - Continuous Delivery - Part 01 - Introdução
QConSP 2014 - Continuous Delivery - Part 01 - Introdução
 

Case Walmart.com: a prática da entrega de software com rapidez e qualidade

  • 1. A prá&ca de entrega de so0ware com rapidez e qualidade
  • 2. Rodrigo Russo @zrusso Walmart.com iG Itautec Cetelem … Coordenador de Con&nuous Delivery
  • 3. #1 Walmart pela Fortune • Ranking Fortune Global 500 elegeu as maiores companhias em lucro e faturamento 1. Walmart 2. Royal Dutch Shell 3. Sinopec Group 4. China Na&onal Petroleum 5. Exxon Mobil hUp://exame.abril.com.br/negocios/no&cias/revista-­‐fortune-­‐aponta-­‐wal-­‐mart-­‐como-­‐maior-­‐empresa-­‐do-­‐mundo
  • 4.
  • 6. Plataforma de fornecedor hUp://judlaw.files.wordpress.com/2013/12/mesa-­‐ect-­‐368.jpg
  • 11. … Fornecedor A Fornecedor B TFS 2 Devs Code review Manutenção Pequenas melhorias Máquina do build Master • Merge do código • Versionamento • Empacotamento
  • 12.
  • 14. E mesmo assim… Venda… Venda… Venda… hUp://www.insidemysteryshopping.com/assets/happy%20shopper%202.jpg
  • 15.
  • 16.
  • 19. Novas dire&vas • Data center próprio • Equipe de infraestrutura (~4) • Equipe de System Engineers (1) • Equipe de InfoSec (1) • Equipe de desenvolvimento (~10) • Agilista (1)
  • 20. Nova equipe • Foco na entrega • Equipe enxuta • Autonomia • Automação • Inovação • Novas tecnologias
  • 21. Automação e novas tecnologias Push Pull … Package Repository apt-­‐get yum
  • 22. Novo sistema no ar em poucas semanas • +90% de cobertura de testes unitários • Testes funcionais automa&zados • TDD • Pair programming • Infraestrutura como código • Build automa&zado • Down&me zero durante deploy • Possibilidade de realizar N deploys a qualquer momento • Agile • Dev + Ops
  • 23.
  • 26.
  • 27.
  • 28.
  • 30. • A equipe define a melhor tecnologia para o problema – Jenkins – Build – Deploy – Testes – …. • Não abra mão da qualidade
  • 32.
  • 33. Não foram só pessoas que aumentaram
  • 34. Vários jenkins espalhados Vários padrões Perda de foco em novas features hUp://2.bp.blogspot.com/-­‐cN416AOoo_E/Tu3t5a97IEI/AAAAAAAAAr4/qXo3ez1WytY/s1600/child%2527s+progress.jpg Apenas Sys. Engs &nham acesso a receita do chef Devs não sen&am que a código de infra é parte do fluxo Deploy após vários sprints Grandes entregas com potenciais de rollback “Pacote está pronto, só falta instalar” Entregas demoradas
  • 35. Agile InfoSec Devs Ops hUp://www.museumsyndicate.com/images/6/56154.jpg
  • 36. “Devops é uma cultura” hUp://xdesktopwallpapers.com/wp-­‐content/uploads/2012/04/Morning%20Scene%20In%20Green%20Fields.jpg
  • 38.
  • 39. Desenvolver ferramentas para facilitar a prá*ca de Con*nuous Delivery e promover as prá&cas de engenharia de so9ware ágil para reduzir o lead &me, reduzir o risco e aumentar a qualidade dos so0wares desenvolvidos.
  • 40.
  • 41. Mapa das equipes x Prá&cas de engenharia
  • 42. Build automa&zado Testes unitários automa&zado Testes de desempenho 20 equipes Script de build Servidor de CI Build quebrando em função de testes que falham Deploy automa&zado Teste funcional automa&zado Ambientes Mapa das equipes x Prá&cas de engenharia
  • 43.
  • 45. Cultura Engenharia de Releases Ferramentas hUp://lendio.com/cms/wp-­‐content/uploads/2011/08/ThreePillars.png
  • 46. “Culture is the way you think, act, and interact.” • Pair programming • Testes, testes, testes e mais testes • TDD • Con&nuous Integra&on (CI) • “Every build is a poten&al version” (kill snapshot) • Dev + Ops donos do código de infraestrutura
  • 47.
  • 48. Works on my machine
  • 50. Con&nuous Integra&on “Con&nuous Integra&on (CI) is the prac&ce, in so0ware engineering, of merging all developer working copies with a shared mainline several &mes a day.”
  • 51. Branching Strategy • Centralized workflow • Forking workflow • Feature branch workflow hUp://th09.deviantart.net/fs70/PRE/i/2009/352/8/d/snibston_train_line___by_Ph0t0_girl.jpg
  • 53. Testes Automa&zados • Testes Automa&zados • Execução dos testes automa&zados no jenkins • O resultado dos testes são decisivos • O resultado dos testes devem ser visíveis a todos
  • 54. Feedback • E-­‐mail • Build Monitor plugin • Slack no&fica&on • … hUp://bamboo-­‐river.com/wp-­‐content/uploads/2011/02/feedback1.jpg
  • 55. “The whole point of con&nuous delivery is that every check-­‐in creates a poten&al release candidate. “ Kill Snapshot Jez Humble • Testes realizados com pacote “-­‐snapshot” não eram os mesmos que eram promovidos para produção. • Testes realizados 2x. Pacote “-­‐snapshot” e pacote released • Ausência de tag no git com a versão do pacote fechada • Falta de rastreabilidade no código
  • 56. StepUp Marcelo Manzan StepUp is an u&lity that helps other projects to manage your versioning increase. • Bene|cios hUps://github.com/kawamanza/step-­‐up – Seman&c Versioning (hUp://semver.org/) – Changelog! e versionado – Não é necessário lembrar o que foi feito para definir um número de versão – Menos preocupação para o desenvolvedor “Um grupo de commits é uma potencial versão para produção”
  • 57. > git commit –m “xyz” > git commit –m “abc” > git commit –m “e” > stepup notes add -­‐-­‐sec&on bugfixes -­‐m "support for old installa&ons” > git push 1.0.0 Bugfixes: -­‐ support for old installa&ons
  • 58. > git commit –m “xyz” > git commit –m “abc” > git commit –m “e” > stepup notes add -­‐-­‐sec&on bugfixes -­‐m "support for old installa&ons” > git push Pull > stepup version create QA Package Repository App App App App App 1.0.0 1.0.1 Bugfixes: -­‐ support for old installa&ons
  • 59. > git commit –m “xyz” > git commit –m “abc” > git commit –m “e” > stepup notes add -­‐-­‐sec&on bugfixes -­‐m "support for old installa&ons” > git push Pull > stepup version create QA Package Repository App App App App App STG Package Repository App App App App App Promote 1.0.0 1.0.1 Bugfixes: -­‐ support for old installa&ons
  • 60. > git commit –m “xyz” > git commit –m “abc” > git commit –m “e” > stepup notes add -­‐-­‐sec&on bugfixes -­‐m "support for old installa&ons” > git push Pull > stepup version create QA Package Repository App App App App App STG Package Repository App App App App App PROD Package Repository App App App App App Promote Promote 1.0.0 1.0.1 Bugfixes: -­‐ support for old installa&ons
  • 61. Outras mudanças culturais • Feature toggle • Branch by abstrac&on • Teste é da equipe, não do QA • Deploy frequentes • Pacotes menores • Deploy não deve ser uma cerimônia • Rollback não é a morte! • "A vida é muito curta para fazer deploy de madrugada"
  • 63. BACON Build Applica&on CON&nuously • Plataforma para agilizar a entrega de so0ware • Independente de linguagem e tecnologia • Suporte a novas tecnologias rapidamente • Serviço core para equipes (monitoração, backup, 24hx7, …) • Suporte a u&lização
  • 64. Build Sta&c Analysis Security Sta&c Analysis Tagging Package Promote / Deploy Smoke Tests Func&onal Tests Security dynamic Analysis Performance testes Geminabox
  • 65. Ecossistema Logging & Metrics Test Environment Orchestra&on Build Data Repo SCM Ar&fact Repo Build Provision Deploy Test Release
  • 66. Organização das equipes de devtools, qa, syseng, infosec,… ITGov System Engineers/ System Administrators DevTools Equipes de desenvolvimento Quality Assurance Agile Process InfoSec
  • 67. Deploy + + • Entender o fluxo • Criamos uma ferramenta interna para fazer a “cola” entre jenkins e chef • Primeiro este passo, para então u&lizar as ferramentas corretas
  • 68. Deploy + + • Blue-­‐green • CanaryRelease
  • 69. Garan&a da qualidade • Automação • Autonomia • BDD • Testes automa&zados • Testes exploratórios • Comunicação • Critérios de aceite
  • 70. “You write you own” Neil Ashe, President and CEO at Walmart Global eCommerce
  • 71.
  • 72. 2013
  • 73.
  • 74.
  • 75. DevTools acelera o amadurecimento da equipe
  • 76. Setembro/2014 • +250 TI • +40 produtos • +24 equipes internas + 10 externas • + 1400 jobs • Setembro: – 200 deploys
  • 77. Métricas • Sonar • Projeto interno para visualizar métricas por projeto de so0ware • Score por projeto de so0ware • Score é decisório para “Mudança ágil”
  • 78. Pontos importantes • Métricas são fundamentais • Padrões são necessários para automação • Mudança cultural organizacional é imprescíndivel • Plan Do Check Act • Cada equipe tem o seu tempo para amadurecer • Cada equipe é única, e cada so0ware também • Não desista! Vale a pena