building blocks #4 - rede de entrega de conteúdo (cdn) na aws

56
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Ricardo Geh, Enterprise Solutions Architect Setembro 2016 Usando Amazon CloudFront para aumentar performance, disponibilidade e cache na sua aplicação

Upload: amazon-web-services-latam

Post on 10-Jan-2017

344 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Ricardo Geh, Enterprise Solutions Architect

Setembro 2016

Usando Amazon CloudFront para aumentar

performance, disponibilidade e cache na sua

aplicação

Page 2: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Agenda

O que é uma CDN?

Como o CloudFront funciona

Case Esporte Interativo – Turner

Funcionalidades do CloudFront

Arquiteturas de Referência

Aplicando melhores práticas

Page 3: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Entrega de conteúdo sem CDN

PoP

PoP

Telefonica

Oi

Redes / peeringProvedores de Conteúdo

Level 3

End User

End User

End User

Page 4: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

PoP

PoP

End User

End User

End User

Entrega de conteúdo com CloudFront

Provedores de Conteúdo Redes / peering

Page 5: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

CDN => Content Delivery Network

Sem CDN COM CDN

Vantagens de utilizar uma CDN:

• Menor latência de entrega de conteúdo;

• Maior throughput;

• Redução de processamento na origem;

• Mais segurança para a origem;

• Menor custo;

• Melhor gerenciamento da distribuição de

conteúdo.

Page 6: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

O que uma CDN deveria fazer

Performance: entrega de conteúdo com baixa latência,

alto throughput e alta disponibilidade

Alcance e Funcionalidade: prover uma rede global de

edge locations para alcançar uma grande audiência de

maneira otimizada

Custo: assegurar uma viabilidade financeira

Page 7: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Sem utilizar CloudFrontlongas distâncias + rede ruim = alto tempo de carregamento

?

!

* enlace de rede e velocidades fictícias para fins didáticos

~380ms

?

!

~350ms

ec2

52.74.26.30

Name Type Value

exemplo.com A 52.74.26.30

Page 8: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

TTL = 60! TTL =

60

X-Cache: Miss from cloudfront

Utilizando CloudFrontcurtas distâncias + rede otimizada = baixo tempo de carregamento

* enlace de rede e velocidades fictícias para fins didáticos~200ms

?

ec2

52.74.26.30

Name Type Value

exemplo.com ALIAS d23scsjl86er9y.cloudfront.ne

t

~24ms

?

! TTL =

60

?! TTL =

60

X-Cache: Hit from cloudfront

Page 9: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

DEMO

Page 10: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

CloudFront: Content Delivery Network

Rede de cache completa

Infraestrutura global

Afinado para performance otimizada

Massivamente escalável

Altamente Segura

Self Service

Precificado para minimizar custo

Page 11: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Alcance: Rede Global de Distribuição do CloudFront

América do

Norte

América do Sul Europa Ásia

Super POPs Países Continentes

Região AWS CloudFront Edge Location

Page 12: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Custo de CloudFront: Opções competitivas e flexíveis

Sob demanda, pague pelo uso

Mesmos preços para

conteúdos estáticos e

dinâmicos

Opção de comprometimento

Modelo de Gb entregues

Pri

ce p

er

GB

Data Transfer

Data Transfer Economies of Scale

Public Rates Private Rates

Page 13: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Preço do CloudFront: Classe de PreçosPerformance / Otimização de custo sob demanda

All

North America + Europe

North America + Europe + Asia

Entrega de conteúdo global e controle de preço para ajustar com os objetivos de custo e performance

Page 14: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Entrega de Conteúdo Para Qualquer Segmento de Mercado

Media e Entretenimento

Jogos

eCommerce

Digital Advertising

Download de Software

Websites dinâmicos e Aplicações

Page 15: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Entrega para qualquer caso de uso

Download• Download

progressivo

• Sites estáticos

• Aplicações

• A/V players

Vídeo sob demanda

• Internet TV

• OTT

• Web

• Mobile

Eventos ao vivo• Música

• Esportes

• Jogos

• Notícias

Publicação

• Site dinâmico

• Site inteiro

• Notícias, clima, etc

Page 16: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

CloudFront Refências: M&E

Page 17: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

A CASA DA LIGA DOS CAMPEÕES NO BRASIL

Wesley SantanaGerente de [email protected]

Page 18: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

“A Amazon nos ajuda a conectar, entreter e

transformar a vida das pessoas através da

emoção do Esporte”

Produção e distribuição de conteúdo

de esportes em múltiplas plataformas

Esporte na hora e onde você quiser“Utilizamos a

CloudFront para

distribuir nosso conteúdo

