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

Escalando para los primeros millones de usuarios

Julio Faerman
September 06, 2015

Escalando para los primeros millones de usuarios

La computación en nube ofrece varias ventajas, incluyendo la capacidad de cambiar el tamaño de la infraestructura bajo demanda. Si usted tiene un negocio y desea utilizar la nube, puede que se pregunte: "¿Por dónde empezar" En esta sesión usted comprenderá las mejores prácticas para cambiar el tamaño de sus recursos para el primer millón de usuarios. Le indicaremos cómo se deben usar varios servicios de AWS, como definir la arquitectura y la forma de cambiar el tamaño de su aplicación en la nube.

Julio Faerman

September 06, 2015
Tweet

More Decks by Julio Faerman

Other Decks in Technology

Transcript

  1. 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
  2. Regiones Oregon Ireland Tokyo N. California Sao Paulo Virginia AWS

    GovCloud Sydney Singapore Beijing Frankfurt
  3. Oregon Ireland Tokyo N. California Sao Paulo Virginia AWS GovCloud

    Sydney Singapore Beijing Zonas de Disponibilidad Frankfurt
  4. ¿La escalabilidad es administrado por AWS o el cliente ?

    Global AWS Amazon CloudFront, Amazon Route53, Amazon IAM Region AWS Amazon S3, Amazon DynamoDB, Amazon ELB* Zona de Disponiblidad Compartida Amazon EC2, Amazon ElastiCache**, Amazon RDS***
  5. Una primera arquitectura •  Primera Instancia [ t2.micro ] – 

    Aplicaciones Web –  Bases de datos –  herramientas administrativas –  … •  Uno Elastic IP •  DNS en Amazon Route 53 Amazon Route 53 Usuário == 1 Instance Elastic IP
  6. La escalabilidad vertical •  Enfoque más simple •  Familias de

    Instancias –  High I/O –  High Memory –  High CPU –  High storage –  Cluster Compute –  Dense Storage d2.8xlarge 36 CPU - 244 RAM - 24 x 2TB HDD
  7. Características de la Primera Arquitectura •  Hasta cientos de usuarios

    •  Punto único de error •  Sin redundancia o la alta disponibilidad •  Concurrency, Contention y Tolerancia a Fallos
  8. Segunda arquitectura, User > 10 •  Base de datos Relacional

    –  Escalabilidad Vertical •  Aplicaciones –  Escalabilidad Horizontal Amazon Route 53 Usuário Web Elastic IP DB
  9. ¿Por qué empezar con SQL ? •  Establecido , tecnología

    madura •  Código de lote , la comunidad, libros, herramientas , ... •  Normas generalizadas de escalabilidad Probablemente no lo hará “romper la base” en los primeros 10M usuarios.
  10. ¿Qué tendría que comenzar con NoSQL ? •  Los datos

    no relacionales ( gráficos , documentos , ... ) •  Baja latencia ( < 10 ms ) •  Requiere ( ! = Quieres ) base sin schema •  Gran ( > 10s TBs ) volumen de datos •  La ingesta de eventos en tiempo real complejos
  11. Tercer Arquitectura, User >100 Simplificar la administración de bases de

    datos con Amazon Relational Database Service •  MySQL •  PostgresSQL •  Oracle •  MS SQL •  Amazon Aurora Amazon Route 53 Usuário Web Elastic IP Amazon RDS
  12. Quarta Arquitectura, User > 1000 Alta Disponibilidad •  Elastic Load

    Balancer •  Instancias Web Redundantes –  Em outra Availability Zone •  RDS Multi-AZ sa-east-1a sa-east-1b Elastic Load Balancing Usuários Web Web RDS DB Mestre RDS DB 
 Secundário
  13. Esta arquitectura puede soportar hasta 10K-100K usuarios sa-east-1a sa-east-1b Elastic

    Load Balancing Usuários Web Web RDS DB Mestre RDS DB 
 Secundário
  14. 5a Arquitectura: replicas de lectura 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. Aligera la carga del servidor de aplicaciones y base de

    datos : a.  Guarde el contenido estático en Amazon S3 b.  Move sesiones HTTP a Amazon ElastiCache o Amazon DynamoDB c.  Distribuir contenido estático y dinámico para Amazon CloudFront Sexta arquitectura:
  16. 6a. El contenido estático en S3 Instâncias RDS DB Mestre

    Elastic Load Balancing superapp.js player34/avatar.jpg api/leaderboard
  17. Amazon ElastiCache •  Memcached y Redis como un servicio • 

    Autocuración (auto-sanación ) •  Muy baja latencia •  Cachés locales con Memcached •  Replica y almacena en caché persistentes Redis •  Detección automática simplifica el cliente sin clúster impacto de cambiar el tamaño de la aplicación
  18. 6b. Cache en memoria Instâncias RDS DB Mestre Elastic Load

    Balancing App Cliente html/js/css Dados de Usuários ElastiCache * HTTP Sessions * SELECT name FROM Planet
  19. Amazon DynamoDB •  Base de datos NoSQL como Servicio • 

    Gestionado por AWS •  Flujo aprovisionada •  Latencia baja ( ~ < 9ms ) y predecible •  Tolerante a fallos •  Documentos JSON •  400KB Items
  20. Instâncias RDS DB Mestre Elastic Load Balancing App Cliente html/js/css

    Dados de Usuários ElastiCache DynamoDB * HTTP Sessions •  Votes, Activities, … •  CQRS
  21. •  Caché “edge location” para la entrega rápida •  Reduce

    la carga en origen •  Transmisión de video •  Menor coste para el tráfico interno •  Optimizaciones para Amazon EC2 , Amazon S3 y Amazon ELB Ruta 53
  22. Instâncias RDS DB Mestre ELB App Cliente html/js/css Dados de

    Usuários ElastiCache DynamoDB CloudFront
  23. ¡Automatizar todo! •  Implementación de nuevos entornos •  Releases • 

    A/B Testing •  Blue/Green Deployment •  Rollback de versiones •  Gerenciamento de cuentas •  Automacion de configuracion •  Revisión de Logs
  24. User >500k+ •  Asegúrese de monitoreo , métricas y logs

    •  Evaluar cualitativamente la experiencia del usuario •  Comprender las características de funcionamiento de cada componente
  25. Reducción de acoplamiento •  Componentes Independientes •  El diseño como

    "cajas negras” •  Interacciones disociadas •  Servicios gestionados Serviço  A   Serviço  B   Serviço  A   Serviço  B   RPC   Filas  
  26. Servicios para Aplicaciones •  Email •  Queuing •  Transcoding • 

    Search •  Databases •  Monitoring •  Metrics •  Logging Amazon CloudSearch Amazon SQS Amazon SNS Amazon Elastic Transcoder Amazon SWF Amazon SES
  27. User >1mil+ •  Multi -AZ ++ •  Elástico de equilibrador

    de carga entre las capas •  Auto Scaling con varios grupos y alarmas •  Mejorias de arquitectura y microservicios •  Distribución eficiente de contenidos •  Cache de consultas frecuentes
  28. Oitava arquitectura??? 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
  29. 5M > User < 10M Escrita em Bases de datos

    relacionales •  Federation ~ separar por funcion •  Sharding ~ separar por shards •  Bancos de Dados noSQL (Grafos, Documientos, Clave-Valor, …)
  30. Federation •  Separación de funciones •  Consultas difíciles entre funciones

    •  Pospone la necesidad de sharding o NoSQL •  No soluciona problemas de volumen ForumsDB UsersDB ProductsDB
  31. Shards Horizontais •  Más complejo de implementar •  ORM puede

    ayudar •  No hay límites a la capacidad de ampliación •  Operación compleja •  Clave o función de Separación •  RDBMS o NoSQL User ShardID 002345 A 002346 B 002347 C 002348 B 002349 A Shard C Shard B Shard A
  32. La adopción de NoSQL •  Escalabilidad y / o la

    abstracción •  Evaluación cuantitativa •  Servicios Gestionados ( DynamoDB ) •  Los casos de uso : –  Rankings, Leaderboards e Dashboards –  La ingestión de datos en tiempo real –  Datos temporales –  Tablas problemáticas –  Tablas de metadatos
  33. •  Redundancia Multi -AZ en todas las capas •  Servicios

    Gestionados •  Prefiero empezar con SQL •  Optimizar cachés dentro y fuera de su infraestructura •  Automatizar Todo
  34. •  Mantenga buenas métricas, monitoreo y registros •  Descompone sus

    capas en los servicios más pequeños •  Utilice Auto Scaling cuando sea apropiado •  Reinventar su negocio, no la rueda •  Adoptar NoSQL , cuando sea necesario
  35. ¿Por dónde empezar ? Laboratórios Gratuitos http://aws.amazon.com/training/intro_series/ Nível de Uso

    Gratuito http://aws.amazon.com/free/ Treinamentos Presenciais http://aws.amazon.com/training/ Canal do YouTube https://www.youtube.com/user/AmazonWebServices
  36. ¿Por dónde empezar ? Documentações dos Serviços http://aws.amazon.com/documentation Guias de

    Soluções http://aws.amazon.com/whitepapers Centrais de Arquitetura http://aws.amazon.com/architecture Programa de Startups http://aws.amazon.com/start-ups