Aceleracao+conteudo+dinamico

92
© 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc. Aceleração de Conteúdo Dinâmico: Suas Aplicações Web mais Rápidas com Amazon CloudFront e Amazon Route 53 Eduardo Horai, Manager Solutions Architecture 27 Maio, 2014

description

Apresentações do AWS Summit Sao Paulo 2014. Baixe o conteúdo preparado por nossos especialistas para auxiliá-lo na jornada para a nuvem.

Transcript of Aceleracao+conteudo+dinamico

Page 1: Aceleracao+conteudo+dinamico

© 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.

Aceleração de Conteúdo Dinâmico: Suas Aplicações Web mais Rápidas com Amazon CloudFront e Amazon Route 53

Eduardo Horai, Manager Solutions Architecture 27 Maio, 2014

Page 2: Aceleracao+conteudo+dinamico

Fatores fundamentais Qualquer aplicação WEB tem que possuir: •  Segurança forte •  Alta disponibilidade •  Alta performance

Page 3: Aceleracao+conteudo+dinamico

Por que disponibilidade importa?

•  Aplicação indisponível à perda de 100% da receita

•  Impacto na lealdade dos clientes e imagem da empresa

Page 4: Aceleracao+conteudo+dinamico

Como AWS ajuda? ü Amazon Route 53: verificação de saúde dos

servidores web de origem com failover automático

ü Amazon CloudFront: reduzir a carga na origem

ü Amazon CloudFront: páginas de erros customizadas

ü Amazon CloudFront: serve conteúdo cacheado se a origem estiver indisponível

Page 5: Aceleracao+conteudo+dinamico

Por que performance importa? •  Performance se transforma em…

•  Mais Page Views •  Melhor experiência do usuário •  Maior taxa de conversão

Page 6: Aceleracao+conteudo+dinamico

Por que performance importa?

Page 7: Aceleracao+conteudo+dinamico

Por que performance importa?

Muito tempo e dinheiro é gasto melhorando a infraestrutura de backend

Page 8: Aceleracao+conteudo+dinamico

Por que performance importa? 80% da latência percebida pelo usuário é originária do front-end

Page 9: Aceleracao+conteudo+dinamico

Como melhorar a performance? Aplicação Web tem …

•  Conteúdo estático ou reusável

•  TTLs altos •  TTLs baixos (conteúdo customizado)

•  Conteúdo dinâmico ou único •  TTL zero

Page 10: Aceleracao+conteudo+dinamico

Conteúdo estático ou reusável

Pode ser cacheado (TTLs altos ou baixos)

Page 11: Aceleracao+conteudo+dinamico

Arquitetura típica

Page 12: Aceleracao+conteudo+dinamico

Conteúdo dinâmico ou único

Não pode ser cacheado – MAS afeta 100% dos visitantes!

Page 13: Aceleracao+conteudo+dinamico

Por que não…?

Page 14: Aceleracao+conteudo+dinamico

Como Amazon CloudFront ajuda? ü Otimizações TCP/IP no caminho da rede

ü Keep-Alive para reduzir RTT ü Terminação SSL próxima dos visitantes

ü POST/PUT otimizado ü Roteamento baseado em latência ü Preço igual ao conteúdo estático!

Page 15: Aceleracao+conteudo+dinamico
Page 16: Aceleracao+conteudo+dinamico

Estático ou Reusável Conteúdo que não se altera em um determinado

período de tempo

t0 t1

Page 17: Aceleracao+conteudo+dinamico

Dinâmico OU Único Conteúdo que se altera rapidamente, assim que

é criado

t0 t1

Page 18: Aceleracao+conteudo+dinamico

Exemplo

Page 19: Aceleracao+conteudo+dinamico

Exemplo Index.jsp (dinâmico)

Imagens (estático)

Page 20: Aceleracao+conteudo+dinamico

Exemplo

. sec

Page 21: Aceleracao+conteudo+dinamico

Tempo para carregar a página?

. Sec

Page 22: Aceleracao+conteudo+dinamico

Melhorando a performance Web

Acelerando conteúdo estático Acelerando conteúdo dinâmico

Page 23: Aceleracao+conteudo+dinamico

Endereço: www…. Navegador renderiza

Page 24: Aceleracao+conteudo+dinamico

Gráficos em cascata (Waterfall)

DNS Lookup

TCP Connection

Time to First Byte

Content Download

Page 25: Aceleracao+conteudo+dinamico

Gráficos em cascata

Index.jsp

Page 26: Aceleracao+conteudo+dinamico

Otimizando conteúdo estático

Page 27: Aceleracao+conteudo+dinamico

Otimizando conteúdo estático

