Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Usando Amazon CloudFront para aumentar performance, disponibilidade e cache na sua aplicação

5,531 views

Published on

O Amazon Cloudfront é o nosso serviço de CDN. Com a utilização desse serviço, é possível aumentar a performance, disponibilidade e segurança das suas aplicação, nessa apresentação, também será exposto formas de utilização e boas práticas.

Published in: Technology

Usando Amazon CloudFront para aumentar performance, disponibilidade e cache na sua aplicação

  1. 1. © 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Ricardo Geh, Enterprise Solutions Architect Junho 2016 Usando Amazon CloudFront para aumentar performance, disponibilidade e cache na sua aplicação
  2. 2. Agenda O que é uma CDN? Como o CloudFront funciona Case Esporte Interativo – Turner Funcionalidades do CloudFront Arquiteturas de Referência Aplicando melhores práticas
  3. 3. Entrega de conteúdo sem CDN PoP PoP Telefoni ca Oi Redes / peeringProvedores de Conteúdo Level 3 End User End User End User
  4. 4. PoP PoP End User End User End User Entrega de conteúdo com CloudFront Provedores de Conteúdo Redes / peering
  5. 5. 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.
  6. 6. 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
  7. 7. Sem utilizar CloudFront longas 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
  8. 8. TTL = 60 ! TTL = 60 X-Cache: Miss from cloudfront Utilizando CloudFront curtas 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
  9. 9. DEMO
  10. 10. 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
  11. 11. 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
  12. 12. 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 PriceperGB Data Transfer Data Transfer Economies of Scale Public Rates Private Rates
  13. 13. Preço do CloudFront: Classe de Preços Performance / 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
  14. 14. 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
  15. 15. 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
  16. 16. CloudFront Refências: M&E
  17. 17. ACASADALIGA DOS CAMPEÕES NO BRASIL Flavio Menna Barreto Diretor de Tecnologia e Operações flavio.menna@turner.com
  18. 18. “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ício adequada” - Maurício Portela, VP de Mídias Digitais
  19. 19. 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
  20. 20. Solução ENCODING TRANSCODING PLAYERORIGIN CDN’s 4K 1080p 720p 480p
  21. 21. 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
  22. 22. 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
  23. 23. Dinâmico Estático Vídeo Entregue todo o seu conteúdo: entregue todo site Input do Usuário SSL
  24. 24. 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
  25. 25. 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
  26. 26. 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.
  27. 27. 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.
  28. 28. 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:
  29. 29. 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
  30. 30. 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
  31. 31. 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/2 012-07-01/"> Gerencie seu conteúdo da sua maneira API Console Gerenciamento e Relatório
  32. 32. 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
  33. 33. Arquitetura de Referência: Visão Geral Streaming pelo CloudFront LondonSingapore NY Estático ou Dinâmico Servido pelo ELB e/ou EC2 *.php, *.js, *m3u8, *.ts Estático Servido pelo S3 *.jpg, *.m3u8, *.ts, *.css Estático ou Dinâmico Servido 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 vivo RTMP
  34. 34. CloudFront Arquitetura de Referência: Seleção de Origens do CloudFront Origin 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)
  35. 35. CNAME = xyz.cloudfront.net CloudFront 53 Balanceamento Endpoint Não-AWS Arquitetura de Referência: Balanceamento de Carga Balanceie a carga entre seus provedores usando o Route 53 Customer Location www.mysite.com Weighted Round Robin Routing CNAME = xyz.cloudfront.net, weight = 0-255 CNAME = xyz.somecdn.com, weight = 0-255 CNAME = xyz.somecdn.com Latency Based Routing CNAME = xyz.cloudfront.net, latency metric CNAME = xyz.somecdn.com, latency metric Fail Over Routing CNAME = xyz.cloudfront.net, PRIMARY CNAME = xyz.somecdn.com, SECONDARY Geolocation Routing CNAME = xyz.cloudfront.net, LOCATION 1…LOCATION X CNAME = xyz.somecdn.com, LOCATION 2…LOCATION Y
  36. 36. CloudFront EC2S3 ELB 53 Balanceamento Origem não- AWS Arquitetura de Referência: Roteamento Inteligente Usando 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.
  37. 37. Arquitetura de Referência: Regras de Roteamento Escolha 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 2 CloudFront CloudFront PoP London CloudFront PoP Paris CloudFront PoP Miami X New York London France Argentina
  38. 38. Arquitetura de Referência: Regras de Roteamento Headers, 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 2 CloudFront 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
  39. 39. CloudFront Edge Location WAF users hackers bad bots site 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 WAF Se proteja de ataques DDoS, SQL Injection...
  40. 40. 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ático Servido do S3 *.jpg, *.m3u8, *.ts, *.css Conteúdo estático ou dinâmico Servido do ELB e/ou EC2 *.php, *.js, *m3u8, *.ts Conteúdo estático ou dinâmico Servido de uma origem não AWS *.php, *.js, *m3u8, *.ts
  41. 41. Aplicando as Melhores Práticas Maior segurança Maior disponibilidade Melhor performance Facilidade de debug Visibilidade Testando sua Distribuição
  42. 42. 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 IP Whitelist somente do range de IP do Amazon CloudFront • Protege a origem de sobrecarga • Benefícios de performance para todos os seus clientes.
  43. 43. 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
  44. 44. 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
  45. 45. 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
  46. 46. 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
  47. 47. Relatórios do Amazon CloudFront para identificar tendências • Cache hit/miss • Incomplete downloads • Top countries • Mobile users • Popular objects
  48. 48. 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">
  49. 49. 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
  50. 50. Distribuição compartilhada • Assets compartilhados entre múltiplos sites Static content Amazon S3 Amazon CloudFront assets.example.com www.example.com www.example.org
  51. 51. Forwarded values • Checar forwarded headers • Query string forwarding • Cookie forwarding • Trusted Advisor checks
  52. 52. Invalidações • Último recurso • Aplicado somente no cache do Amazon CloudFront, não é válido nos browsers ou caches intermediários
  53. 53. 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)
  54. 54. 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 
  55. 55. SSL labs • Verifique sua configuração de SSL
  56. 56. Obrigado!

×