Escalando para os primeiros 10 milhoes de usuarios

110
© 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ários 10 11

Transcript of Escalando para os primeiros 10 milhoes de usuarios

Page 1: Escalando para os primeiros 10 milhoes de usuarios

© 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

Page 2: Escalando para os primeiros 10 milhoes de usuarios

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Ari Dias, Sr Mgr, Partner Solutions Architect • Solutions Architect (2012)

Page 3: Escalando para os primeiros 10 milhoes de usuarios

AWS Summit 2016

WHO

ARE

YOU?

Page 4: Escalando para os primeiros 10 milhoes de usuarios

Como escalar a sua aplicação?

Page 5: Escalando para os primeiros 10 milhoes de usuarios

http://i.telegraph.co.uk/multimedia/archive/02674/CLIMBER_2674482b.jpg

Page 6: Escalando para os primeiros 10 milhoes de usuarios
Page 7: Escalando para os primeiros 10 milhoes de usuarios

Muita coisa para

ler!

Lugar de onde

você não

deveria

começar!

Page 8: Escalando para os primeiros 10 milhoes de usuarios

Auto Scaling

…é uma ferramenta e um destino.

Page 9: Escalando para os primeiros 10 milhoes de usuarios

Não é uma única solução que

resolverá todos os problemas.

Page 10: Escalando para os primeiros 10 milhoes de usuarios

Então, por onde devemos começar?

Page 11: Escalando para os primeiros 10 milhoes de usuarios

Vamos começar pelo

básico…

Page 12: Escalando para os primeiros 10 milhoes de usuarios

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õesEU (Frankfurt)

INDIA (2016)

Page 13: Escalando para os primeiros 10 milhoes de usuarios

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 DisponibilidadeEU (Frankfurt)

INDIA (2016)

Page 14: Escalando para os primeiros 10 milhoes de usuarios

Edge locations

Page 15: Escalando para os primeiros 10 milhoes de usuarios

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

KeysConfiguration Monitoring Dedicated

INFRASTRUCTURE

SERVICES

RegionsAvailability

ZonesCompute Storage

DatabasesSQL, NoSQL,

CachingCDNNetworking

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

Page 16: Escalando para os primeiros 10 milhoes de usuarios

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

KeysConfiguration Monitoring Dedicated

INFRASTRUCTURE

SERVICES

RegionsAvailability

ZonesCompute Storage

DatabasesSQL, NoSQL,

CachingCDNNetworking

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

Page 17: Escalando para os primeiros 10 milhoes de usuarios

Solutions

Architects

Page 18: Escalando para os primeiros 10 milhoes de usuarios

Solutions Architects

Page 19: Escalando para os primeiros 10 milhoes de usuarios

APPLICATION

SERVICES

Queuing

Notifications

Search

Orchestration

Email

SECURITY &

MANAGEMENT

Virtual Private

Networks

Identity &

Access

Encryption

KeysConfiguration Monitoring Dedicated

INFRASTRUCTURE

SERVICES

RegionsAvailability

ZonesCompute Storage

DatabasesSQL, NoSQL,

CachingCDNNetworking

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

Page 20: Escalando para os primeiros 10 milhoes de usuarios

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

Page 21: Escalando para os primeiros 10 milhoes de usuarios

Vamos começar com …

Page 22: Escalando para os primeiros 10 milhoes de usuarios

1 usuário

Você

Page 23: Escalando para os primeiros 10 milhoes de usuarios

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árioAmazon

Route 53

Page 24: Escalando para os primeiros 10 milhoes de usuarios

“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

Page 25: Escalando para os primeiros 10 milhoes de usuarios

“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

Page 26: Escalando para os primeiros 10 milhoes de usuarios

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ânciaInstância

EC2

Elastic IP

UsuárioAmazon

Route 53

Page 27: Escalando para os primeiros 10 milhoes de usuarios

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ânciaInstância

EC2

Elastic IP

UsuárioAmazon

Route 53

Page 28: Escalando para os primeiros 10 milhoes de usuarios

Usuários >1

Page 29: Escalando para os primeiros 10 milhoes de usuarios

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árioAmazon

Route 53

Page 30: Escalando para os primeiros 10 milhoes de usuarios

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

Page 31: Escalando para os primeiros 10 milhoes de usuarios

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

Page 32: Escalando para os primeiros 10 milhoes de usuarios

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

Page 33: Escalando para os primeiros 10 milhoes de usuarios

To NoSQL, or not to NoSQL?

Page 34: Escalando para os primeiros 10 milhoes de usuarios

Alguém pode não gostar,

mas…

Page 35: Escalando para os primeiros 10 milhoes de usuarios

Comece com banco de dados SQL

Page 36: Escalando para os primeiros 10 milhoes de usuarios

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.

Page 37: Escalando para os primeiros 10 milhoes de usuarios

AH HA! Você

disse massivo?”

Eu terei volumes

massivos de

dados!

Page 38: Escalando para os primeiros 10 milhoes de usuarios

> 5 TB em um ano?