Index.jsp

Images, JS e CSS

Page 28: Aceleracao+conteudo+dinamico

Otimizando conteúdo estático

Index.jsp

Otimizado com cache do Amazon CloudFront

Page 29: Aceleracao+conteudo+dinamico

Cacheando

Origin

Edge Location

User Request A

Page 30: Aceleracao+conteudo+dinamico

Cacheando

Origin

Edge Location

Get Image

User Request A

Page 31: Aceleracao+conteudo+dinamico

Cacheando

Origin

Edge Location

Get Image

Get Image

User Request A

Page 32: Aceleracao+conteudo+dinamico

Cacheando

Origin

Edge Location

Get Image

Get Image

Image

User Request A

Page 33: Aceleracao+conteudo+dinamico

Cacheando

Origin

Edge Location

Get Image

Get Image

Image

Image

User Request A

Page 34: Aceleracao+conteudo+dinamico

Cacheando

Origin

Edge Location

User Request B

Get Image

Page 35: Aceleracao+conteudo+dinamico

Cacheando

Origin

Edge Location

Get Image Image

User Request B

Page 36: Aceleracao+conteudo+dinamico

Otimizando conteúdo estático com Cache

Traz conteúdo próximo aos usuários

Page 37: Aceleracao+conteudo+dinamico

Otimizando conteúdo estático com Cache

Melhora a experiência do usuário e performance

Page 38: Aceleracao+conteudo+dinamico

Otimizando conteúdo estático com Cache

Reduz a carga na sua infraestrutura

Page 39: Aceleracao+conteudo+dinamico
Page 40: Aceleracao+conteudo+dinamico

Antes de cachear = 1.46sec

Page 41: Aceleracao+conteudo+dinamico

Depois de cachear = 770ms

Page 42: Aceleracao+conteudo+dinamico

Conteúdo estático &

Page 43: Aceleracao+conteudo+dinamico

•  Empresa brasileira de segurança digital; •  Feita por brasileiros, para brasileiros; •  Possui escritórios no Rio de Janeiro, São

Paulo e Florianópolis; •  Toda sua infra-estrutura no Brasil; •  Mais de 6 milhões de usuários ativos; •  10 MM usuários ativos mensais; •  9 MM Android memory cleanups por dia; •  2 MM Android scans por dia; •  Utiliza diversos serviços AWS;

Amazon CloudFront CDN - Apresentação

“A  flexibilidade  do  CloudFront  permite  com  que  os  desenvolvedores  sigam  o  

caminho  mais  natural  e  óbvio  no  que  diz  respeito  a  distribuição  de  conteúdo.”  

 -­‐  Rafael  Lopes  

Page 44: Aceleracao+conteudo+dinamico

•  Atender milhares de requests simultâneos simplificando a solução ao máximo;

•  Ter total autonomia sobre a origem a CDN;

•  Ter estatísticas estratégicas para nosso BI;

•  Liberdade de poder criar distribuições sem tickets de suporte;

•  Prover conteúdo de maneira dinâmica usando uma CDN;

•  Conseguir isso tudo com um preço competitivo;

Amazon CloudFront CDN - Desafio

Page 45: Aceleracao+conteudo+dinamico

Amazon CloudFront CDN - Solução e benefícios alcançados

•  Conseguir isso tudo com um preço competitivo;

•  Custom Origin;

•  Analytics – antes com logs no s3 bucket e MapR, agora com interface web nativa;

•  AWS Console e IAM management com usuários internos e ACL pra cada time;

•  Prover conteúdo de maneira dinâmica usando uma CDN;

Page 46: Aceleracao+conteudo+dinamico

•  Entrada no DNS Route 53

•  CloudFront;

•  Download distribution, escrevendo todos os logs dos edge servers em um S3 bucket;

•  ELB como origem, escrevendo logs do loadbalancer em um S3 bucket e com CloudWatch com alarme;

•  Servidores servindo conteúdo estático customizado;

Diagrama de arquitetura

Page 47: Aceleracao+conteudo+dinamico

Terminamos?

Page 48: Aceleracao+conteudo+dinamico

Ainda não . sec Objetivo:

Page 49: Aceleracao+conteudo+dinamico

Cache As Much As You Can

Page 50: Aceleracao+conteudo+dinamico

Como? Já estou cacheando minhas

imagens, CSS e JSS

Page 51: Aceleracao+conteudo+dinamico

Passos para encontrar conteúdos cacheáveis

1.  Coletar logs web (W3C) da camada web

2.  Rodar uma análise nos seus logs (EMR, RDS ou Redshift)

3.  Identificar os top N URLs acessados

Page 52: Aceleracao+conteudo+dinamico

