O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Escalando para os primeiros 10 milhoes de usuarios

988 visualizações

Publicada em

Um dos grandes beneficios da computação em nuvem, é a possibilidade de escalar sua capacidade de acordo com a sua demanda. apresentação serão abordados boas práticas de arquiteturas web, para que permita a escalação de 0 a 10 milhões de usuários.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Escalando para os primeiros 10 milhoes de usuarios

  1. 1. © 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Ari Dias, Sr Mgr, Partner Solutions Architect Escalando para os primeiros milhões de usuários1011
  2. 2. © 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Ari Dias, Sr Mgr, Partner Solutions Architect • Solutions Architect (2012)
  3. 3. AWS Summit 2016 WHO ARE YOU?
  4. 4. Como escalar a sua aplicação?
  5. 5. http://i.telegraph.co.uk/multimedia/archive/02674/CLIMBER_2674482b.jpg
  6. 6. Muita coisa para ler! Lugar de onde você não deveria começar!
  7. 7. Auto Scaling …é uma ferramenta e um destino.
  8. 8. Não é uma única solução que resolverá todos os problemas.
  9. 9. Então, por onde devemos começar?
  10. 10. Vamos começar pelo básico…
  11. 11. US-WEST (Oregon) EU (Ireland) ASIA PACIFIC (Tokyo) US-WEST (N. California) SOUTH AMERICA (Sao Paulo) US-EAST (N. Virginia) AWS GOVCLOUD (US) ASIA PACIFIC (Sydney) ASIA PACIFIC (Singapore) CHINA (Beijing) Regiões EU (Frankfurt) INDIA (2016)
  12. 12. US-WEST (Oregon) EU (Ireland) ASIA PACIFIC (Tokyo) US-WEST (N. California) SOUTH AMERICA (Sao Paulo) US-EAST (N. Virginia) AWS GOVCLOUD (US) ASIA PACIFIC (Sydney) ASIA PACIFIC (Singapore) CHINA (Beijing) Zonas de Disponibilidade EU (Frankfurt) INDIA (2016)
  13. 13. Edge locations
  14. 14. TECHNICAL & BUSINESS SUPPORT Account Management Support Professional Services Solutions Architects Training & Certification Security & Pricing Reports Partner Ecosystem AWS MARKETPLACE Backup Big Data & HPC Business Apps Databases Development Industry Solutions Security APPLICATION SERVICES Queuing Notifications Search Orchestration Email ENTERPRISE APPS Virtual Desktops Storage Gateway Sharing & Collaboration Email & Calendaring Directories HYBRID CLOUD MANAGEMENT Backups Deployment Direct Connect Identity Federation Integrated Management SECURITY & MANAGEMENT Virtual Private Networks Identity & Access Encryption Keys Configuration Monitoring Dedicated INFRASTRUCTURE SERVICES Regions Availability Zones Compute Storage Databases SQL, NoSQL, Caching CDNNetworking PLATFORM SERVICES App Mobile & Web Front-end Functions Identity Data Store Real-time Development Containers Source Code Build Tools Deployment DevOps Mobile Sync Identity Push Notifications Mobile Analytics Mobile Backend Analytics Data Warehousing Hadoop Streaming Data Pipelines Machine Learning
  15. 15. TECHNICAL & BUSINESS SUPPORT Account Management Support Professional Services Solutions Architects Training & Certification Security & Pricing Reports Partner Ecosystem AWS MARKETPLACE Backup Big Data & HPC Business Apps Databases Development Industry Solutions Security APPLICATION SERVICES Queuing Notifications Search Orchestration Email ENTERPRISE APPS Virtual Desktops Storage Gateway Sharing & Collaboration Email & Calendaring Directories HYBRID CLOUD MANAGEMENT Backups Deployment Direct Connect Identity Federation Integrated Management SECURITY & MANAGEMENT Virtual Private Networks Identity & Access Encryption Keys Configuration Monitoring Dedicated INFRASTRUCTURE SERVICES Regions Availability Zones Compute Storage Databases SQL, NoSQL, Caching CDNNetworking PLATFORM SERVICES App Mobile & Web Front-end Functions Identity Data Store Real-time Development Containers Source Code Build Tools Deploymen t DevOps Mobile Sync Identity Push Notifications Mobile Analytics Mobile Backend Analytics Data Warehousing Hadoop Streaming Data Pipelines Machine Learning
  16. 16. Solutions Architects
  17. 17. Solutions Architects
  18. 18. APPLICATION SERVICES Queuing Notifications Search Orchestration Email SECURITY & MANAGEMENT Virtual Private Networks Identity & Access Encryption Keys Configuration Monitoring Dedicated INFRASTRUCTURE SERVICES Regions Availability Zones Compute Storage Databases SQL, NoSQL, Caching CDNNetworking PLATFORM SERVICES App Mobile & Web Front-end Functions Identity Data Store Real-time Development Containers Source Code Build Tools Deployment DevOps Mobile Sync Identity Push Notifications Mobile Analytics Mobile Backend Analytics Data Warehousing Hadoop Streaming Data Pipelines Machine Learning
  19. 19. Os bloquinhos para compor a solução Serviços em alta disponibilidade e tolerante a falhas Alta disponibilidade com a arquitetura correta  Amazon CloudFront  Amazon Route 53  Amazon S3  Amazon DynamoDB  Elastic Load Balancing  Amazon EFS  AWS Lambda  Amazon SQS  Amazon SNS  Amazon SES  Amazon SWF  …  Amazon EC2  Amazon EBS  Amazon RDS  Amazon VPC
  20. 20. Vamos começar com …
  21. 21. 1 usuário Você
  22. 22. 1 Usuário • Amazon Route 53 para DNS • Um único Elastic IP • Uma única instância EC2 • Com tudo instalado • Aplicação web • Banco de dados • Gerenciamento • Etc … Instância Amazon EC2 Elastic IP Usuário Amazon Route 53
  23. 23. “Vamos precisar de uma máquina maior” • Estratégia básica • Pode se basear em PIOPS • I/O grande • Memória grande • CPU grande • Disco grande • Fácil de alterar a capacidade da instância • Eventualmente vai chegar no limite! c4.8xlarge m3.2xlarge t2.micro
  24. 24. “Vamos precisar de uma máquina maior” • Estratégia básica • Pode se basear em PIOPS • I/O grande • Memória grande • CPU grande • Disco grande • Fácil de alterar a capacidade da instância • Eventualmente vai chegar no limite! c4.8xlarge m3.2xlarge t2.micro
  25. 25. 1 Usuário • Dependendo da aplicação e da carga poderemos chegar a centenas ou milhares de usuários • Não há tolerância à falha • Sem redundância Instância EC2 Elastic IP Usuário Amazon Route 53
  26. 26. 1 Usuário • Dependendo da aplicação e da carga poderemos chegar a centenas ou milhares de usuários • Não há tolerância à falha • Sem redundância Instância EC2 Elastic IP Usuário Amazon Route 53
  27. 27. Usuários >1
  28. 28. Usuários > 1 Primeiro, vamos separar alguns componentes em mais de uma instância: • Aplicação web • Banco de dados  Usar um serviço gerenciado de banco de dados? Instância Web Instância de Banco de Dados Elastic IP Usuário Amazon Route 53
  29. 29. Você gerencia Gerenciado pela AWS Banco de dados em EC2 Você é livre para usar o banco que escolher A gestão das licenças é sua Amazon DynamoDB Banco de dados NoSQL gerenciado e executando sobre SSDs Escalabilidade homogênea Sem administração Amazon RDS Microsoft SQL Server Oracle MySQL PostgreSQL MariaDB Amazon Aurora Sua licença ou já incluída Amazon Redshift DW para processamento paralelo Escala de Petabytes Rápido, poderoso e facilmente escalável Opções de Banco de Dados
  30. 30. Você gerencia Gerenciado pela AWS Banco de dados em EC2 Você é livre para usar o banco que escolher A gestão das licenças é sua Amazon DynamoDB Banco de dados NoSQL gerenciado e executando sobre SSDs Escalabilidade homogênea Sem administração Amazon RDS Microsoft SQL Server Oracle MySQL PostgreSQL MariaDB Amazon Aurora Sua licença ou já incluída Amazon Redshift DW para processamento paralelo Escala de Petabytes Rápido, poderoso e facilmente escalável Opções de Banco de Dados
  31. 31. Amazon Aurora • Disco escala automaticamente até 64 TB • Até 15 réplicas de leitura • Backup incremental no Amazon S3 • Replicado em 3 AZs • Compatível com MySQL
  32. 32. To NoSQL, or not to NoSQL?
  33. 33. Alguém pode não gostar, mas…
  34. 34. Comece com banco de dados SQL
  35. 35. Por que começar com SQL? • Tecnologia madura e bem posicionada. • Muito código disponível, comunidades, livros e ferramentas. • Você não vai quebrar o seu banco SQL nos seus primeiros 10 milhões de usuários. Não, não vai. • Estratégias de escala já bem conhecidas. * A não ser que você esteja fazendo algo SUPER peculiar com os dados ou você tenha um volume de dados massivo… mas ainda o banco SQL terá um lugar na sua arquitetura.
  36. 36. AH HA! Você disse massivo?” Eu terei volumes massivos de dados!
  37. 37. > 5 TB em um ano? Workload de dados incrivelmente intensos?? OK! Você pode precisa de NoSQL!
  38. 38. Por que você pode precisar de um NoSQL? • Aplicações de baixa latência • Metadata-driven • Dados não estruturados (não relacional) • Precisa de um modelo de dados sem esquemas* • Quantidade expressiva de dados (TB+) • Necessidade de ingestão rápida de dados (milhares de registros/sec) *Precisa!= “É mais fácil desenvolver sem schemas”
  39. 39. Usuários >100
  40. 40. Usuários >100 Primeiro, vamos separar nosso servidor em dois componentes: • Aplicação web • Banco de dados  Use Amazon RDS para facilitar a sua vida Instância Web Elastic IP Instância RDS DB Usuário Amazon Route 53
  41. 41. Usuários >1000
  42. 42. Usuários >1000 Agora, vamos adicionar tolerância à falhas e redundância: Mais uma instância web • Em outra Zona de disponibilidade RDS Multi-AZ Elastic Load Balancing (ELB) Web Instance RDS DB Instance Active (Multi-AZ) Availability Zone Availability Zone Web Instance RDS DB Instance Standby (Multi-AZ) ELB Balancer User Amazon Route 53
  43. 43. Elastic Load Balancing • Em alta disponibilidade • 1 - 65535 • Health checks • Redirecionamento por sessões • SSL • Monitoramento • Logs
  44. 44. horizontal vertical
  45. 45. Usuários > 10,000s–100,000s RDS DB Instância Ativa (Multi-AZ) Availability Zone Availability Zone RDS DB Instância Standby (Multi-AZ) ELB Balancer RDS DB Read Replica RDS DB Read Replica RDS DB Read Replica RDS DB Read Replica Instância Web Instância Web Instância Web Instância Web Instância Web Instância Web Instância Web Instância Web Amazon Route 53Usuário
  46. 46. E quanto à performance e eficiência?
  47. 47. Diminuindo a carga…
  48. 48. RDS DB Instance Active (Multi-AZ) Availability Zone ELB Balancer Amazon S3 Amazon CloudFront Amazon Route 53 User Mova algum workload Web Instances • Conteúdo estático para o Amazon S3 e Amazon CloudFront Mova…
  49. 49. Amazon Simple Storage Service (S3) • Storage de objetos • Altamente durável • Muito bom para objetos estáticos • “Escala infinita” • Objectos até 5 TB • Criptografia opcional
  50. 50. Amazon CloudFront • Cache de conteúdo para entrega rápida • Diminui a carga na origem • Conteúdo estático e dinâmico • Streaming de vídeos • Certificados SSL • Baixo TTLs (tão baixo qnt 0) • Otimizado para AWS
  51. 51. Amazon CloudFront ResponseTime ServerLoad Response Time Server Load Response Time Serve rLoad Sem CDN CDN para Conteúdo Estático CDN para Conteúdo Estático e Dinâmico 0 20 40 60 80 8:00AM 9:00AM 10:00AM 11:00AM 12:00PM 1:00PM 2:00PM 3:00PM 4:00PM 5:00PM 6:00PM 7:00PM 8:00PM 9:00PM Volumede dados(Gbps)
  52. 52. Mova algum workload • Conteúdo estático no Amazon S3 e Amazon CloudFront Move… • Sessão/estado para o Amazon DynamoDB • Cache dos dados no Amazon ElastiCache RDS DB Instance Ativo (Multi-AZ) Availability Zone ELB Balancer Amazon S3 Amazon CloudFront Amazon Route 53 Usuário ElastiCache DynamoDB Instâncias Web
  53. 53. Amazon DynamoDB • Banco de dados NoSQL gerenciado • Throughput provisionado • Rápido e previsível • Distribuído e tolerante a falhas • Suporte à JSON • Itens até 400 KB
  54. 54. Amazon Elasticache • Memcached ou Redis gerenciado • Escala de 01 a vários nós • Self-healing (substitui instâncias com problemas) • Single AZ para nó de Memcache • Possível Multi-AZ com Redis
  55. 55. Mova algum workload Move… RDS DB Instância Ativa (Multi-AZ) Availability Zone ELB Balancer Amazon S3 Amazon CloudFrontUsuário ElastiCache DynamoDB Instâncias Web Amazon Route 53 • Conteúdo estático no Amazon S3 e Amazon CloudFront • session/estado para o Amazon DynamoDB • Cache dos dados no Amazon ElastiCache • Conteúdo dinâmico para o Cloud Front
  56. 56. Agora que a camada web está mais leve, vamos voltar ao começo da nossa conversa…
  57. 57. Auto Scaling!
  58. 58. Redimencionamento automático da quantidade de servidores Define o tamanho mínimo e máximo para a quantidade de servidores Use as métricas do CloudWatch para ativar o redimencionamento Use instâncias EC2 no modelo de On-demand ou Spot aws autoscaling create-auto-scaling-group --auto-scaling-group-name MeuGrupo --launch-configuration-name MinhaConfig --min-size 4 --max-size 200 --availability-zones us-west-2c, us-west-2b Auto Scaling
  59. 59. Domingo Segunda Terça Quarta Quinta Sexta Sábado Típico tráfego semanal da Amazon.com
  60. 60. Domingo Segunda Terça Quarta Quinta Sexta Sábado Capacidade Provisionada Típico tráfego semanal da Amazon.com
  61. 61. Novembro Tráfego em Novembro da Amazon.com
  62. 62. Capacidade Provisionada Novembro Tráfego em Novembro da Amazon.com
  63. 63. 76% 24% Novembro Capacidade Provisionada Tráfego em Novembro da Amazon.com
  64. 64. Novembro Tráfego em Novembro da Amazon.com
  65. 65. Com o Auto Scaling você consegue isso!
  66. 66. = um usuário = 100,000 usuários= 1,000,000 usuários
  67. 67. Usuários >500,000
  68. 68. Users > 500,000+ Availability Zone Amazon Route 53 User Amazon S3 Amazon CloudFront Availability Zone ELB Balancer DynamoDB RDS DB Instance Read Replica Web Instance Web Instance Web Instance ElastiCache RDS DB Instance Read Replica Web Instance Web Instance Web Instance ElastiCacheRDS DB Instance Standby (Multi-AZ) RDS DB Instance Active (Multi-AZ)
  69. 69. Users > 500,000+ Availability Zone Amazon Route 53 User Amazon S3 Amazon CloudFront Availability Zone ELB Balancer DynamoDB RDS DB Instance Read Replica Web Instance Web Instance Web Instance ElastiCache RDS DB Instance Read Replica Web Instance Web Instance Web Instance ElastiCacheRDS DB Instance Standby (Multi-AZ) RDS DB Instance Active (Multi-AZ)
  70. 70. Use automação
  71. 71. Gestão de aplicações com serviços da AWS Conveniência Controle Serviços de alto nível Faça você mesmo AWS Elastic Beanstalk AWS OpsWorks AWS CloudFormation Amazon EC2
  72. 72. AWS CodeDeploy • Deploys seu código para uma “frota” de instâncias EC2 • 1 – 10,000s de instâncias • Agenda updates automaticamente (múltipas AZs) • Grupo de Deployment e Aplicação descritos em arquivos no formato YAML • Pode referencias Auto Scaling Groups • Console de Gerenciamento da AWS, CLI, ou APIs • Pode ser usado com receitas de Chef ou scripts Puppet
  73. 73. Usuários >500,000+ • Monitoramento, métricas e logs • Se você não vai construir use de terceiros (SaaS) • O que os clientes estão dizendo? • Tente obter o máximo de performance de cada serviço ou componente
  74. 74. Métricas Agregadas Análise de logs Análise de performance externa Métrica de servidores
  75. 75. Ainda há mais melhorias possíveis se quebrarmos a aplicação em serviços
  76. 76. SOA O que é isto?
  77. 77. Muita coisa para ler! Não é o lugar para começar
  78. 78. Aqui é onde vc deve começar! Muita coisa para ler! Não é o lugar para começar
  79. 79. SOAing Mais serviços na mesma camada: • Trate-os separadamente e escale de maneira independente. A Amazon e a AWS fazem isso o tempo todo! Oferece flexibilidade e mais compreensão sobre cada componente.
  80. 80. Baixo acoplamento + SOA = vitória! Mas não reinvente a roda • Email • Filas • Transcodificação • Busca • Banco de dados • Monitoração • Métricas • Logging • Computação Amazon CloudSearch Amazon SQSAmazon SNS Amazon Elastic Transcoder Amazon SWFAmazon SES AWS Lambda
  81. 81. • Confiável (Multi-AZ) • Escalável (# mensages ilimitado) • Seguro (autenticação por fila) • Simples (APIs extremamente simples) Application Services – Amazon SQS SQS messages Get Message Instance Put Message Instance Amazon SNS Topic Publish Notification Queue Is Subscribed to Topic
  82. 82. Compute / Platform – AWS Lambda • Funções acionadas por eventos • JavaScript, Java… e Python • Gerenciado pela AWS • Escalabilidade implícita S3 Bucket Lambda Push: Event Notification DynamoDB Pull: DynamoDB Stream Kinesis Pull: Kinesis Stream
  83. 83. Desacoplamento te liberta! Quanto menos acoplamento, melhor eles escalam • Componentes independentes • Desenhe os componentes como caixa preta • Desacople as interações • Prefira o uso de serviços com tolerância e redundância S3 Bucket Lambda Push: Event Notification DynamoDB Pull: DynamoDB Stream Amazon Kinesis Pull: DynamoDB Stream SQS messages Get Message Instance Put Message Instance Amazon SNS Topic Publish Notification Queue Is Subscribed to Topic
  84. 84. Usuários>1,000,000
  85. 85. Usuários >1 milhão+ Com um milhão de usuários vamos precisar de um pouco de cada coisa: • Multi-AZ • Elastic Load Balancing entre camadas • Auto Scaling • Service Oriented Architecture • Forneça conteúdo de maneira inteligente (Amazon S3/CloudFront ) • Adicionando um cache na frente do banco de dados • Mova os estados das camadas de auto scaling
  86. 86. Users >1 million+ RDS DB Instance Active (Multi-AZ) Availability Zone ELB Balancer RDS DB Instance Read Replica RDS DB Instance Read Replica Web Instance Web Instance Web Instance Web Instance Amazon Route 53 User Amazon S3 Amazon CloudFront DynamoDB Amazon SQS ElastiCache Worker Instance Worker Instance Amazon CloudWatch Internal App Instance Internal App Instance Amazon SES Lambda
  87. 87. O próximo grande passo
  88. 88. Usuários >10,000,000
  89. 89. Usuários >5 milhões - 10 milhões Você deve começar a ter um gargalo no banco de dados, principalmente na escrita. Como você resolve isso? • Federação — separe os bancos por função • Sharding — separe um dataset entre vários servidores • Mova algumas funcionalidades para outros tipos de banco (NoSQL, Graph)
  90. 90. Federação de BD • Separe por função • Mais difícil de fazer com queries cross-function • E não funciona para tabelas gigantescas Foruns DB Usuários DB Produtos DB
  91. 91. Escalabiliade com Shards • Mais complicado para a aplicação • Sem limite para escalabilidade • Complexidade na operação • Shard por função ou por chaves • RDBMS ou NoSQL User ShardID 002345 A 002346 B 002347 C 002348 B 002349 A CBA
  92. 92. Use NoSQL • Mesma idéia da federação • Use serviços gerenciados da AWS como o DynamoDB Alguns casos de uso: • Placar de jogos online • Ingestão de logs ou clickstream • Dados temporários (carrinho de compras) • Dados quentes • Tabela para metadado ou pesquisa rápidaDynamoDB
  93. 93. Revisão rápida
  94. 94. Revisão • Use Multi-AZ • Faça uso de serviços que escalam — ELB, Amazon S3, Amazon SNS, Amazon SQS, Amazon SWF, Amazon SES, e outros. • Redundância em todos os níveis. • Comece com SQL. Sério! • Faça cache dentro e fora da sua infra. • Use ferramentas para automação.
  95. 95. Revisão • Tenha boas métricas, monitoramento e logs • Divida a mesma camada em serviços • Use Auto Scaling quando sua aplicação estive pronta • Não reinvente a roda • Mova para NoSQL se e quando fizer sentido
  96. 96. Adotando estas práticas devemos conseguir facilmente atender mais de 11 milhões de usuários.
  97. 97. Escalar sem limites • Plataforma de comércio eletrônico SaaS. • + 1000 lojas • Estamos em 14 países • + 12 milhões de pedidos em 2015 • + 2 bilhões de pageviews em 2015 “Vamos focar no objetivo da nossa empresa, nós desenvolvemos software. Infraestrutura não pode gastar nosso tempo.” - Marcelo Couto
  98. 98. O Desafio • Ter um sistema com uma infra- estrutura escalável para atender todos os clientes. SaaS. • Transformar um sistema grande em microserviços • Conseguir lançar versões sem downtime • Fazer o lançamento de versões ser frequente.
  99. 99. Solução • Mais de 40 serviços, cada um com a sua infraestrutura e repositórios de dados. • Todos os ambientes monitorados e com alarmes criados. • 1130 versões lançadas nos ultimos 30 dias.
  100. 100. AWS Re-Invent 2015 GameDay
  101. 101. Para o infinito...
  102. 102. Usuários >11 milhões Fazer iterações sobre os padrões discutidos aqui lhe dará capacidade para crescer para mais de 100 milhões de usuários.
  103. 103. • Ajuste fino da sua aplicação • Mais SOA • Ampliando de Multi-AZ para multi-região • Criar soluções mais personalizadas • Análise profunda da pilha da sua aplicação Usuários >11 milhões
  104. 104. Próximos passos? Leia! aws.amazon.com/documentation aws.amazon.com/architecture aws.amazon.com/start-ups Comece a usar AWS agora! aws.amazon.com/free/
  105. 105. Pergunte para: forums.aws.amazon.com aws.amazon.com/premiumsupport/ Sua representante dentro da AWS A Solutions Architect
  106. 106. Remember to complete your evaluations!Por favor, não se esqueça de responder a pesquisa!
  107. 107. Thank You!

×