O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Escalando para sus primeros
10 Millones de usuarios
Henry Alvarado
Solutions Architect, AWS Colombia
Experience Day Cali
Entonces, cómo escalo?
Demasiado para leer
No es aquí
donde se
quiere
empezar
Demasiado para leer
Auto Scaling es una
herramienta y un objetivo.
No es una única cosa que
arregla todo.
Qué necesitamos primero?
Algunos conceptos básicos…
AWS Global Infrastructure
16 Regions
42 Availability Zones
70 Edge Locations
Service Breadth & Depth
TECHNICAL &
BUSINESS
SUPPORT
Account
Management
Support
Professional
Services
Solutions
Architects...
AWS building blocks
Servicios altamente disponibles y
tolerante a fallas desde su concepción
Servicios altamente disponibl...
Entonces, empecemos desde el
día 1 con el primer usuario
(usted)
Día 1, usuario 1
• Una única instancia Amazon
EC2
– El stack completo en este host
• Aplicación web
• Base de datos
• Admi...
“Vamos a necesitar una caja mas grande”
• Solución más simple
• Posibilidad de usar PIOPS
• Instancias para alto I/O
• Ins...
“Vamos a necesitar una caja mas grande”
c3.8xlarge
m3.2xlarge
t2.micro
• Solución más simple
• Posibilidad de usar PIOPS
•...
Día 1, usuario 1
• Potencialmente podríamos
atender de algunos cientos
a algunos miles
dependiendo de la
complejidad de la...
Día 2, usuario > 1
Primero, separemos
nuestro host único en
más de uno
• Web
• Base de datos
– Usar un servicio de base de...
No administrada Administrada
Base de datos en
Amazon EC2
Su decisión de rodar la
base de datos en
Amazon EC2
Traiga su pro...
Pero, como escojo la tecnología
de DB que necesito? SQL?
NoSQL?
A algunos no les va a gustar
esto, pero…
Inicie con bases de datos SQL
Por qué comenzar con SQL?
• Es una tecnología establecida y bien conocida
• Existen cientos de libros, comunidades, herram...
Ajá! Usted dijo
“cantidades
masivas” y yo voy
a tener cantidades
masivas!
Si su uso es tal que va a
generar TB (> 5) de datos en su
primer año, O va a tener un flujo
de trabajo de intensidad de
da...
Por qué otras razones necesitaría NoSQL?
• Aplicaciones de muy baja latencia
• Datasets basados en metadata
• Data altamen...
Usuario > 100
Primero, separemos
nuestro único host en
más de uno:
• Web
• Base de datos
– Use Amazon RDS para
hacer su vi...
Usuario > 1000
Después, vamos a atacar
nuestra falta de failover y
problemas de
redundancia:
• Elastic Load Balancing
(ELB...
Escalando esto horizontalmente y
verticalmente nos va a llevar
bastante lejos:
(decenas a cientos de miles)
Usuario > 10,000s–100,000s
RDS DB Instance
Active (Multi-AZ)
Availability Zone Availability Zone
RDS DB Instance
Standby (...
Esto nos llevará lejos, pero nos
importa también el performance
y la eficiencia, entonces vamos
a mejorarlo un poco más:
RDS DB Instance
Active (Multi-AZ)
Availability Zone
ELB Balancer
Amazon S3
Amazon
CloudFront
Amazon
Route 53
User
Vamos a ...
RDS DB Instance
Active (Multi-AZ)
Availability Zone
ELB Balancer
Amazon S3
Amazon
CloudFront
Amazon
Route 53
User
ElastiCa...
Vamos a aligerar la carga en nuestras
instancias web y base de datos:
• Mover el contenido estático de la
instancia web a ...
Ahora que nuestra capa web es
mucho más ligera, podemos
volver al inicio de nuestra
charla…
Auto Scaling!
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Tráfico típico semanal a Amazon.com
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Tráfico típico semanal a Amazon.com
Provisioned capacity
November
Tráfico en noviembre a Amazon.com
Provisioned capacity
November
Tráfico en noviembre a Amazon.com
Tráfico en noviembre a Amazon.com
76%
24%
Provisioned capacity
November
Tráfico en noviembre a Amazon.com
November
Auto Scaling
les permite hacer esto!
Usuario > 500,000+
Availability Zone
Amazon
Route 53
User
Amazon S3
Amazon
CloudFront
Availability Zone
ELB Balancer
Dynam...
Use automatización
Administrar su infraestructura va a ser cada día una parte
más importante de su tiempo. Use herramienta...
Soluciones de administración de aplicaciones
AWS
Convenience Control
Servicios de alto nivel Hágalo usted mismo
AWS
Elasti...
Usuario > 500,000+
Potencialmente usted va a empezar a tener problemas con la
velocidad y el performance de sus aplicacion...
Métricas a
nivel de host
Métricas
agregadas por
nivel
Performance
externo del sitio
Análisis de log
Hay mejoras adicionales a
ser realizadas al quebrar
su capa de web /
aplicación
SOA (Service Oriented Architecture)
• Mover servicios a sus propias capas o módulos. Trate cada uno
de ellos como piezas c...
Desacoplamiento + SOA = ganador
No reinvente la rueda.
Ejemplos:
• Email
• Queuing
• Transcoding
• Search
• Databases
• Mo...
El desacoplamiento te libera!
Entre más desacoplados, más escalan
– Componentes independientes
– Diseñe todo como una caja...
Usuario > 1 millón +
Llegar a millones y más, va a requerir un poco de todo lo
que previamente hemos conversado:
• Multi-A...
Usuario > 1 millón+
RDS DB Instance
Active (Multi-AZ)
Availability Zone
ELB Balancer
RDS DB Instance
Read Replica
RDS DB I...
Los siguientes grandes pasos
Usuario > 5 millones – 10 millones
Potencialmente en este punto comenzará a tener
problemas con su base de datos sobre con...
Un breve resumen
Resumen
• Infraestructura Multi-AZ
• Use servicios que escalan por si solos – ELB, Amazon S3,
Amazon SNS, Amazon SQS, Amaz...
Resumen
• Asegúrese de tener buenas herramientas para
métricas/monitoreo/logs.
• Separe capas en servicios individuales (S...
Poner todo esto junto significa
que podrá fácilmente ser
capaz de manejar 10+
millones de usuarios!
Hasta el infinito...
Usuario > 10 millones
Iterando sobre estos
patrones vistos aquí, podrá
llevar su aplicación a más
de 100 millones de usuar...
Gracias!
Escalando para sus primeros 10 millones de usuarios
Próximos SlideShares
Carregando em…5
×

Escalando para sus primeros 10 millones de usuarios

238 visualizações

Publicada em

Escalando para sus primeros 10 millones de usuarios

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Escalando para sus primeros 10 millones de usuarios

  1. 1. Escalando para sus primeros 10 Millones de usuarios Henry Alvarado Solutions Architect, AWS Colombia Experience Day Cali
  2. 2. Entonces, cómo escalo?
  3. 3. Demasiado para leer
  4. 4. No es aquí donde se quiere empezar Demasiado para leer
  5. 5. Auto Scaling es una herramienta y un objetivo. No es una única cosa que arregla todo.
  6. 6. Qué necesitamos primero?
  7. 7. Algunos conceptos básicos…
  8. 8. AWS Global Infrastructure 16 Regions 42 Availability Zones 70 Edge Locations
  9. 9. Service Breadth & Depth 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 MANAGEMENT TOOLS 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 Keys Configuration Monitoring Dedicated INFRASTRUCTURE SERVICES Regions Availability Zones Compute Storage O b j e c t s , B l o c k s , F i l e s Databases SQL, NoSQL, Caching CDNNetworking 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
  10. 10. AWS building blocks Servicios altamente disponibles y tolerante a fallas desde su concepción Servicios altamente disponibles con una arquitectura correcta  Amazon CloudFront  Amazon Route53  Amazon S3  Amazon DynamoDB  Elastic Load Balancing  Amazon SQS  Amazon SNS  Amazon SES  Amazon SWF  …  Amazon EC2  Amazon Elastic Block Store  Amazon RDS  Amazon VPC
  11. 11. Entonces, empecemos desde el día 1 con el primer usuario (usted)
  12. 12. Día 1, usuario 1 • Una única instancia Amazon EC2 – El stack completo en este host • Aplicación web • Base de datos • Administración • Entre otros… • Una única IP pública • Amazon Route 53 para DNS Amazon EC2 instance Elastic IP Amazon Route 53 User
  13. 13. “Vamos a necesitar una caja mas grande” • Solución más simple • Posibilidad de usar PIOPS • Instancias para alto I/O • Instancias con alta memoria • Instancias con alto CPU • Instancias con alto almacenamiento • Fácil cambio de tamaño de instancia • Eventualmente llegará al límite c3.8xlarge m3.2xlarge t2.micro
  14. 14. “Vamos a necesitar una caja mas grande” c3.8xlarge m3.2xlarge t2.micro • Solución más simple • Posibilidad de usar PIOPS • Instancias para alto I/O • Instancias con alta memoria • Instancias con alto CPU • Instancias con alto almacenamiento • Fácil cambio de tamaño de instancia • Eventualmente llegará al límite
  15. 15. Día 1, usuario 1 • Potencialmente podríamos atender de algunos cientos a algunos miles dependiendo de la complejidad de la aplicación • No hay failover • No hay redundancia • Muchos huevos en la misma canasta EC2 Instance Elastic IP Amazon Route 53 User
  16. 16. Día 2, usuario > 1 Primero, separemos nuestro host único en más de uno • Web • Base de datos – Usar un servicio de base de datos? Web Instance Database Instance Elastic IP Amazon Route 53 User
  17. 17. No administrada Administrada Base de datos en Amazon EC2 Su decisión de rodar la base de datos en Amazon EC2 Traiga su propia licencia (BYOL) Amazon DynamoDB Servicio de base de datos NoSQL usando almacenamiento SSD Escalabilidad simple con cero administración Amazon RDS Microsoft SQL Server, Oracle, MySQL, o PostgreSQL como servicio administrado Licenciamiento flexible: BYOL o licencia incluida Amazon Redshift Servicio de DW de gran escala, masivamente paralelo. Rápido, poderoso y fácil de escalar Opciones de base de datos
  18. 18. Pero, como escojo la tecnología de DB que necesito? SQL? NoSQL?
  19. 19. A algunos no les va a gustar esto, pero…
  20. 20. Inicie con bases de datos SQL
  21. 21. Por qué comenzar con SQL? • Es una tecnología establecida y bien conocida • Existen cientos de libros, comunidades, herramientas, código y más. • Patrones claros de escalabilidad. • Usted no va a derrumbar una BD SQL con sus primeros 10 millones de usuarios. No, en realidad no lo hará* *A menos que usted esté haciendo algo MUY fuera de lo común o tenga cantidades MASIVAS de datos, pero inclusive así, SQL tendrá un espacio en su stack.
  22. 22. Ajá! Usted dijo “cantidades masivas” y yo voy a tener cantidades masivas!
  23. 23. Si su uso es tal que va a generar TB (> 5) de datos en su primer año, O va a tener un flujo de trabajo de intensidad de datos increíbles, usted podría entonces necesitar NoSQL
  24. 24. Por qué otras razones necesitaría NoSQL? • Aplicaciones de muy baja latencia • Datasets basados en metadata • Data altamente no relacional • Necesidad de constructs de datos sin esquema* • Cantidades masivas de datos (de nuevo, en el orden de TB) • Rápida ingestión de datos (miles de records/seg) *Necesidad != “Es más fácil desarrollar sin esquemas”
  25. 25. Usuario > 100 Primero, separemos nuestro único host en más de uno: • Web • Base de datos – Use Amazon RDS para hacer su vida más fácil Web instance Elastic IP RDS DB instance Amazon Route 53 User
  26. 26. Usuario > 1000 Después, vamos a atacar nuestra falta de failover y problemas de redundancia: • Elastic Load Balancing (ELB) • Otra instancia web – En otra zona de disponibilidad • RDS Multi-AZ Web Instance RDS DB Instance Active (Multi-AZ) Availability Zone Availability Zone Web Instance RDS DB Instance Standby (Multi-AZ) ELB Balancer Amazon Route 53 User
  27. 27. Escalando esto horizontalmente y verticalmente nos va a llevar bastante lejos: (decenas a cientos de miles)
  28. 28. Usuario > 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 Web Instance Web Instance Web Instance Web Instance Web Instance Web Instance Web Instance Web Instance Amazon Route 53 User
  29. 29. Esto nos llevará lejos, pero nos importa también el performance y la eficiencia, entonces vamos a mejorarlo un poco más:
  30. 30. RDS DB Instance Active (Multi-AZ) Availability Zone ELB Balancer Amazon S3 Amazon CloudFront Amazon Route 53 User Vamos a aligerar la carga en nuestras instancias web y base de datos: • Mover el contenido estático de la instancia web a Amazon S3 y Amazon CloudFront • Mover la sesiones/estado y crear un caché para la base de datos usando Amazon ElastiCache o Amazon DynamoDB Movamos las cargas Web Instances
  31. 31. RDS DB Instance Active (Multi-AZ) Availability Zone ELB Balancer Amazon S3 Amazon CloudFront Amazon Route 53 User ElastiCache DynamoDB Web Instances Vamos a aligerar la carga en nuestras instancias web y base de datos: • Mover el contenido estático de la instancia web a Amazon S3 y Amazon CloudFront • Mover la sesiones/estado y crear un caché para la base de datos usando Amazon ElastiCache o Amazon DynamoDB Movamos las cargas
  32. 32. Vamos a aligerar la carga en nuestras instancias web y base de datos: • Mover el contenido estático de la instancia web a Amazon S3 y Amazon CloudFront • Mover la sesiones/estado y crear un caché para la base de datos usando Amazon ElastiCache o Amazon DynamoDB • Mover el contenido dinámico del ELB a Amazon CloudFront RDS DB Instance Active (Multi-AZ) Availability Zone ELB Balancer Amazon S3 Amazon CloudFront Amazon Route 53 User ElastiCache DynamoDB Web Instances Movamos las cargas
  33. 33. Ahora que nuestra capa web es mucho más ligera, podemos volver al inicio de nuestra charla…
  34. 34. Auto Scaling!
  35. 35. Sunday Monday Tuesday Wednesday Thursday Friday Saturday Tráfico típico semanal a Amazon.com
  36. 36. Sunday Monday Tuesday Wednesday Thursday Friday Saturday Tráfico típico semanal a Amazon.com Provisioned capacity
  37. 37. November Tráfico en noviembre a Amazon.com
  38. 38. Provisioned capacity November Tráfico en noviembre a Amazon.com
  39. 39. Tráfico en noviembre a Amazon.com 76% 24% Provisioned capacity November
  40. 40. Tráfico en noviembre a Amazon.com November
  41. 41. Auto Scaling les permite hacer esto!
  42. 42. Usuario > 500,000+ Availability Zone Amazon Route 53 User 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 Instance Web Instance Web Instance ElastiCacheRDS DB Instance Standby (Multi-AZ) RDS DB Instance Active (Multi-AZ)
  43. 43. Use automatización Administrar su infraestructura va a ser cada día una parte más importante de su tiempo. Use herramientas de automatización para tareas repetitivas: • Herramientas para administrar sus recursos AWS • Herramientas para administrar el software y la configuración en sus instancias. • Automatice el análisis de logs y acciones de los usuarios.
  44. 44. Soluciones de administración de aplicaciones AWS Convenience Control Servicios de alto nivel Hágalo usted mismo AWS Elastic Beanstalk AWS OpsWorks AWS CloudFormation Amazon EC2
  45. 45. Usuario > 500,000+ Potencialmente usted va a empezar a tener problemas con la velocidad y el performance de sus aplicaciones: • Asegúrese de tener monitoreo, métricas, alarmas y logs. – Si no puede construir una solución interna, use un Third-party como Nagios, NewRelic, entre otros… • Ponga atención a cuantos clientes hablan bien de su aplicación vs. cuantos no lo hacen y use esta información. • Intente exprimir la mayor cantidad de performance de cada uno de los servicios o componentes que use.
  46. 46. Métricas a nivel de host Métricas agregadas por nivel Performance externo del sitio Análisis de log
  47. 47. Hay mejoras adicionales a ser realizadas al quebrar su capa de web / aplicación
  48. 48. SOA (Service Oriented Architecture) • Mover servicios a sus propias capas o módulos. Trate cada uno de ellos como piezas completamente separadas de su infraestructura y escálelas de forma independiente. • Amazon.com y AWS hacen esto de forma extensiva! Ofrece flexibilidad y un mejor entendimiento de cada uno de los componentes.
  49. 49. Desacoplamiento + SOA = ganador No reinvente la rueda. Ejemplos: • Email • Queuing • Transcoding • Search • Databases • Monitoring • Metrics • Logging • Compute Amazon CloudSearch Amazon SQSAmazon SNS Amazon Elastic Transcoder Amazon SWFAmazon SES Si alguien ya creó un servicio que cumple sus necesidades, úselo en vez de construirlo. AWS Lambda
  50. 50. El desacoplamiento te libera! Entre más desacoplados, más escalan – Componentes independientes – Diseñe todo como una caja negra – Desacople interacciones – Favorezca servicios que ya ofrecen redundancia y escalabilidad, en vez de crear sus propios. S3 Bucket Lambda Push: Event Notification DynamoDB Pull: DynamoDB Stream Amazon Kinesis Pull: DynamoDB Stream SQS messages Get Message Instance Put Message Instance Amazon SNS Topic Publish Notification Queue Is Subscribed to Topic
  51. 51. Usuario > 1 millón + Llegar a millones y más, va a requerir un poco de todo lo que previamente hemos conversado: • Multi-AZ • Elastic Load Balancing entre capas • Auto Scaling • Service Oriented Architecture • Sirva contenido de forma inteligente (S3/CloudFront) • Caché de base de datos • Remueva el estado de capas que auto escalan
  52. 52. Usuario > 1 millón+ 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 53 User Amazon S3 Amazon CloudFront DynamoDB Amazon SQS ElastiCache Worker Instance Worker Instance Amazon CloudWatch Internal App Instance Internal App Instance Amazon SES Lambda
  53. 53. Los siguientes grandes pasos
  54. 54. Usuario > 5 millones – 10 millones Potencialmente en este punto comenzará a tener problemas con su base de datos sobre conexiones de escrita en la instancia master. Cómo lo puede resolver? • Federation — separar en múltiples BDs dependiendo de la función (Foros, Usuarios, Productos.. ) • Sharding — separar los datos en múltiples hosts • Mover algunas funcionalidades a otros tipos de bases de datos (NoSQL, Grafos)
  55. 55. Un breve resumen
  56. 56. Resumen • Infraestructura Multi-AZ • Use servicios que escalan por si solos – ELB, Amazon S3, Amazon SNS, Amazon SQS, Amazon SWF, Amazon SES, entre otros. • Construya con redundancia en todos los niveles. • Empiece con SQL. En serio! • Use caché de datos tanto dentro como fuera de su infraestructura. • Use herramientas de automatización en su infraestructura.
  57. 57. Resumen • Asegúrese de tener buenas herramientas para métricas/monitoreo/logs. • Separe capas en servicios individuales (SOA). • Use Auto Scaling cuando esté listo para ello. • No intente reinventar la rueda. • Cámbiese a NoSQL siempre y cuando tenga sentido.
  58. 58. Poner todo esto junto significa que podrá fácilmente ser capaz de manejar 10+ millones de usuarios!
  59. 59. Hasta el infinito...
  60. 60. Usuario > 10 millones Iterando sobre estos patrones vistos aquí, podrá llevar su aplicación a más de 100 millones de usuarios
  61. 61. Gracias!

×