de forma segura,

confiável e com relação

custo x benefícioadequada”

- Maurício Portela, VP de

Mídias Digitais

Page 19: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Desafio

• Eventos ao vivo

• Base de usuários em expansão

• Multi-plataforma / multi-device

• Qualidade do vídeo x internet

usuários

• Custo / usuário

• Métricas para gestão

Page 20: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Solução

ENCODING TRANSCODING PLAYERORIGIN CDN’s

4K

1080p

720p

480p

Page 21: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Benefícios da solução

• Elasticidade para lidar com picos de

tráfego

• Capilaridade e largura de banda

• Performance, disponibilidade e

segurança

• Flexibilidade para uso de outras

CDN’s além da Cloudfront

• Custo variável em função da

demanda

• Informações para monitoramento e

gestão da operação

Page 22: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Elastic Load

Balancing

Conteúdo Dinâmico

Amazon EC2

Conteúdo Estático

Amazon S3 Custom Origin

OR

OR

Custom OriginAmazon CloudFront

Example.com

*.jpg

*.php

Entrega de Conteúdo Estático e Dinâmico

Page 23: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Dinâmico

EstáticoVídeo

Entregue todo o seu conteúdo: entregue todo site

Input do

Usuário

SSL

Page 24: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Funcionalidades: Streaming de Vídeo

Sob Demanda

• Microsoft Smooth Streaming

• HLS

• Flash RTMP

Live Streaming

• Wowza Media Server

• Adobe Media Server

• Microsoft Windows Media Services

Page 25: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Funcionalidades: Proteção do Conteúdo

Problema – se mover meu conteúdo estático para o S3 e usar o CloudFront como posso me proteger de um acesso não autorizado?

Solução – Signed URLs ou Signed HTTP Cookies

Page 26: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Signed URLs

Como Funciona• Web server obtém uma credencial temporária para o conteúdo do

S3

• Cria uma Signed URL baseada nessa credencial que permite o acesso

• Provê esse link ao cliente

• Link é válido por um período de tempo

O AWS SDK gerencia toda a complexidade deste

processo automaticamente.

Page 27: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Signed HTTP Cookies

O que faz?

• Provê o mesmo nível de controle da Signed URL incluindo a

assinatura em um HTTP cookie

• Isso permite que você restrinja o acesso à múltiplos objetos

(autenticação do site inteiro) ou à um único objeto sem precisar

alterar as URLs.

Page 28: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Funcionalidades: Compressão de Gzip

Automática

Compressão de Gzip pode ser habilitada nas distribuições permitindo que suas páginas sejam carregadas mais rápidas, melhora o donwload de conteúdo, e a cobrança de dados transferidos pelo CloudFront talvez reduza;

Para habilitar, simplesmente localize sua distribuição e configure Compress Objects Automatically para Yes dentro das opções de Behavior:

Page 29: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Funcionalidades: Suporte a SSL

Com múltiplas origens, como fazemos com o SSL? (certificados são associados ao nome do domínio)

gricardo.s3-website-us-east-1.amazonaws.com

Gricardo-108754258.us-east-1.elb.amazonaws.com

Page 30: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

AWS Certificate Manager – Gratuito

• Provisiona certificados SSL/TLS para uso em recursos

AWS:

• Elastic Load Balancing

• Distribuições Amazon CloudFront

• AWS gerencia:

• Geração Key pair e CSR

• Gerenciamento de renovação e deployment

• Domain validation (DV) por e-mail

• Disponível pela AWS Management console, CLI, ou API

Page 31: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

POST /2012-07-01/distribution HTTP/1.1

Host: cloudfront.amazonaws.com

Authorization: AWS authentication string

Date: time stamp

Other required headers

<?xml version="1.0" encoding="UTF-8"?>

<DistributionConfig

xmlns="http://cloudfront.amazonaws.com/doc/2012-07-01/">

Gerencie seu conteúdo da sua maneira

API ConsoleGerenciamento e Relatório

Page 32: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

CloudFront

Comece a Entregar seu Conteúdo Hoje!

• Sign Up simples para criar sua conta

• Sem taxa para usar a plataforma

• Nenhuma programação necessária

• Sem necessidade de rearquitetar

• Operacional em 15 minutos

aws.amazon.com/cloudfront

Page 33: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Arquitetura de Referência: Visão GeralStreaming pelo CloudFront

LondonSingapore NY

Estático ou

DinâmicoServido pelo ELB e/ou EC2

*.php, *.js, *m3u8, *.ts

EstáticoServido pelo S3

*.jpg, *.m3u8, *.ts, *.css