220 /index.jsp 200 /images/book1.gif 120 /css/style.css 119 /js/script1.js 110 /factory/create_image?name=book1&size=10x10 100 /api/GetBooks?category=math 90 /api/GetBooks?category=math&lang=spanish 80 /api/GetBooks?top=10

Page 53: Aceleracao+conteudo+dinamico

Estático ou Reusável Conteúdo que não se altera em um determinado

período de tempo

t0 t1

Page 54: Aceleracao+conteudo+dinamico

Cache por um tempo menor •  Encontrar conteúdo que pode ser cacheado por qualquer

período:

•  Horas

•  Minutos

•  Segundos

•  CloudFront pode cachear por qualquer período de tempo

Page 55: Aceleracao+conteudo+dinamico

Conteúdo com Query Strings

Reutilizável!

110 /factor/create_image?name=book1&size=10x10

Page 56: Aceleracao+conteudo+dinamico

Chamadas de API

Reutilizável!

100 /api/GetBooks?category=math

Page 57: Aceleracao+conteudo+dinamico

Chamadas de API

Reutilizável!

80 /api/GetBooks?top=10

Page 58: Aceleracao+conteudo+dinamico

Cache por um tempo menor

•  API GETS atinge 100 ou 1000 RPS

•  Retira da sua camada web a carga de 1000 RPS

•  Retira carga do seu load balancer: ELB ou outro LB

•  Provisiona menos capacidade e reduz custo

1000 /api/GetBooks?top=10

Page 59: Aceleracao+conteudo+dinamico

Página base (primeira página HTML)

E agora?

220 /index.jsp

Page 60: Aceleracao+conteudo+dinamico

Otimizando conteúdo dinâmico

Page 61: Aceleracao+conteudo+dinamico

Conteúdo dinâmico

Index.jsp

Page 62: Aceleracao+conteudo+dinamico

Otimizando conteúdo dinâmico

Index.jsp

Page 63: Aceleracao+conteudo+dinamico

O Conteúdo dinâmico pode ser otimizado?

Dinâmico não é cacheável Conteúdo é enviado como se fosse um proxy pela CDN

Page 64: Aceleracao+conteudo+dinamico

O Conteúdo dinâmico pode ser otimizado?

User Request

Origin

Edge Location

Poke

Poke

Ok

Ok

Poke Poke

User Request

Page 65: Aceleracao+conteudo+dinamico

O Conteúdo dinâmico pode ser otimizado?

Adiciona latência? Como otimizar conteúdo dinâmico?

Page 66: Aceleracao+conteudo+dinamico

Como otimizar o conteúdo dinâmico?

DNS Lookup

TCP Connection

Time to First Byte

Content Download

Page 67: Aceleracao+conteudo+dinamico

Como otimizar entrega dinâmica? Route 53

Keep-Alive Connections & SSL Termination

Reduzir DNS Time

+

Reduzir Connection Time

+

Reduzir First Byte Time

+

Reduzir Content Download Time

Keep-Alive Connections

TCP/IP Optimization

Rute53

Route 53

Page 68: Aceleracao+conteudo+dinamico

Depois cachear/antes de CloudFront para conteúdo dinâmico = 770ms

Page 69: Aceleracao+conteudo+dinamico

Como melhorar o DNS Lookup?

DNS Lookup

Index.jsp

Page 70: Aceleracao+conteudo+dinamico

Com Amazon Route 53

Route 53

Page 71: Aceleracao+conteudo+dinamico

Otimizando tempo do DNS •  Route 53: DNS gerenciado

•  Desenhado para ser rápido

•  Latência baixa de resolução DNS

•  Rede global de servidores de DNS

•  Queries roteadas para o servidor DNS mais próximo

Page 72: Aceleracao+conteudo+dinamico

Sem Route 53

Page 73: Aceleracao+conteudo+dinamico

Com Route 53

Page 74: Aceleracao+conteudo+dinamico

Como melhorar TCP Connection e First Byte Time?

TCP Connection

Index.jsp

Page 75: Aceleracao+conteudo+dinamico

Com Keep-Alive das conexões do Cloudfront

Page 76: Aceleracao+conteudo+dinamico

Sem CloudFront

Region

•  Todo usuário é uma nova conexão

•  Mais usuários = mais conexões TCP

Page 77: Aceleracao+conteudo+dinamico

Sem conexões Keep-Alive

•  Mais carga no seu servidor: Memory/CPU

Page 78: Aceleracao+conteudo+dinamico

Sem conexões Keep-Alive

•  Carga no servidor aumenta o time to first byte

Time to First Byte

Page 79: Aceleracao+conteudo+dinamico

