Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Escalando para os primeiros 10 milhões

Julio Faerman
July 23, 2015
30

Escalando para os primeiros 10 milhões

Julio Faerman

July 23, 2015
Tweet

Transcript

  1. 1997 - Reed Hastings and fellow software executive Marc Randolph

    co-found Netflix to offer online movie rentals. 1999 - Netflix launches the subscription service, offering unlimited rentals for one low monthly subscription. 2000 - Netflix launches the personalized movie recommendation system that uses Netflix members’ ratings to accurately predict choices for all Netflix members. 2002 - Netflix makes its initial public offering (IPO on Nasdaq under the ticker “NFLX” with 600,000 members in the US.) 2005 - The number of Netflix members rises to 4.2 million. 2007 - Netflix introduces streaming, which allows members to instantly watch television shows and movies on their personal computers. 2008 - Netflix partners with consumer electronics companies to stream on the Xbox 360, Blu-ray disc players and TV set-top boxes. 2009 - Netflix partners with consumer electronics companies to stream on the PS3, Internet connected TVs and other Internet connected devices. 2010 - Netflix is available on the Apple iPad, iPhone and iPod Touch, the Nintendo Wii, and other Internet connected devices. Netflix launches its service in Canada. 2011 - Netflix launches throughout Latin America and the Caribbean. 2012 - Netflix became available in Europe including the United Kingdom, Ireland and in the Nordic Countries. Netflix wins its first Primetime Emmy Engineering Award. 2013 - Netflix expanded to the Netherlands. Netflix garners 31 primetime Emmy nominations including outstanding drama series, comedy series and documentary or nonfiction special for “House of Cards”, “Orange is the new black”, and “The Square” respectively. House of Cards won three Primetime Emmy Awards. Netflix was the first internet TV network nominated for the primetime Emmy. 2014 - In 2014 Netflix launched in 6 new countries in Europe (Austria, Belgium, France, Germany, Luxembourg and Switzerland). Netflix wins 7 creative Emmy Awards for House of Cards and Orange is the New Black. Netflix now has over 50 million members globally https://pr.netflix.com/WebClient/loginPageSalesNetWorksAction.do?contentGroupId=10477
  2. Regiões Oregon Ireland Tokyo N. California Sao Paulo Virginia AWS

    GovCloud Sydney Singapore Beijing Frankfurt
  3. Oregon Ireland Tokyo N. California Sao Paulo Virginia AWS GovCloud

    Sydney Singapore Beijing Zonas de Disponibilidade Frankfurt
  4. A escalabilidade é gerenciada pela AWS ou pelo cliente? Global

    AWS Amazon CloudFront, Amazon Route53, Amazon IAM Região AWS Amazon S3, Amazon DynamoDB, Amazon ELB* Zona de Disponiblidade Compartilhada Amazon EC2, Amazon ElastiCache**, Amazon RDS***
  5. Fica, vai ter auto-scaling. Mas na primeira arquitetura… •  Primeira

    Instância [t2.micro] –  Aplicação Web –  Banco de Dados –  Ferramentas Administrativas –  … •  Um Elastic IP •  DNS no Amazon Route 53 Amazon Route 53 Usuário == 1 Instance Elastic IP
  6. Escalabilidade Vertical •  Abordagem mais simples •  Familias de Instâncias

    –  High I/O –  High Memory –  High CPU –  High storage –  Cluster Compute –  Dense Storage •  Maior instância atualmente: d2.8xlarge 36 RAM - 244 CPU - 24 x 2TB HDD
  7. Características da Primeira Arquitetura •  Até centenas de usuários • 

    Ponto único de falhas •  Sem redundância ou alta disponibilidade •  Concorrência, Contenção e Carga
  8. Segunda arquitetura, User > 10 Diferenças de Escalabilidade: •  Banco

    de Dados Relacional –  Escalabilidade Vertical •  Aplicação –  Escalabilidade Horizontal Amazon Route 53 Usuário Web Elastic IP DB
  9. Por que começar com SQL? •  Tecnologia estabelecida e madura

    •  Muito código, comunidade, livros, ferramentas,... •  Padrões difundidos de escalabilidade Você provavelmente* não vai “quebrar o banco” nos primeiros 10M usuários.
  10. O que precisaria começar com NoSQL? •  Dados não relacionais

    (grafos, documentos,…) •  Baixa* latência (<10ms) •  Requer (!= deseja) banco de dados sem schema •  Grande* (> 10s TBs) volume de dados •  Ingestão de eventos complexos em tempo real
  11. Terceira Arquitetura, User >100 Simplifique a administração do banco de

    dados com o Amazon Relational Database Service •  MySQL •  PostgresSQL •  Oracle •  MS SQL •  Amazon Aurora Amazon Route 53 Usuário Web Elastic IP Amazon RDS
  12. Quarta Arquitetura, User > 1000 Alta Disponibilidade •  Elastic Load

    Balancer •  Instância Web Redundante –  Em outra Availability Zone •  RDS Multi-AZ sa-east-1a sa-east-1b Elastic Load Balancing Usuários Web Web RDS DB Mestre RDS DB 
 Secundário
  13. Esta arquitetura pode suportar até 10K-100K usuários sa-east-1a sa-east-1b Elastic

    Load Balancing Usuários Web Web RDS DB Mestre RDS DB 
 Secundário
  14. 5a Arquitetura: Lendo de Réplicas sa-east-1a sa-east-1b Elastic Load Balancing

    Usuários Web Web Web Web RDS DB Mestre RDS DB 
 Secundário RDS DB Replica RDS DB Replica Web Web Web Web RDS DB Replica RDS DB Replica INSERT SELECT SYNC ASYNC
  15. Aliviar a carga do servidor de aplicações e de banco

    de dados: a.  Armazenar o conteúdo estático no Amazon S3 b.  Mover as sessões HTTP no Amazon ElastiCache ou Amazon DynamoDB c.  Distribuir o conteúdo estático e dinâmico pelo Amazon CloudFront Sexta Arquitetura:
  16. 6a. Conteúdo Estático no S3 Instâncias RDS DB Mestre Elastic

    Load Balancing superapp.js player34/avatar.jpg api/leaderboard
  17. Conteúdo Estático no S3 Instâncias RDS DB Mestre Elastic Load

    Balancing superapp.js player34/avatar.jpg api/leaderboard App Cliente html/js/css Dados de Usuários
  18. Amazon ElastiCache •  Memcached e Redis como serviço •  Auto-recuperação

    (Self-healing) •  Baixíssima latência •  Caches locais com Memcached •  Caches replicados e persistentes com Redis •  O AWS Auto Discovery client simplifica o redimensionamento do cluster sem impacto para a aplicação
  19. 6b. Cache em Memória Instâncias RDS DB Mestre Elastic Load

    Balancing App Cliente html/js/css Dados de Usuários ElastiCache * HTTP Sessions * SELECT name FROM Planet
  20. Amazon DynamoDB •  Serviço de Banco de Dados NoSQL • 

    Gerenciado pela AWS •  Vazão provisionada •  Latência baixa (~< 9ms) e previsível •  Tolerante à falhas •  Documentos em JSON •  Items de até 400KB
  21. Cache em Memória Instâncias RDS DB Mestre Elastic Load Balancing

    App Cliente html/js/css Dados de Usuários ElastiCache DynamoDB * HTTP Sessions •  Votes, Activities, … •  CQRS
  22. Distribuição de Conteúdo •  Cache “na borda” para entrega rápida

    •  Reduz carga na origem •  Streaming de video •  Custo mais baixo para tráfego interno •  Otimizações para Amazon EC2, Amazon S3, ELB e Amazon Route 53
  23. Sexta Arquitetura: Instâncias RDS DB Mestre ELB App Cliente html/js/css

    Dados de Usuários ElastiCache DynamoDB CloudFront
  24. Automatize TUDO! •  Implantação de novos ambientes •  Lançamentos • 

    Testes A/B •  Implantação Blue/Green •  Rollback de versões •  Gerenciamento de contas AWS •  Automação de configuração •  Análise de logs
  25. Serviços de Gerenciamento de Aplicações Alto Nível de Abstração Faça

    Você Mesmo AWS Elastic Beanstalk AWS OpsWorks AWS CloudFormation Amazon EC2
  26. User >500k+ •  Assegure monitoramento, metricas e logging •  Avalie

    qualitativamente a experiência do usuário •  Entenda as características de desempenho de cada componente
  27. Redução de acoplamento •  Componentes Independentes •  Projete como “caixas

    pretas” •  Interações desacopladas •  Favoreça serviços gerenciados Serviço  A   Serviço  B   Serviço  A   Serviço  B   RPC   Filas  
  28. Serviços para Aplicações •  Email •  Queuing •  Transcoding • 

    Search •  Databases •  Monitoring •  Metrics •  Logging Amazon CloudSearch Amazon SQS Amazon SNS Amazon Elastic Transcoder Amazon SWF Amazon SES Serviços gerenciados para funcionalidades comums:
  29. User >1mil+ •  Multi-AZ++ •  Elastic Load Balancer entre camadas

    •  Auto Scaling com diversos grupos e alarmes •  Service Oriented Architecture e Microservices •  Distribuição eficiente de conteúdo •  Cache de consultas frequentes
  30. Oitava??? RDS DB Instance Active (Multi-AZ) Availability Zone Elastic Load

    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
  31. “Os serviços da AWS permitiram ao time desenvolver soluções de

    forma ágil, segura e escalável” l  99Taxis é o maior aplicativo para pedir táxis pelo celular no Brasil, com mais de 2 milhões de corridas/mês l  Presente em mais de 300 cidades, conta com mais de 100k taxistas cadastrados (mais da metade da frota nacional) “por ser o mais difundido serviço de cloud, facilita a contratação e aproveita a expertise de uma comunidade imensa”. - Ricardo Lazaro, Lead Developer
  32. O Desafio •  Suportar rápido crescimento de usuários e corridas,

    mantendo baixo custo de infraestrutura •  Manter/Monitorar o ecossistema de aplicações com procedimentos, métricas e alarmes confiáveis •  Agilidade no desenvolvimento de novas funcionalidades
  33. Solução Auto Scaling group Auto Scaling group Auto Scaling group

    Elastic Load Balancing Elastic Load Balancing Elastic Load Balancing MySQL PostgreSQL PostgreSQL PostgreSQL PostgreSQL SNS SQS SQS SQS
  34. 5M > User < 10M Contenção de escrita em bancos

    de dados relacionais •  Federation ~ separar os bancos por função •  Sharding ~ separar os bancos por nós •  Bancos de Dados Não Relacionais (Grafos, Documentos, Chave-Valor, …)
  35. Federação de Dados •  Separação por função •  Dificulta consultas

    entre funções •  Posterga a necessidade de sharding ou NoSQL •  Não resolve problemas de volume ForumsDB UsersDB ProductsDB
  36. Shards Horizontais •  Mais complexidade para a aplicação •  ORM

    pode ajudar •  Sem limites para escalabilidade •  Operação complexa •  Separação por função ou chave •  SGBDR ou NoSQL User ShardID 002345 A 002346 B 002347 C 002348 B 002349 A Shard C Shard B Shard A
  37. Adotando NoSQL •  Escalabilidade e/ou Abstração •  Avaliação Quantitativa • 

    Serviços Gerenciados (DynamoDB) •  Casos de uso: –  Rankings, Leaderboards e Dashboards –  Ingestão de dados em tempo real –  Dados temporários –  Tabelas problemáticas –  Tabelas de metadados
  38. Revisão Rápida •  Redundância Multi-AZ, em todas camadas •  Serviços

    Gerenciados - ELB, Amazon S3, Amazon SNS, Amazon SQS, Amazon SWF, Amazon SES e outros. •  Prefira começar com SQL •  Otimize caches dentro e fora de sua infraestrutura •  Automatize Tudo
  39. Revisão Rápida •  Mantenha boas métricas, monitoramento e logs • 

    Decomponha camadas em serviços menores •  Use AutoScaling se e quando for adequado •  Reinvente seu negócio, não a roda •  Adote NoSQL se e quando for necessário
  40. Por onde começar? Comunidade no Brasil http://www.awshub.com.br Laboratórios Gratuitos http://aws.amazon.com/training/intro_series/

    Nível de Uso Gratuito http://aws.amazon.com/free/ Treinamentos Presenciais http://aws.amazon.com/training/ Canal do YouTube https://www.youtube.com/user/AmazonWebServices
  41. E depois? Documentações dos Serviços http://aws.amazon.com/documentation Guias de Soluções http://aws.amazon.com/whitepapers

    Centrais de Arquitetura http://aws.amazon.com/architecture Programa de Startups http://aws.amazon.com/start-ups