Estático ou DinâmicoServido de uma origem personalizada

*.php, *.js, *m3u8, *.ts

• Entregue conteúdo estático e dinâmico

• Desonere o tráfego da origem para o CloudFront

• Sirva grandes eventos AO VIVO para uma larga audiência

• Sirva VOD para qualquer dispositivo

• Altere o conteúdo baseado no User Agent

• SSL• Autentique com URLs

Assinadas

Origem do evento

ao vivoRTMP

Page 34: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

CloudFront

Arquitetura de Referência: Seleção de Origens do CloudFrontOrigin Sourcing Based on Intelligent Behavior Rules

Customer Location

www.mysite.com

Path Pattern Matching

/*.jpg; /*.php etc.

GET http://mysite.com/images/1.jpg to ORIGIN A

GET http://mysite.com/index.php to ORIGIN B

GET http://mysite.com/web/home.css to ORIGIN C

GET http://mysite.com/* (DEFAULT) to ORIGIN D

Origin A:

origin.mysite.com

Origin B:

origin2.mysite.com

Origin C:

origin3.mysite.com

Origin D:

origin4.mysite.com

Combine padrões de path

/*.php

/images/*.jpg

/web/*.css

/*.* (DEFAULT)

Page 35: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

CNAME =

xyz.cloudfront.net

CloudFront

53

Balanceamento

Endpoint

Não-AWS

Arquitetura de Referência: Balanceamento de CargaBalanceie a carga entre seus provedores usando o Route 53

Customer Location

www.mysite.com

Weighted Round Robin RoutingCNAME = xyz.cloudfront.net, weight = 0-255

CNAME = xyz.somecdn.com, weight = 0-255

CNAME =

xyz.somecdn.com

Latency Based RoutingCNAME = xyz.cloudfront.net, latency metric

CNAME = xyz.somecdn.com, latency metric

Fail Over RoutingCNAME = xyz.cloudfront.net, PRIMARY

CNAME = xyz.somecdn.com, SECONDARY

Geolocation RoutingCNAME = xyz.cloudfront.net, LOCATION 1…LOCATION X

CNAME = xyz.somecdn.com, LOCATION 2…LOCATION Y

Page 36: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

CloudFront

EC2S3 ELB

53

Balanceamento

Origem não-

AWS

Arquitetura de Referência: Roteamento InteligenteUsando CloudFront com Route 53

Customer Location

www.mysite.com

Use Route 53 para rotear

entre CDN, S3, ELB

(balanceador), EC2

(web/servidor de aplicação)

e uma origem não-AWS.

Page 37: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Arquitetura de Referência: Regras de RoteamentoEscolha geográfica do PoP e Geo-Blocking

Customer Location

1 Requisição para www.mysite.com

Localidade A: PoP em New York

Localidade B: PoP em London

Localidade C: acesso negado ao conteúdo

baseado nas regras de Geo

Localidade D: PoP dentro da Price Class

3

Examine a origem Geo, latência, classe de

preço

CloudFront PoP

New York

1 2

3

4

4 Retorna o Endereço IP ou nega a

requisição

2CloudFront

CloudFront PoP

London

CloudFront PoP

Paris

CloudFront PoP

Miami

X

New York London France Argentina

Page 38: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Arquitetura de Referência: Regras de RoteamentoHeaders, Cookies, Query Strings

Customer Location

1 Requisição para www.mysite.com

User A: cache específico de mobile

User B: cache específico de geo

User C: cache HTTP ou HTTPS

User D: cache multi-site, retorna diferentes

sites do mesmo host

3

Examina e encaminha os host headers

CloudFront PoP

New York

1 2

3

4

4

2CloudFront

CloudFront PoP

London

CloudFront PoP

Paris

CloudFront PoP

Miami

Mobile User

In New York

Geo-Specific Content

for user in

Amsterdam

Multi-Site DeliveredHTTPS or HTTP Delivery

based on request type

Retorna conteúdo específico ao usuário

Page 39: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

CloudFront

Edge

Location WAF

users

hackers

bad botssite

scraping

SQL Injection,

XSS, outros

ataques

Tráfego legítimo

Tráfego malicioso é bloqueado pelo WAF na borda

-Pode ser origem não-AWS

-Pode ser conteúdo estático e dinâmico

EC2ELBS3

E/OU

Seu datacenter

Servidor Armazenamento

Arquitetura de Referência: CloudFront + AWS WAFSe proteja de ataques DDoS, SQL Injection...

Page 40: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

CloudFront e o Ecossistema da AWS

Integra com recursos da AWS• Route 53 DNS

• Amazon Elastic Transcoder

• Amazon S3

• EC2 Compute e Elastic Load Balancing

• Marketplace SaaS e SI parceiros

• AWS WAF

• AWS ACM

Melhora a escalabilidade de outros recursos

Descontos na transferência de dados do Amazon S3 e EC2 para CloudFront

Conteúdo estáticoServido do S3

*.jpg, *.m3u8, *.ts, *.css

Conteúdo

estático ou

dinâmicoServido do ELB e/ou

EC2

*.php, *.js, *m3u8, *.ts

Conteúdo estático

ou dinâmicoServido de uma origem não

AWS

*.php, *.js, *m3u8, *.ts

Page 41: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Aplicando as Melhores Práticas

Maior segurança

Maior disponibilidade

Melhor performance

Facilidade de debug

Visibilidade

Testando sua Distribuição

Page 42: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Controle de acesso: Restrinja o acesso a Origem

Amazon S3

Origin Access Identify (OAI)• Previne acesso direto ao seu bucket no

Amazon S3

• Benefícios de performance para todos os

seus clientes.

Custom origin

Bloqueio por endereço IPWhitelist somente do range de IP do

Amazon CloudFront

• Protege a origem de sobrecarga

• Benefícios de performance para todos

os seus clientes.

Page 43: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Faça log dos request IDs na origem

Nginx:

log_format main '$remote_addr - $remote_user

[$time_local] "$request" ‘ '$status $body_bytes_sent

"$http_referer" ‘ '"$http_user_agent" http_x_forwarded_for"

"$http_x_amz_cf_id"';

Apache:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"

\"%{User-Agent}i\" \"%{X-Amz-Cf-Id}i\"" combined

Page 44: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Configure response headers na origem

*Strict-Transport-Security: max-age=15552000;

*X-Frame-Options: SAMEORIGIN

*X-XSS-Protection: 1; mode=block Options

*Cache-Control: max-age=300; public

Page 45: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Monitore mudanças de configuração na sua

distribuição

• Use o Cloudtrail

• Receba alarmes quando:

• Distribution é desativada

• Trusted signers é desativado

• Custom TLS certificate são alterados

Page 46: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Métricas quase em tempo real do Cloudfront

• Providos quase em tempo real

• Via Amazon CloudWatch

• Alarme em 6 metrics:

• Requests

• Bytes downloaded

• Bytes uploaded

• 4XX error rate

• 5XX error rate

• Total error rate

Page 47: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Relatórios do Amazon CloudFront para

identificar tendências

• Cache hit/miss

• Incomplete downloads

• Top countries

• Mobile users

• Popular objects

Page 48: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Versionando assets do seu website

<link

href="//assets.example.com/assets/v1/css/jumbotron-narrow.css“

rel="stylesheet">

<link

href="//assets.example.com/assets/v2/css/jumbotron-narrow.css“

rel="stylesheet">

<link

href="//assets.example.com/assets/css/jumbotron-narrow.css?<md5sum>“

rel="stylesheet">

Page 49: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Cache-Control & expires

< Cache-Control: max-age=300

< Cache-Control: max-age=30, s-maxage=3000

< Expires: Thu, 18 Sep 2025 21:34:50 GMT

Min TTL Default TTL Max TTL

Set min, max and default TTL on Amazon CloudFront

Page 50: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Distribuição compartilhada

• Assets compartilhados entre múltiplos sites

Static content

Amazon S3

Amazon CloudFront

assets.example.com

www.example.com

www.example.org

Page 51: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Forwarded values

• Checar forwarded headers

• Query string forwarding

• Cookie forwarding

• Trusted Advisor checks

Page 52: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Invalidações

• Último recurso

• Aplicado somente no cache do Amazon CloudFront, não é

válido nos browsers ou caches intermediários

Page 53: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Habilitando o modo de desenvolvimento

• Configure o TTL máximo para 0

• Não necessita invalidar o cache constantemente!

• Enviar todos os headers vai mudar o

comportamento

• Faça o Whitelist do seu IP usando o AWS WAF

(permite somente o acesso de dentro da sua

organização)

• Use cookies assinados (signed cookies)

Page 54: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Teste de carga

Teste de carga tradicional

• Usa um único cliente

• De uma única região

• Atinge um único IP

DNS load balancing

Simula ambiente real do usuário

Teste de carga ideal

• Clientes em múltiplas localidades

• Requisições de DNS

independentes

• Distribuição entre vários IPs

DNS load balancing

Simula ambiente real do usuário

Page 55: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

SSL labs

• Verifique sua configuração de SSL

Page 56: Building blocks #4 - Rede de entrega de conteúdo (CDN) na AWS

Obrigado!