•  Mais usuários Mais conexões TCP

•  Retira carga na camada web: CPU/memory •  Melhora tempo de resposta:

2 conexões Sem CloudFront 1 conexão Com CloudFront

720 ms Sem CloudFront

540 ms Com CloudFront

CloudFront Keep Alive

Page 80: Aceleracao+conteudo+dinamico

Test CPU Util. % Sem CloudFront 20% Com CloudFront 6%

Page 81: Aceleracao+conteudo+dinamico

Como otimizar as conexões SSL?

TCP Connection

Index.jsp

Page 82: Aceleracao+conteudo+dinamico

Com terminação de SSL do CloudFront

Page 83: Aceleracao+conteudo+dinamico

Otimização SSL com CloudFront

•  Suporta tráfego SSL •  Pode trazer o seu próprio certificado •  Tráfego SSL é terminado no ponto mais próximo

do CloudFront

Page 84: Aceleracao+conteudo+dinamico

Depois da otimização do CloudFront para conteúdo dinâmico = 555 ms

Page 85: Aceleracao+conteudo+dinamico

Exemplo: somecompany.com

. sec

Page 86: Aceleracao+conteudo+dinamico

Cloudfront &

Page 87: Aceleracao+conteudo+dinamico

•  O Esporte Interativo é o maior grupo de mídia esportiva do Brasil. Na TV, com conteúdos como Liga dos Campeões, Europa League, Copa do Rei, Copa do Nordeste, Copa Verde etc., é o maior canal de esportes do país, cobrindo mais de 32 milhões de lares. No meio digital, também é líder: são quase 9 milhões de fãs no Facebook, que fazem do Esporte Interativo o 2º maior grupo de mídia esportiva do mundo. Em 2012, criou o Esporte Interativo Plus, uma nova plataforma de conteúdo online, que possibilita ao usuário assistir a programação da emissora 24 horas por dia ao vivo ou on demand através do computador, celular ou tablet. Com o sucesso do aplicativo, torna-se imprescindível possuir um serviço de TI confiável, capaz de fornecer todo o conteúdo com a máxima qualidade e também de gerenciar os mais de 80 mil assinantes.

“O escalonamento de instâncias e o uso do cloudfront nos faz crescer de acordo com a demanda dos nossos assinantes.”

“A  AWS  nos  permite  crescer  de  acordo  com  a  demanda.  Podemos  escalar  várias  instâncias  

para  um  jogo  importante  e  depois  pará-­‐las,  o9mizando  

assim  nossos  recursos.”    -­‐  Mauricio  Portela  

Page 88: Aceleracao+conteudo+dinamico

O Desafio

•  O desafio do Esporte Interativo era encontrar uma estrutura que além de suportar milhões de acessos ao web site e todas as suas plataformas móveis, ainda possibilitasse que, ao assistir o video ao vivo ou on demand, o usuário tivesse a melhor experiência possível tanto em fluidez quanto nas diversas qualidades e velocidades oferecidas. O nosso assinante deveria conseguir ver um conteúdo em HD ou no 3G sem travamentos.

Page 89: Aceleracao+conteudo+dinamico

Sobre a o Papel da AWS e Benefícios alcançados

PARAGRAFO  RESUMO  CASO  _  KEY  WORDS  

de  BENEFICIO,  DESAFIO  VENCIDO  –  RESUMO  DO  CASO  EM  UM  

PARAGRAFO  

•  Escalabilidade de recursos rápida e automática utilizando cloudfront e elb.

•  Podemos crescer e diminuir de acordo com

a nossa audiência, que é crescente e muito alta em jogos e eventos importantes.

•  Cloudfront permitiu uma distribuição

inteligente e efetiva do conteúdo ao vivo e on demand.

Cloudfront   Encoder  

Instâncias  de  Midia  AWS  

Estrutura  Streaming  

Estrutura  Site  

Cloudfront  

RDS  

Instâncias    EC2  em  um  ELB   Elas9c  Cache  

Assinantes  /  Usuários  

Page 90: Aceleracao+conteudo+dinamico

Resumo

•  CloudFront para acelerar todo seu conteúdo

•  Utilize CloudFront (e também Route 53 com roteamento baseado em latência) para melhorar sua performance

•  Melhor disponibilidade com CloudFront e Amazon Route 53

Page 91: Aceleracao+conteudo+dinamico

Perguntas?

Page 92: Aceleracao+conteudo+dinamico

© 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.

Eduardo Horai, Manager Solutions Architecture 27 Maio 2014

Obrigado!

Aceleração de Conteúdo Dinâmico: Suas Aplicações Web mais Rápidas com Amazon CloudFront e Amazon Route 53