Escalando a sus primeros 10 millones de usuarios

79
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Escalando a sus primeros 10 millones de usuarios Raúl Frías, Solutions Architect AWS

Transcript of Escalando a sus primeros 10 millones de usuarios

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

Escalando a sus primeros 10

millones de usuarios

Raúl Frías, Solutions Architect AWS

¿Cómo escalamos?

Demasiado por

leer!

No es lo

primero que

queremos

hacer

Auto Escalamiento

…una herramienta y destino.

No es la solución mágica

para todos los problemas

¿Qué necesitamos entonces?

Primero lo primero

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)

RegionesEU (Frankfurt)

Korea (Seoul)

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

Korea (Seoul)

Ubicaciones EDGE

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

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

Bloques básicos AWS

Servicios con Alta Disponbilidad y

Tolerancia a Fallas incluido

Alta Disponibilidad

construida con una

arquitectura correcta

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

Así que empezamos…

1 usuario

Usted

1 Usuario

• Amazon Route 53 para DNS

• Una sola IP elástica

• Una instancia Amazon EC2

• Paquete Completo

• Servidor Web

• Base de Datos

• Administración

• Etcétera …

Instancia

Amazon

EC2

IP Elástica

UsuarioAmazon

Route 53

“Vamos a necesitar más ….”

• Enfoque sencillo

• Sacar provecho de PIOPS

• Instancias con Alto I/O

• Instancias con más RAM

• Instancias con más CPU

• Instancias con mas GB/TB

• Sencillo cambiar de “modelo”

c4.8xlarge

m3.2xlarge

t2.micro• Este enfoque tiene un límite

1 Usuario

• Potencialmente

podríamos llegar a

cientos o miles de

usuarios

• Sin redundancia

• Sin Alta Disponibilidad

• Demasiados huevos en la

misma canasta

EC2

Instance

Elastic IP

UsuarioAmazon

Route 53

Usuarios >1

Usuarios > 1

Primero separemos algunos

componentes:

• Servidor Web

• Base de Datos

Utilizar una base de datos

como servicio?

Instancia

Web

Database

Instance

Elastic IP

UsuarioAmazon

Route 53

Usted mismo Servicio Administrado

Base de Datos en

Amazon EC2

Cualquier base de

datos corriendo en

Amazon EC2

Traiga su propia

licencia (BYOL)

Amazon

DynamoDB

Base de datos NoSQL

administrada

Escalabilidad

transparente

Sin necesidad de

administrar

Amazon RDS

Microsoft SQL Server

Oracle

MySQL

PostgreSQL

MariaDB

Amazon Aurora

BYOL ó Licencia

Incluida

Amazon

Redshift

Servicio de

Datawarehouse

masivamente paralelo

Escalable a PB´s

Veloz, poderoso y fácil

de escalar

Opciones de Base de Datos

Amazon Aurora

• Almacenamiento escalable automátizado

(hasta 64 TB)

• Hasta 15 réplicas

• Backups continuos incrementales a

Amazon S3

• Compatible con MySQL

¿Usar NoSQL, ó no usar

NoSQL?

Empezar con una Base de

Datos Tradicional

¿Por qué empezar con bases de datos

relacionales?• Establecidas y tecnologías probadas

• Ecosistema existente, código, comunidades, libros y

herramientas

• No romperan sus bases de datos relacionales con sus

primeros miles de usuarios. *

*A menos qué estés haciendo algo muy PECULIAR con los datos o cuentas con una MASIVA cantidad de datos

…aún asi SQL tiene un lugar en tu aplicación

¿Por qué empezar con NoSQL?

• Aplicaciones con ultra baja latencia

• Enfoque en metadatos de datos

• Datos no relacionales

• Necesito* base de datos sin esquema

• Masivas cantidades de datos (TB´s)

• Rápida ingesta de datos(miles de registros/seg)

Usuarios >100

Usuarios>100

Primero separemos algunos

componentes:

• Servidor Web

• Base de Datos

• Utilize RDS para hacer

su vida más sencilla

Instancia

Web

IP Elástica

BD RDS

UsuarioAmazon

Route 53

Usuarios >1000

Usuarios >1000

Soluciones la alta disponibiliidad

y tolerancia a fallas:

Una instancia web adicional

• En otra Zona de

Disponibilidad

RDS Multi-AZ

Elastic Load Balancing (ELB)

Instancia

Web

RDS DB Instance

Active (Multi-AZ)

Availability Zone Availability Zone

Instancia

Web

RDS DB Instance

Standby (Multi-AZ)

ELB

Balancer

UsuarioAmazon

Route 53

Elastic Load Balancing

• Alta Disponibilidad

Integrada

• 1 - 65535

• Estado de Salúd

• Sesiones

• SSL

• Monitoreo

