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

Post on 10-Jan-2017

344 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

© 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

Agenda

O que é uma CDN?

Como o CloudFront funciona

Case Esporte Interativo – Turner

Funcionalidades do CloudFront

Arquiteturas de Referência

Aplicando melhores práticas

Entrega de conteúdo sem CDN

PoP

PoP

Telefonica

Oi

Redes / peeringProvedores de Conteúdo

Level 3

End User

End User

End User

PoP

PoP

End User

End User

End User

Entrega de conteúdo com CloudFront

Provedores de Conteúdo Redes / peering

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.

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

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

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

DEMO

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

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

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

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

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

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

CloudFront Refências: M&E

A CASA DA LIGA DOS CAMPEÕES NO BRASIL

Wesley SantanaGerente de Tecnologiawesley.santana@turner.com

“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

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

Solução

ENCODING TRANSCODING PLAYERORIGIN CDN’s

4K

1080p

720p

480p

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

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

Dinâmico

EstáticoVídeo

Entregue todo o seu conteúdo: entregue todo site

Input do

Usuário

SSL

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

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

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.

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.

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:

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

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

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

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

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

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)

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

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.

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

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

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...

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

Aplicando as Melhores Práticas

Maior segurança

Maior disponibilidade

Melhor performance

Facilidade de debug

Visibilidade

Testando sua Distribuição

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.

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

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

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

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

Relatórios do Amazon CloudFront para

identificar tendências

• Cache hit/miss

• Incomplete downloads

• Top countries

• Mobile users

• Popular objects

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">

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

Distribuição compartilhada

• Assets compartilhados entre múltiplos sites

Static content

Amazon S3

Amazon CloudFront

assets.example.com

www.example.com

www.example.org

Forwarded values

• Checar forwarded headers

• Query string forwarding

• Cookie forwarding

• Trusted Advisor checks

Invalidações

• Último recurso

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

válido nos browsers ou caches intermediários

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)

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

SSL labs

• Verifique sua configuração de SSL

Obrigado!

top related