Top Banner
Webstore Reloaded A arquitetura do walmart.com.br remodelada
45

Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Dec 11, 2018

Download

Documents

dangnhi
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Webstore Reloaded A arquitetura do walmart.com.br

remodelada

Page 2: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Agenda

§ Mudança de Filosofia. § Missão § Problemas § Premissas § Estratégia § Sacadas § Solução § Eventos e Lições § Resultados e Rumos Futuros

Page 3: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Mudança de Filosofia

Page 4: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Missão

“Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Page 5: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”
Page 6: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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.

Page 7: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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.

Page 8: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”
Page 9: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Premissas

§ Picos § Usuários Simultâneos: 300K § Consumo de Rede: 1Gb.

§ Disponibilidade § 99,9%

§ Tempo de resposta § T < 500 Milisegundos.

§ Escalabilidade § Horizontal § Near Linear

Page 10: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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.

Page 11: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”
Page 12: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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.

Page 13: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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.

Page 14: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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.

Page 15: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”
Page 16: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Overview

Akamai Load ���Balancer

Varnish

.Net

SOLR

DB

Render Services

Redis

Page 17: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Cache

Browser

Akamai

Varnish

Redis

Page 18: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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.

Page 19: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Cache - Akamai

§ Prós: § CDN § Diminui o tráfego à nossa infra.

§ Contras: § Lento. § Às vezes, vai pelo exterior. § Menor controle do cache.

Page 20: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Cache - Varnish

§ Maior controle do cache. § Desonera a renderização. § Cache de fragmentos da página (ESIs). § Cada fragmento tem um TTL específico.

Page 21: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Cache - Varnish ttl: 1d

ttl: 1h

ttl: 5m

ttl: 1m

Page 22: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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.

Page 23: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Cache - Redis

Page 24: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Renderização - Overview

Controlador

Orquestração

Renderização

Cache

Data Fetcher

Template Engine

Repositório Templates

Page 25: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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.

Page 26: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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

Page 27: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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

Page 28: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Renderização - Fluxo

{ "sku": { ... }, "offers": { ... }, "buy_button": { ... } }

Max-age: 60s

Page 29: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Serviços

REST Controller

Web Service

Business Object

Data Object Repository

Import Job

Domain Model

Page 30: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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.

Page 31: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”
Page 32: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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.

Page 33: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Eventos

§ Segunda Promoção: Crash! § Too many open files! OMG § Teste de carga inadequado.

Page 34: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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

Page 35: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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.

Page 36: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”
Page 37: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Resultados

§ Renderização: Página de Produto

Antiga > 2.4s

Nova > 143ms

Page 38: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Resultados

§ Renderização: Produtos Sustentáveis

Antiga > 5s

Nova 250ms

Page 39: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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.

Page 40: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Resultados

Page 41: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Resultados

Page 42: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

Resultados

Page 43: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

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

Page 44: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”
Page 45: Webstore Reloaded - qconsp.com · Missão “Criar uma nova plataforma de delivery para as páginas do Walmart.com.br.”

That’s all folks!

§ @jwalendowsky § [email protected] § jwalendowsky.blogspot.com.br