• Logs

horizontal

ve

rtic

al

Usuarios > 10,000s–100,000s

RDS DB Instance

Active (Multi-AZ)

Availability Zone Availability Zone

RDS DB Instance

Standby (Multi-AZ)

ELB

Balancer

RDS DB Instance

Read Replica

RDS DB Instance

Read Replica

RDS DB Instance

Read Replica

RDS DB Instance

Read Replica

Instancia

Web

Instancia

Web

Instancia

Web

Instancia

Web

Instancia

Web

Instancia

Web

Instancia

Web

Instancia

Web

Amazon

Route 53Usuario

¿Y el

rendimiento y eficiencia?

Quitar peso de encima

RDS DB Instance

Active (Multi-AZ)

Availability Zone

ELB

Balancer

Amazon S3

Amazon

CloudFront

Amazon

Route 53Usuario

Movamos la carga…

Instancias Web

• contenido estático de Amazon

S3 a Amazon Cloudfront

Mueve

Amazon Simple Storage Service (S3)

• Almacenamiento de Objetos

• Alta durabilidad

• Óptimo para contenido estático

• “Sin límite” de escalamiento

• Objetos de hasta 5TB

• Cifrado opcional

Amazon CloudFront

• “Cacheo” y distribución de contenido

• Libera carga al origen

• Contenido Dinámico y Estático

• Realizar “Streaming”

• Certificados SSL

• TTL´s bajos configurables

• Optimizado para AWS

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

No CDN CDN for Static

Content

CDN for Static &

Dynamic Content

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

M

Vo

lum

e o

f D

ata

D

eli

ve

red

(G

bp

s)

Movamos la carga…

• contenido estático de

Amazon S3 a Amazon

Cloudfront

• Estádo de sesión a Amazon

DynamoDB

• Utilizar cache para BD con

Amazon Elasticache

Mueve

RDS DB Instance

Active (Multi-AZ)

Availability Zone

ELB

Balancer

Amazon S3

Amazon

CloudFront

Amazon

Route 53Usuario

ElastiCache DynamoDB

Instancias Web

Amazon Elasticache

• Memcached ó Redis Administrado

• Escalamiento de 1 a varios nodos

• Auto-sanable

• Velocidad de respuesta abajo de

10ms

• Memcache local en una ZA

• Multi-AZ posible con Redis

Nuestra capa web mucho más

ligera

Regresemos al inicio….

Auto Escalamiento

Crecimiento/reducción automática de clusters de cómputo

Definición de mínimos y máximos

Métricas de Cloudwatch son gatillo de auto escalamiento

Instancias bajo demanda o spot

aws autoscaling create-auto-scaling-group

--auto-scaling-group-name MyGroup

--launch-configuration-name MyConfig

--min-size 4

--max-size 200--availability-zones us-west-2c, us-west-2b

Auto Escalamiento

Domingo Lunes Martes Miércoles Jueves Viernes Sábado

Semana típica tráfico Amazon.com

Domingo Lunes Martes Miércoles Jueves Viernes Sábado

Semana típica tráfico Amazon.com

Capacidad Provisionada

Noviembre

Tráfico Noviembre Amazon.com

Capacidad Provisionada

Noviembre

Tráfico Noviembre Amazon.com

Tráfico Noviembre Amazon.com

76%

24%Noviembre

Capacidad Provisionada

Tráfico Noviembre Amazon.com

Noviembre

¡Auto escalamiento te permite

hacer esto!

Usuarios > 500,000+

Availability Zone

Amazon

Route 53Usuario

Amazon S3

Amazon

CloudFront

Availability Zone

ELB

Balancer

DynamoDB

RDS DB Instance

Read Replica

Instancias

Web

Instancias

Web

Instancia

Web

ElastiCache RDS DB Instance

Read Replica

Instancia

WebInstancia

Web

Instancia

Web

ElastiCacheRDS DB Instance

Standby (Multi-AZ)RDS DB Instance

Active (Multi-AZ)

Usuarios >500,000+

• Monitoreo, métricas y logs

• Si no lo puede construir, ¡utilize a

terceros!

• ¿Qué dicen mis clientes?

• Extraiga el máximo rendimiento de

cada servicio/componente.

Aún podemos mejorar

nuestra capa web/app si la

seguimos separando

SOA

¿Qué quiere decir esto?

SOA en Práctica

Servicios en capas/módulos

independientes

• Administrados y Escalados

independientemente

Amazon y AWS hacen esto

constantemente

Ofrece flexibilidad y entendimiento de

cada capa/función

SOA + Desacoplar = Agilidad

¡NO REINVENTE LA RUEDA!

• Correo Electrónico

• Sistema de colas

• Transcoding

• Búsqueda

• Bases de Datos

• Monitoreo

• Métricas

