Slide 1

Slide 1 text

Escalando  para  os  primeiros   milhões  de  usuários Julio  M.  Faerman @jmfaerman TDC  Florianópolis 2016

Slide 2

Slide 2 text

Como  escalar do  usuário  1  ao  10M? OBS:  Sem  desperdícios!

Slide 3

Slide 3 text

Em  quanto  tempo?

Slide 4

Slide 4 text

~3  Dias ~3500 instâncias ?

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

A  escalabilidade  é  gerenciada   pela    AWS  ou  pelo  cliente?

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Qual  é  o  mínimo?

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Escalabilidade Vertical • Abordagem mais simples • Familias  de  Instâncias   – High  I/O   – High  Memory – High  CPU – High  storage – Cluster  Compute – Dense  Storage

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

É melhor começar com   SQL  ou NoSQL?

Slide 16

Slide 16 text

Prefira  começar  com  SQL!

Slide 17

Slide 17 text

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.

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

Disponibilidade e   Tolerância a  Falhas Eficiência e  Desempenho

Slide 26

Slide 26 text

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:  

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

http://improve.dk/pushing-­the-­limits-­of-­amazon-­s3-­upload-­performance/

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

Distribuição  de  Conteúdo ?????

Slide 35

Slide 35 text

Menor latência  E menor custo! Usuário

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

Sexta Arquitetura: Instâncias RDS DB Mestre ELB App Cliente html/js/css Dados de Usuários ElastiCache DynamoDB CloudFront

Slide 38

Slide 38 text

E  o  Auto  Scaling?!?

Slide 39

Slide 39 text

Domingo Segunda Terça Quarta Quinta Sexta Sábado Semana Típica no  Amazon.com

Slide 40

Slide 40 text

Domingo Segunda Terça Quarta Quinta Sexta Sábado Semana Típica no  Amazon.com Capacidade Provisionada?

Slide 41

Slide 41 text

Novembro Novembro no  Amazon.com

Slide 42

Slide 42 text

Capacidade? Novembro Novembro no  Amazon.com

Slide 43

Slide 43 text

Novembro no  Amazon.com 76% 24% Capacidade Provisionada Novembro

Slide 44

Slide 44 text

Novembro no  Amazon.com Novembro

Slide 45

Slide 45 text

Sétima Arquitetura: Região Zona de Disponibilidade Zona de Disponibilidade DNS HTTP STATIC DYNAMIC SQL NoSQL CACHE ALARM

Slide 46

Slide 46 text

Lambda Backend SNS Cognito Kinesis Dynamo S3 Mobile   SDK API  Gateway

Slide 47

Slide 47 text

Arquitetura[s]  Serverless Região STATIC Lambda Function API  Gateway DynamoDB Table S3 Bucket CloudFront Distribution Route53 Hosted  Zone DYNAMIC

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

User  >500k+ • Assegure monitoramento, metricas e  logging • Avalie  qualitativamente  a  experiência  do  usuário • Entenda as  características de  desempenho de   cada componente

Slide 53

Slide 53 text

Métricas do Host Métricas Agregadas Análise de Log Percepção de   Desempenho

Slide 54

Slide 54 text

Decomposição e   Desacoplamento

Slide 55

Slide 55 text

http://martinfowler.com/articles/microservices.html

Slide 56

Slide 56 text

http://techblog.netflix.com/2013/01/announcing-­ribbon-­tying-­netflix-­mid.html

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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:

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

Etapas Seguintes

Slide 62

Slide 62 text

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,  …)

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

Revisão

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

No content

Slide 71

Slide 71 text

Obrigado!  Preguntas? Julio  M.  Faerman @jmfaerman