SlideShare uma empresa Scribd logo
Webstore ReloadedWebstore Reloaded
A arquitetura do walmart.com.brA arquitetura do walmart.com.br
remodeladaremodelada
Agenda
Mudança de Filosofia.
Missão
Problemas
Premissas
Estratégia
Sacadas
Solução
Eventos e Lições
Resultados e Rumos Futuros
Mudança de Filosofia
Missão
“Criar uma nova plataforma
de delivery para as páginas
do Walmart.com.br.”
Qcon 2013 - Walmart Frontend Solution using Node.js
Problemas
Tempo de resposta muito alto (segundos).
Experiência de usuário comprometida.
Evasão de usuários.
Ciclo Vicioso: + lento = + reloads = + carga.
Baixa escalabilidade.
Aplicação “aguenta lenta”.
Imprevisibilidade.
Problemas
Baixa reutilização.
Difícil de criar novas plataformas.
Código difícil de manter.
Alto consumo de recursos.
SOLR usado como search engine e cache.
Banco de dados com picos de 100% de utilização.
Pouco controle do web cache.
Difícil de expurgar objetos.
Difícil de mudar tempo de vida.
Qcon 2013 - Walmart Frontend Solution using Node.js
Premissas
Picos
Usuários Simultâneos: 300K
Consumo de Rede: 1Gb.
Disponibilidade
99,9%
Tempo de resposta
T < 500 Milisegundos.
Escalabilidade
Horizontal
Near Linear
Premissas
Utilização de Recursos
Desonerar Banco de Dados.
Desonerar SOLR.
Diminuir número de servidores.
Código
Facilidade de desenvolver.
Alto grau de reutilização.
Usar soluções Open Source.
Qcon 2013 - Walmart Frontend Solution using Node.js
Estratégia
Objetivo 1: Página de Detalhe de Produto.
Maioria dos serviços usados pelo catálogo.
• Preço, parcelamento, disponibilidade, etc.
Conseguimos validar toda a solução.
Análise de cada componente.
• De onde recuperamos essas informações?
• Quanto tempo elas podem ficar em cache?
Objetivos seguintes: Demais Páginas.
Sacadas
Fazer o básico: expor tudo como serviços.
Reutilização e “RESTificação” ao extremo.
Business as a Service.
Render as a Service.
Search as a Service.
Criar modelo de domínio independente.
Anteparo às mudanças.
Jobs de alimentação do modelo.
Idas ao banco de dados como exceção.
Sacadas
Caches mais inteligentes.
Mais níveis de cache.
Controles mais granulares.
Inteligência nos tempos de vida.
Melhor Distribuição das Tarefas.
Dados.
Negócio.
Renderização.
Qcon 2013 - Walmart Frontend Solution using Node.js
Overview
Cache
Cache - Browser
Quando possível, o browser resolve localmente.
Response Headers (max-age, etc.).
Recursos estáticos com TTL alto.
Melhor se for infinito.
Requisições Ajax com TTL mais baixo.
Diminui custos com CDN.
Cache - Akamai
Prós:
CDN
Diminui o tráfego à nossa infra.
Contras:
Lento.
Às vezes, vai pelo exterior.
Menor controle do cache.
Cache - Varnish
Maior controle do cache.
Desonera a renderização.
Cache de fragmentos da página (ESIs).
Cada fragmento tem um TTL específico.
Cache - Varnish ttl: 1d
ttl: 1h
ttl: 5m
ttl: 1m
Cache - Redis
Utilização
Cache dos resultados das chamadas aos serviços.
Modelo de dados desacoplado.
Desonera o banco de dados.
Por quê?
Armazenamento em memória.
Aguenta muita porrada.
Tempo de resposta muito baixo.
Pode persistir.
Independe das linguagens usadas.
Cache - Redis
Renderização - Overview
Renderização - Template Engine
Javascript
Linguagem natural dos webdevs.
Executada no cliente e no servidor.
Muito flexível.
Dust JS
http://linkedin.github.io/dustjs/
Alta performance.
Herança de templates, partials, subtemplates, etc.
Operações assíncronas.
Streaming = baixo consumo de memória.
Fácil customização.
Renderização - Nodejs
Javascript server side.
Orientado a eventos.
Alta performance.
Baixo consumo de recursos.
Comunidade forte (NPM).
Vários pacotes:
ExpressJS, Redis, SOLR, Socket I.O
Renderização - Fluxo
 /render/sku,offers,buy_button/11/ecommerce__sku_price_buy