Workload de dados incrivelmente

intensos??

OK!Você pode precisa de NoSQL!

Page 39: Escalando para os primeiros 10 milhoes de usuarios

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”

Page 40: Escalando para os primeiros 10 milhoes de usuarios

Usuários >100

Page 41: Escalando para os primeiros 10 milhoes de usuarios

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árioAmazon

Route 53

Page 42: Escalando para os primeiros 10 milhoes de usuarios

Usuários >1000

Page 43: Escalando para os primeiros 10 milhoes de usuarios

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

UserAmazon

Route 53

Page 44: Escalando para os primeiros 10 milhoes de usuarios

Elastic Load Balancing

• Em alta disponibilidade

• 1 - 65535

• Health checks

• Redirecionamento por

sessões

• SSL

• Monitoramento

• Logs

Page 45: Escalando para os primeiros 10 milhoes de usuarios

horizontal

ve

rtic

al

Page 46: Escalando para os primeiros 10 milhoes de usuarios
Page 47: Escalando para os primeiros 10 milhoes de usuarios

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

Page 48: Escalando para os primeiros 10 milhoes de usuarios

E quanto à performance e

eficiência?

Page 49: Escalando para os primeiros 10 milhoes de usuarios

Diminuindo a carga…

Page 50: Escalando para os primeiros 10 milhoes de usuarios

RDS DB Instance

Active (Multi-AZ)

Availability Zone

ELB

Balancer

Amazon S3

Amazon

CloudFront

Amazon

Route 53User

Mova algum workload

Web Instances

• Conteúdo estático para o Amazon S3 e Amazon CloudFront

Mova…

Page 51: Escalando para os primeiros 10 milhoes de usuarios

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

Page 52: Escalando para os primeiros 10 milhoes de usuarios

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

Page 53: Escalando para os primeiros 10 milhoes de usuarios

Amazon CloudFront

Res

po

nse

Tim

e

Serv

er L

oad

Res

po

nse

Ti

me

Serv

er

Load

Res

po

nse

Ti

me

Serv

er

Load

Sem CDN CDN para

Conteúdo

Estático

CDN para

Conteúdo

Estático e

Dinâmico

020406080

8:0

0 A

M

9:0

0 A

M

10:0

0 A

M

11:0

0 A

M

12:0

0 P

M

1:0

0 P

M

2:0

0 P

M

3:0

0 P

M

4:0

0 P

M

5:0

0 P

M

6:0

0 P

M

7:0

0 P

M

8:0

0 P

M

9:0

0 P

MVo

lum

e d

e

da

do

s (

Gb

ps

)

Page 54: Escalando para os primeiros 10 milhoes de usuarios

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

ElastiCacheRDS DB Instance

Ativo (Multi-AZ)

Availability Zone

ELB

Balancer

Amazon S3

Amazon

CloudFront

Amazon

Route 53Usuário

ElastiCache DynamoDB

Instâncias Web

Page 55: Escalando para os primeiros 10 milhoes de usuarios

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

Page 56: Escalando para os primeiros 10 milhoes de usuarios

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

Page 57: Escalando para os primeiros 10 milhoes de usuarios

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

Page 58: Escalando para os primeiros 10 milhoes de usuarios

Agora que a camada web está

mais leve, vamos voltar ao

começo da nossa conversa…

Page 59: Escalando para os primeiros 10 milhoes de usuarios

Auto Scaling!

Page 60: Escalando para os primeiros 10 milhoes de usuarios

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

Page 61: Escalando para os primeiros 10 milhoes de usuarios

Domingo Segunda Terça Quarta Quinta Sexta Sábado

Típico tráfego semanal da Amazon.com

Page 62: Escalando para os primeiros 10 milhoes de usuarios

Domingo Segunda Terça Quarta Quinta Sexta Sábado

Capacidade Provisionada

Típico tráfego semanal da Amazon.com

Page 63: Escalando para os primeiros 10 milhoes de usuarios

Novembro

Tráfego em Novembro da Amazon.com

Page 64: Escalando para os primeiros 10 milhoes de usuarios

Capacidade Provisionada

Novembro

Tráfego em Novembro da Amazon.com

Page 65: Escalando para os primeiros 10 milhoes de usuarios

76%

24%Novembro

Capacidade Provisionada

Tráfego em Novembro da Amazon.com

Page 66: Escalando para os primeiros 10 milhoes de usuarios

Novembro

Tráfego em Novembro da Amazon.com

Page 67: Escalando para os primeiros 10 milhoes de usuarios

Com o Auto Scaling

você consegue isso!

Page 68: Escalando para os primeiros 10 milhoes de usuarios

= um usuário

= 100,000 usuários= 1,000,000 usuários

Page 69: Escalando para os primeiros 10 milhoes de usuarios

Usuários >500,000

Page 70: Escalando para os primeiros 10 milhoes de usuarios

Users > 500,000+

Availability Zone

Amazon

Route 53User

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

InstanceWeb

Instance

Web

Instance

ElastiCacheRDS DB Instance