• Logs

• Cómputo

Amazon

CloudSearchAmazon SQSAmazon SNS

Amazon Elastic

TranscoderAmazon SWFAmazon SES

AWS Lambda

• Confiable (Multi-AZ)

• Escalable (mensajes ilimitados)

• Seguro (autenticación)

• Sencillo (APIs simples)

Servicios Aplicación – Amazon SQS

SQS

messages

Get

Message

InstanciaPut

MessageInstancia

Amazon SNS Topic

Publish

Notification

Queue Is Subscribed

to Topic

Cómputo / Plataforma – AWS Lambda

• Código/Funciones disparado

por eventos

• NodeJS, Java y Python

• Administrado

• Escalamiento implícito S3 Bucket

Lambda

Push: Event

Notification

DynamoDB

Pull: DynamoDB

Stream

Kinesis

Pull:

Kinesis Stream

Usuarios

>1,000,000

Usuarios > 1M+

Llegar al millón y más allá requerirá un poco de los previos

temas platicados:

• Multiples Zonas de Disponibilidad

• Elastic Load Balancing entre capas

• Auto Escalamiento

• Arquitectura SOA

• Entrega de Contenido Optimizada

• Usar caché para Base de Datos

• Estado de Sesiones desacoplado

Usuarios > 1M+

RDS DB Instance

Active (Multi-AZ)

Availability Zone

ELB

Balancer

RDS DB Instance

Read Replica

RDS DB Instance

Read Replica

Instancia

Web

Instancia

Web

Instancia

Web

Instancia

Web

Amazon

Route 53Usuario

Amazon S3

Amazon

CloudFront

DynamoDB

Amazon SQS

ElastiCache

Worker

Instance

Worker

Instance

Amazon

CloudWatch

Internal App

Instance

Internal App

Instance Amazon SES

Lambda

Los siguientes pasos

Usuarios

>10,000,000

Usuarios > 5M - 10M

Potencialmente estará encontrando contensión y

problemas con el master de la base de datos.

¿Cómo resolverlo?

• Federación — Separar multiples BD por función propósito

• Sharding—Separar por rangos/grupos

• Bases de datos especializadas (NoSQL, Graph)

¡Con todo lo revisado

fácilmente podríamos

escalar a

10+ millones de usuarios!

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

Jose Luis Padilla

Director de Proyectos

Abril 6, 2016

Caso de Éxito - IATAI

Acerca de IATAI

• Grupo empresarial integrado por compañías líderes en los sectores

como: seguros, salud, reaseguros, turismo, salud y tecnología.

• Cuenta con varias unidades de negocio sobre 4 categorías:

asistencia en viajes internacionales a clientes , un gateway de pagos, la

construcción de soluciones móviles y soluciones de comercio

electrónico.

• Cuentan con un equipo de I+D enfocado en conocer las necesidades

de sus clientes desde el estudio de los hábitos del consumidor.

Flexibilidad:

La necesidad de

dejar atrás lo convencional

IATAI necesitaba de una infraestructura segura que garantizara flexibilidad en la

expansión de servicios y soluciones al tiempo que la continuaba creciendo como

compañía.

“La razón principal era y es que IATAI es una organización dinámica y

necesitábamos que toda la oferta de servicios de TI pudiera

acompañar de manera ágil y oportuna las iniciativas de negocio.”

Luis Eduardo Tobián,

CTO

AWS: La solución para

una infraestructura

elástica y segura

Mi reto más grande al frente del área de TI, es asegurar que la

disponibilidad de los servicios sea la que nuestros clientes

demandan. Al pensar en lo que adquirimos, yo no hablaría

solamente de servidores, sino de toda una infraestructura

con el software base y las aplicaciones para que

existiera un pleno funcionamiento de nuestros servicios,

cumpliendo con los estándares que mis clientes esperan.”

Nuestra Infraestructura

- Contamos con un modelo IaaS, dentro del cual se establecen mecanismos

bajo demanda, lo que permite a la infraestructura crecer elásticamente de

forma segura, confiable y flexible cuando se presenten picos de uso.

- Además, con un modelo de alta disponibilidad que alcanza el 99.95%

mensual, proporciona una capacidad de procesamiento de hasta 50

peticiones por segundo y posee una alta tolerancia a fallos basados en

Amazon Web Services.

- Actualmente prestamos servicios a una base de más de 3 millones de

clientes con más de 40,000 transacciones por mes.

Avanxo agrega valor

“Claramente son la compañía que tiene más

conocimiento de los servicios que ofrece Amazon. Son

muy buenos aliados para ayudar a cumplir los objetivos de

negocio. Son asertivos y manejan bien la relación en

tiempos de respuesta.”

Luis Eduardo Tobian, CTO

Muchas Gracias / Thank You / Obrigado