Projeções
sku
offers
buy_button
Id
11
Template
ecommerce/sku_price_buy
Renderização - Fluxo
{
"sku": {
...
},
"offers": {
...
},
"buy_button": {
...
}
} Max-age:
60s
Serviços
Serviços - Tecnologias
Spring on Jetty.
Security, Data, Scheduler, Jedis.
Resteasy.
Exposição dos serviços REST.
Documentação com Wsdocs ou Swagger.
REST e Web Socket Services
In-memory caches.
Qcon 2013 - Walmart Frontend Solution using Node.js
Eventos
Primeiro Release: Rollback!
ESIs em branco.
keep-alive no ExpresJs.
Segundo Release: Memory leak!
Node Cluster como paleativo.
NodeTime para ajudar.
Appender syslog no NodeJS.
Primeira Promoção: Crash!
TTL infinito para objetos inaquedos.
Redis irresponsivo.
Eventos
Segunda Promoção: Crash!
Too many open files! OMG
Teste de carga inadequado.
Lições Aprendidas
Feature rollout.
Replicação de Tráfego + Teste Longo.
Memory leaks.
Condições de produção.
NodeJS
Cenários de muitas chamadas remotas.
Orquestrador, API gateway.
Pouco processamento.
Muita flexibilidade.
Javascript rules! :D
Lições Aprendidas
Twemproxy + Redis
Espalhar as chaves entre vários servidores.
Diminuir riscos ao perder um servidor.
Web Socket Services
Throughput mais de 2X maior!
Backoffice
Fundamental para alimentar o modelo independente.
Qcon 2013 - Walmart Frontend Solution using Node.js
Resultados
Renderização: Página de Produto
Antiga
> 2.4s
Nova
> 143ms
Resultados
Renderização: Produtos Sustentáveis
Antiga
> 5s
Nova
250ms
Resultados
Teste de Carga
Blazemeter.com
Até 45.000 usuários simultâneos.
Sem passar pela Akamai.
Página de departamento.
Páginas dos produtos.
10.000 possibilidades para cálculo de preço.
15 segundos de thinking time.
Todos os cookies da requisição.
Resultados
Resultados
Resultados
O que vem por aí…
Controle total do cache.
API Server.
Web Socket Services.
In-Memory Caches.
Infinispan.
Big Memory.
Client Side Render.
Muitas surpresas… :D
Qcon 2013 - Walmart Frontend Solution using Node.js
That’s all folks!
@jwalendowsky
jorge.filho@wal-mart.com
jwalendowsky.blogspot.com.br

Mais conteúdo relacionado

PDF
Treinamento de Performance and tuning
PDF
Otimizando e reduzindo custos na Nuvem da AWS
PDF
De 1 a 1.000.00 de usuários
PDF
Curso de Performance and Tuning - Linux
PDF
Aws sao paulo summit 2015 elasti cache avancado
PPTX
Estudo de caso Ricardo Eletro
PDF
Desmistificando Otimização de JVM
PDF
Vamos conversar sobre cache
Treinamento de Performance and tuning
Otimizando e reduzindo custos na Nuvem da AWS
De 1 a 1.000.00 de usuários
Curso de Performance and Tuning - Linux
Aws sao paulo summit 2015 elasti cache avancado
Estudo de caso Ricardo Eletro
Desmistificando Otimização de JVM
Vamos conversar sobre cache

Mais procurados (20)

PDF
Rails nas Nuvens
PPTX
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
PDF
Análise de Performance do MySQL e MariaDB
ODP
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...
PPTX
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
PDF
Aula 4 - Introdução a aws
PPTX
Deploy automático em projeto PHP - PHPSPIMA 2016
PDF
Whole Site Delivery with Amazon CloudFront
PDF
HTTP, Requisição e Resposta
PDF
Introducao ao Amazon Redshift
ODP
Aula 6 - EC2, ELB, Auto Scaling, Cloud Watch
PDF
Apresentação do Curso
PPTX
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...
PDF
Web seminario varnish
PDF
Introduction to Cloud Computing
PPT
Capacity planning para ambiente distribuído, por Marcelo Otto
PPT
Talk at QConSP
PPTX
Performance Web com ASP.NET MVC
PDF
Precisamos de um barco maior introdução ao dimensionamento de aplicações
PDF
Fisl10 MySql na Globo.com por Camila Dias
Rails nas Nuvens
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
Análise de Performance do MySQL e MariaDB
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
Aula 4 - Introdução a aws
Deploy automático em projeto PHP - PHPSPIMA 2016
Whole Site Delivery with Amazon CloudFront
HTTP, Requisição e Resposta
Introducao ao Amazon Redshift
Aula 6 - EC2, ELB, Auto Scaling, Cloud Watch
Apresentação do Curso
1º Meetup Zabbix Meetup do Recife: Danilo Barros - Zabbix dicas e truques par...
Web seminario varnish
Introduction to Cloud Computing
Capacity planning para ambiente distribuído, por Marcelo Otto
Talk at QConSP
Performance Web com ASP.NET MVC
Precisamos de um barco maior introdução ao dimensionamento de aplicações
Fisl10 MySql na Globo.com por Camila Dias
Anúncio