Standby (Multi-AZ)RDS DB Instance

Active (Multi-AZ)

Page 71: Escalando para os primeiros 10 milhoes de usuarios

Users > 500,000+

Availability Zone

Amazon

Route 53User

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

InstanceWeb

Instance

Web

Instance

ElastiCacheRDS DB Instance

Standby (Multi-AZ)RDS DB Instance

Active (Multi-AZ)

Page 72: Escalando para os primeiros 10 milhoes de usuarios

Use automação

Page 73: Escalando para os primeiros 10 milhoes de usuarios

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

CloudFormationAmazon EC2

Page 74: Escalando para os primeiros 10 milhoes de usuarios

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

Page 75: Escalando para os primeiros 10 milhoes de usuarios

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

Page 76: Escalando para os primeiros 10 milhoes de usuarios

Métricas

Agregadas

Análise de

logs

Análise de

performance

externa

Métrica de

servidores

Page 77: Escalando para os primeiros 10 milhoes de usuarios

Ainda há mais melhorias

possíveis se quebrarmos a

aplicação em serviços

Page 78: Escalando para os primeiros 10 milhoes de usuarios

SOA

O que é isto?

Page 79: Escalando para os primeiros 10 milhoes de usuarios
Page 80: Escalando para os primeiros 10 milhoes de usuarios

Muita coisa para

ler!

Não é o lugar

para começar

Page 81: Escalando para os primeiros 10 milhoes de usuarios

Aqui é onde vc

deve começar!

Muita coisa para

ler!

Não é o lugar

para começar

Page 82: Escalando para os primeiros 10 milhoes de usuarios

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.

Page 83: Escalando para os primeiros 10 milhoes de usuarios

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

CloudSearchAmazon SQSAmazon SNS

Amazon Elastic

TranscoderAmazon SWFAmazon SES

AWS Lambda

Page 84: Escalando para os primeiros 10 milhoes de usuarios

• 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

InstancePut

MessageInstance

Amazon SNS Topic

Publish

Notification

Queue Is Subscribed

to Topic

Page 85: Escalando para os primeiros 10 milhoes de usuarios

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

Page 86: Escalando para os primeiros 10 milhoes de usuarios

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

InstancePut

MessageInstance

Amazon SNS Topic

Publish

Notification

Queue Is Subscribed

to Topic

Page 87: Escalando para os primeiros 10 milhoes de usuarios

Usuários>1,000,000

Page 88: Escalando para os primeiros 10 milhoes de usuarios

Usuários >1 milhão+

Com um milhão de usuários vamos precisar de um poucode 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

Page 89: Escalando para os primeiros 10 milhoes de usuarios

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 53User

Amazon S3

Amazon

CloudFront

DynamoDB

Amazon SQS

ElastiCache

Worker

Instance

Worker

Instance

Amazon

CloudWatch

Internal App

Instance

Internal App

Instance Amazon SES

Lambda

Page 90: Escalando para os primeiros 10 milhoes de usuarios

O próximo grande passo

Page 91: Escalando para os primeiros 10 milhoes de usuarios

Usuários >10,000,000

Page 92: Escalando para os primeiros 10 milhoes de usuarios

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)

Page 93: Escalando para os primeiros 10 milhoes de usuarios

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

Page 94: Escalando para os primeiros 10 milhoes de usuarios

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

Page 95: Escalando para os primeiros 10 milhoes de usuarios

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

Page 96: Escalando para os primeiros 10 milhoes de usuarios

Revisão rápida

Page 97: Escalando para os primeiros 10 milhoes de usuarios

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.

Page 98: Escalando para os primeiros 10 milhoes de usuarios

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

Page 99: Escalando para os primeiros 10 milhoes de usuarios

Adotando estas práticas

devemos conseguir

facilmente atender mais de

11 milhões de usuários.

Page 100: Escalando para os primeiros 10 milhoes de usuarios

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

Page 101: Escalando para os primeiros 10 milhoes de usuarios

O Desafio

• Ter um sistema com uma infra-estrutura escalável para atendertodos 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.

Page 102: Escalando para os primeiros 10 milhoes de usuarios

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 nosultimos 30 dias.

Page 103: Escalando para os primeiros 10 milhoes de usuarios

AWS Re-Invent 2015 GameDay

Page 104: Escalando para os primeiros 10 milhoes de usuarios

Para o infinito...

Page 105: Escalando para os primeiros 10 milhoes de usuarios

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.

Page 106: Escalando para os primeiros 10 milhoes de usuarios

• 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

Page 107: Escalando para os primeiros 10 milhoes de usuarios

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/

Page 108: Escalando para os primeiros 10 milhoes de usuarios

Pergunte para:

forums.aws.amazon.com

aws.amazon.com/premiumsupport/

Sua representante dentro da AWS

A Solutions Architect

Page 109: Escalando para os primeiros 10 milhoes de usuarios

Remember to complete

your evaluations!Por favor, não se esqueça

de responder a pesquisa!

Page 110: Escalando para os primeiros 10 milhoes de usuarios

Thank You!