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

TDC Floripa 2016 - Arquitetura

Julio Faerman
May 15, 2016
110

TDC Floripa 2016 - Arquitetura

Julio Faerman

May 15, 2016
Tweet

Transcript

  1. Escalando  para  os  primeiros   milhões  de  usuários Julio  M.

     Faerman @jmfaerman TDC  Florianópolis 2016
  2. 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
  3. A  escalabilidade  é  gerenciada  pela   AWS  ou  pelo  cliente?

    Global AWS Amazon  CloudFront,  Amazon   Route53, Amazon  IAM Region AWS Amazon  S3,  Amazon   DynamoDB,  Amazon  ELB* Availability   Zone Compartilhada Amazon  EC2,  Amazon   ElastiCache**,  Amazon  RDS***
  4. Uma  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
  5. Escalabilidade Vertical • Abordagem mais simples • Familias  de  Instâncias

      – High  I/O   – High  Memory – High  CPU – High  storage – Cluster  Compute – Dense  Storage
  6. 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
  7. 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
  8. 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.
  9. http://yourdatafitsinram.com Instância vCPU RAM Storage Cost* t2.nano 5%+ 0.5 EBS

    $0.0065 t2.large 2*60%+ 8 EBS $0.104 m4.large 2 6.5 EBS $0.12 m4.4xlarge 16 64 EBS $0.958 c4.4xlarge 16 30 EBS $0.958 m4.10xlarge 40 160 EBS $2.394 g2.8xlarge 32+GPU 60 240 SSD $2.60 r3.8xlarge 32 244 640G SSD $2.66 d2.4xlarge 16 122 24T  HDD $2.76 d2.8xlarge 36 116 48T HDD $5.52 i2.8xlarge 32 244 6.4T SSD $6.82 x1.??? 100+ 2TB ??? ???
  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ário s 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ário s 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. Arquitetura[s]  Serverless Região STATIC Lambda Function API  Gateway DynamoDB Table

    S3 Bucket CloudFront Distribution Route53 Hosted  Zone DYNAMIC
  25. 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
  26. 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
  27. User  >500k+ • Assegure monitoramento, metricas e  logging • Avalie

     qualitativamente  a  experiência  do  usuário • Entenda as  características de  desempenho de   cada componente
  28. 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
  29. 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:
  30. 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
  31. 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
  32. 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,  …)
  33. 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
  34. 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
  35. 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
  36. 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
  37. Revisão Rápida • Mantenha boas  métricas,  monitoramento e  logs •

    Decomponha camadas em serviços menores • Use  AutoScaling quando for  adequado • Aproveite os serviços gerenciados • Adote NoSQL  se  e  quando for  necessário • Reinvente seu negócio,  não a  roda