Destaque (20)

PPT
中興招生03
PPT
井巷工程 第一章 岩石性质极其工程分级
ODP
Open Calc: Diagrama de barres
PPT
10 oef potentiaal reeks 2
PPT
22 kernfysica1
PPT
ппп3 курсова
PPT
Powerpointgrupo8
PDF
зөвлөгөө
PDF
κειμενο απο συνεταιριστικο εγχειρίδιο
PPTX
Detecteren en tracken van bacteriële cellen in time lapse
DOC
Sewa mobil di bali, sewa mobil murah di bali, sewa mobil avanza di bali,
PDF
Yacht Onderzoek "Op weg naar wendbaarheid" Thema: Talent
PPT
ประวัติส่วนตัว
PPTX
цахим хичээл
PPT
Trabajo de geología2 corregido
PPT
Guida al computer - Lezione 4 - I lettori parte 2
PDF
krut lup kulturell Gbg Örgryte
PPT
Graphic
PPT
Recife gp11-fundamentos-recicla vida
中興招生03
井巷工程 第一章 岩石性质极其工程分级
Open Calc: Diagrama de barres
10 oef potentiaal reeks 2
22 kernfysica1
ппп3 курсова
Powerpointgrupo8
зөвлөгөө
κειμενο απο συνεταιριστικο εγχειρίδιο
Detecteren en tracken van bacteriële cellen in time lapse
Sewa mobil di bali, sewa mobil murah di bali, sewa mobil avanza di bali,
Yacht Onderzoek "Op weg naar wendbaarheid" Thema: Talent
ประวัติส่วนตัว
цахим хичээл
Trabajo de geología2 corregido
Guida al computer - Lezione 4 - I lettori parte 2
krut lup kulturell Gbg Örgryte
Graphic
Recife gp11-fundamentos-recicla vida
Anúncio

Semelhante a Qcon 2013 - Walmart Frontend Solution using Node.js (20)

PPTX
A nova geração da arquitetura web para a era da nuvem
PDF
Front end architecture
PDF
Edge middleware acelerando o ecommerce.pdf
PPTX
Introdução ao desenvolvimento da web.pptx
KEY
Best pratices para desenvolvimento mobile
PPTX
5505 otimizando frontends
PDF
Afinal, o que são Single Page Applications
PDF
In Wordpress we trust
PDF
Arquitetura de aplicações Web 2.0 em Java
PDF
Service Oriented Front-End Architecture
PPTX
Matando web forms e modernizando um grande varejista
PPTX
Projeto Web - Aula 1 - Fundamentos do Dev WEB.pptx
PPTX
Apresentação TCC - GameHouse [Casarotti,Melega,Dias,Lavagnoli]
PPTX
Formatacao De Websites Comerciais
KEY
Frontend (RailsMG)
PDF
Arquitetura Web Desacoplada - FCI/Mackenzie
ODP
Escalabilidade em Aplicações - Fisl13
PDF
Qualidade e performance de sistemas 2.0
PDF
O que move a web atualmente?
A nova geração da arquitetura web para a era da nuvem
Front end architecture
Edge middleware acelerando o ecommerce.pdf
Introdução ao desenvolvimento da web.pptx
Best pratices para desenvolvimento mobile
5505 otimizando frontends
Afinal, o que são Single Page Applications
In Wordpress we trust
Arquitetura de aplicações Web 2.0 em Java
Service Oriented Front-End Architecture
Matando web forms e modernizando um grande varejista
Projeto Web - Aula 1 - Fundamentos do Dev WEB.pptx
Apresentação TCC - GameHouse [Casarotti,Melega,Dias,Lavagnoli]
Formatacao De Websites Comerciais
Frontend (RailsMG)
Arquitetura Web Desacoplada - FCI/Mackenzie
Escalabilidade em Aplicações - Fisl13
Qualidade e performance de sistemas 2.0
O que move a web atualmente?

Último (7)

PPTX
Mapeamento de Objeto para Tabela Relacional
PDF
Evolução em código: algoritmos genéticos com PHP
PPTX
Curso de Windows 11 resumido na prática.pptx
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
PDF
Dos requisitos ao código: como criar código rastreável em PHP
PDF
apresentacao introducao computacao ead.pdf
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
Mapeamento de Objeto para Tabela Relacional
Evolução em código: algoritmos genéticos com PHP
Curso de Windows 11 resumido na prática.pptx
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Dos requisitos ao código: como criar código rastreável em PHP
apresentacao introducao computacao ead.pdf
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO

Qcon 2013 - Walmart Frontend Solution using Node.js