Successfully reported this slideshow.
José PapoAWSTech Evangelist@josepapo
Então, como ter escalabilidade na Nuvem?
Auto-Scaling???
Começando pelo básico primeiro
US-WEST (Oregon)EU-WEST (Ireland)ASIA PAC (Tokyo)US-WEST (N. California)SOUTH AMERICA (Sao Paulo)US-EAST (Virginia)AWS Gov...
US-WEST (Oregon)EU-WEST (Ireland)ASIA PAC (Tokyo)US-WEST (N. California)SOUTH AMERICA (Sao Paulo)US-EAST (Virginia)AWS Gov...
Compute StorageAWS Global InfrastructureDatabaseApp ServicesDeployment & AdministrationNetworking
Compute StorageAWS Global InfrastructureDatabaseApp ServicesDeployment & AdministrationNetworkingAmazonCloudWatch AWS IAM ...
Vamos então começar pelo diaum, um usuário ( você! ):
Dia Um, Um Usuário• Uma instancia EC2– Stack completo• AplicaçãoWeb• Banco de Dados• Gestão• Etc.• Um Elastic IP• Route53 ...
“Precisamos de uma máquina maior”• Modo mais simples• Pode alavancar uso de PIOPs• Instancias High I/O• Instancias High Me...
“Precisamos de uma máquina maior”• Modo mais simples• Pode alavancar uso de PIOPs• Instancias High I/O• Instancias High Me...
Dia Um, Um Usuário:• Pode potencialmente atenderalgumas centenas até algunsmilhares de usuáriosdependendo da instancia,com...
Dia Um, Um Usuário:• Pode potencialmente atenderalgumas centenas até algunsmilhares de usuáriosdependendo da instancia,com...
Dia Dois, Usuário >1:Vamos primeiroseparar os recursos emmais de uma instancia.• Instancia Web• Instancia de Banco WebInst...
Gestão Própria Serviço GerenciadoBanco de Dadosno Amazon EC2Sua escolha de BDno Amazon EC2Bring Your OwnLicense (BYOL)Amaz...
Que tecnologia usar?SQL? NoSQL?
Depende do seu casode uso, mas…
Comece com aquilo que formais simples para você
Vamos começar com oAmazon RDS nesse exemplo
Usuários >100:WebInstanceElastic IPRDS DBInstanceAmazonRoute 53UserVamos primeiro separaros recursos em mais deuma instanc...
Usuários > 1000:Agora vamos endereçara falta de failover eredundancia:• Elastic Load Balancer• Mais uma InstanciaWeb– Em o...
Escalandohorizontalmente everticalmente podemoschegar bem longe( 10s-100s de milhares )
Usuários >10ks-100ks:RDS DB InstanceActive (Multi-AZ)Availability Zone Availability ZoneRDS DB InstanceStandby (Multi-AZ)E...
Isso realmente nos levarálonge, mas queremostambém performance eeficiência.Vamos limpar umpouco mais
Mova a carga:Diminua a carga nasinstanciasWeb e BD:• Mova conteúdo estático dainstancia Web para o S3 eCloudFront• Mova es...
Agora que nossas camadasWeb e de BD estão maisleves vamos voltar ao inícioda nossa discussão…
Auto-Scaling!!!
Escalabilidade automática deinstancias de acordo com políticasdefinidasTrigger auto-scalingpolicyas-create-auto-scaling-gr...
Tráfego em Novembro na Amazon.comNovember
Provisioned capacityNovemberTráfego em Novembro na Amazon.com
76%24%Provisioned capacityNovemberTráfego em Novembro na Amazon.com
NovemberTráfego em Novembro na Amazon.comAuto Scaling
É possível fazer ainda maismelhorias deixando suascamadas ainda mais leves eorientadas a serviços
SOA = Service Oriented Architecture
Baixo acoplamente te liberta!• Reduza o acoplamento para escalar ainda mais– Componentes independentes– Projete-os como um...
Baixo acoplamento + SOA = Win!Exemplos:• Email• Filas• Transcoding de Vídeos• Busca• Bancos de Dados• Monitoramento• Métri...
Baixo acoplamento + SOAExemplo
Imagine um site/app paraupload e compartilhamentode fotos entre usuários
Exemplo usando filas demensagem SQS
S3 BucketFor IngestUserSNS TopicRRS S3Bucket toServecontent toCloudFrontS3 BucketFororiginalsCloudFrontDownloadDistributio...
Exemplo usando serviçoSimple Workflow (SWF)
S3 BucketFor IngestUserRRS S3Bucket toServecontent toCloudFrontS3 BucketFororiginalsCloudFrontDownloadDistributionAuto sca...
Usuários >1milhão+:Chegar em um milhão e além requer uma arquitetura queutilize os recursos vistos anteriormente:• Multi-A...
Usuários >1milhão+:RDS DB InstanceActive (Multi-AZ)Availability ZoneElastic LoadBalancerRDS DB InstanceRead ReplicaRDS DB ...
Próximos passos
Usuários > 10milhões+:Você provavelmente encontrará dificuldades com suabase de dados nas escritas no BD Master.Como resol...
Sharding• Mais complexo para acamada de aplicação• Complexidadeoperacional• Shard por função ouchaveUser ShardID002345 A00...
Mover funcionalidades para NoSQL• Soluções NoSQL usualmente possuemescalabilidade horizontal transparente• Use serviços ge...
Você também poderá ter problemas relacionados avelocidade ou performance.• Tenha soluções de monitoração/métricas/logs– Se...
HOSTLEVELMETRICSAGGREGATELEVELMETRICSLOGANALYSISEXTERNALSITEPERFORMANCE
AWS Marketplace & Partners AWS podem ajudarSaiba mais em: aws.amazon.com/marketplace
Usuários > 10 milhões+:Gerenciar sua infraestrutura será fundamental comnúmero de instancias e recursos utilizados emcresc...
Soluções de Gestão de Aplicações da AWSElastic Beanstalk OpsWorks CloudFormation EC2Conveniência ControleServiços de Alto ...
Host Based Configuration ManagementDois grandes players:– Opscode Chef– PuppetLabs Puppet• São parecidos em recursos• Use ...
Breve revisão sobreescalabilidade
Pense em redundância emtodas as camadas
Multi-AZ na sua infraestrutura
Faça uso de serviços prontos( ELB, S3, SNS, SQS, SWF,SES, etc )
Use SQL ou NoSQL deacordo com os requisitos deseu negócio
Crie uma arquiteturaorientada a serviços ( SOA )
Use Auto-scaling quandoprecisar crescer ou diminuirautomaticamente
Use ferramentas de automaçãosempre que possível
Tenha soluções demétricas/monitoração/logs
Não reinvente a roda!
Pensando nesses elementosvocê certamente poderáatender dezenas e até centenasde milhões de usuários!
aws.amazon.com/pt/architectureSaiba mais em…
RECURSOS TÉCNICOSawshub.com.br
OBRIGADO!aws.typepad.com/brasilslideshare.net/AmazonWebServicesLATAMJosé PapoAWS Tech Evangelist@josepapo
Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários
Upcoming SlideShare
Loading in …5
×

Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

1,396 views

Published on

Link para o vídeo gravado do webinar: https://vimeo.com/68720156

Published in: Technology

Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

  1. 1. José PapoAWSTech Evangelist@josepapo
  2. 2. Então, como ter escalabilidade na Nuvem?
  3. 3. Auto-Scaling???
  4. 4. Começando pelo básico primeiro
  5. 5. US-WEST (Oregon)EU-WEST (Ireland)ASIA PAC (Tokyo)US-WEST (N. California)SOUTH AMERICA (Sao Paulo)US-EAST (Virginia)AWS GovCloud (US)ASIA PAC(Sydney)RegiõesASIA PAC(Singapore)
  6. 6. US-WEST (Oregon)EU-WEST (Ireland)ASIA PAC (Tokyo)US-WEST (N. California)SOUTH AMERICA (Sao Paulo)US-EAST (Virginia)AWS GovCloud (US)ASIA PAC(Sydney)Zonas de DisponibilidadeASIA PAC(Singapore)
  7. 7. Compute StorageAWS Global InfrastructureDatabaseApp ServicesDeployment & AdministrationNetworking
  8. 8. Compute StorageAWS Global InfrastructureDatabaseApp ServicesDeployment & AdministrationNetworkingAmazonCloudWatch AWS IAM AWSCloudFormationAmazon ElasticBeanstalkAWSDataPipelineAWSOpsWorksAmazonCloudSearchAmazon SQSAmazonSNSAmazonElasticTranscoderAmazon SWFAmazon SESAmazonDynamoDBAmazon RDSAmazonElastiCacheAmazonRedShiftAWS StorageGatewayAmazon S3AmazonGlacierAmazonCloudFrontAmazonEC2AmazonEMRAmazonVPCAmazonRoute 53AWSDirectConnect
  9. 9. Vamos então começar pelo diaum, um usuário ( você! ):
  10. 10. Dia Um, Um Usuário• Uma instancia EC2– Stack completo• AplicaçãoWeb• Banco de Dados• Gestão• Etc.• Um Elastic IP• Route53 para DNSEC2InstanceElastic IPAmazonRoute 53User
  11. 11. “Precisamos de uma máquina maior”• Modo mais simples• Pode alavancar uso de PIOPs• Instancias High I/O• Instancias High Memory• Instancias High CPU• Instancias High Storage• Fácil de mudar tamanhos deinstancias• Vai eventualmente ter limitaçõeshi1.4xlargem2.4xlargem1.small
  12. 12. “Precisamos de uma máquina maior”• Modo mais simples• Pode alavancar uso de PIOPs• Instancias High I/O• Instancias High Memory• Instancias High CPU• Instancias High Storage• Fácil de mudar tamanhos deinstancias• Vai eventualmente ter limitaçõeshi1.4xlargem2.4xlargem1.small
  13. 13. Dia Um, Um Usuário:• Pode potencialmente atenderalgumas centenas até algunsmilhares de usuáriosdependendo da instancia,complexidade da app etráfego• Não tem failover• Não tem redundância• Todos os ovos no mesmo cestoEC2InstanceElastic IPAmazonRoute 53User
  14. 14. Dia Um, Um Usuário:• Pode potencialmente atenderalgumas centenas até algunsmilhares de usuáriosdependendo da instancia,complexidade da app etráfego• Não tem failover• Não tem redundância• Todos os ovos no mesmo cestoEC2InstanceElastic IPAmazonRoute 53User
  15. 15. Dia Dois, Usuário >1:Vamos primeiroseparar os recursos emmais de uma instancia.• Instancia Web• Instancia de Banco WebInstanceDatabaseInstanceElastic IPAmazonRoute 53User
  16. 16. Gestão Própria Serviço GerenciadoBanco de Dadosno Amazon EC2Sua escolha de BDno Amazon EC2Bring Your OwnLicense (BYOL)AmazonDynamoDBServiço gerenciadode BD NoSQL queusa storage SSDAmazon RDSMS SQL Server,Oracle ou MySQLas a serviceBYOL ou LicençaIncluídaAmazonRedshiftData Warehouse asa servicedistribuído e comescala de petabytesOpções de Bases de Dados
  17. 17. Que tecnologia usar?SQL? NoSQL?
  18. 18. Depende do seu casode uso, mas…
  19. 19. Comece com aquilo que formais simples para você
  20. 20. Vamos começar com oAmazon RDS nesse exemplo
  21. 21. Usuários >100:WebInstanceElastic IPRDS DBInstanceAmazonRoute 53UserVamos primeiro separaros recursos em mais deuma instancia.• Instancia Web• Instancia de Banco– Use o RDS para ter umavida mais simples!
  22. 22. Usuários > 1000:Agora vamos endereçara falta de failover eredundancia:• Elastic Load Balancer• Mais uma InstanciaWeb– Em outra Zona de Disponibilidade• Habilitar RDS Multi-AZWebInstanceRDS DB InstanceActive (Multi-AZ)Availability Zone Availability ZoneWebInstanceRDS DB InstanceStandby (Multi-AZ)Elastic LoadBalancerAmazonRoute 53User
  23. 23. Escalandohorizontalmente everticalmente podemoschegar bem longe( 10s-100s de milhares )
  24. 24. Usuários >10ks-100ks:RDS DB InstanceActive (Multi-AZ)Availability Zone Availability ZoneRDS DB InstanceStandby (Multi-AZ)Elastic LoadBalancerRDS DB InstanceRead ReplicaRDS DB InstanceRead ReplicaRDS DB InstanceRead ReplicaRDS DB InstanceRead ReplicaWebInstanceWebInstanceWebInstanceWebInstanceWebInstanceWebInstanceWebInstanceWebInstanceAmazonRoute 53User
  25. 25. Isso realmente nos levarálonge, mas queremostambém performance eeficiência.Vamos limpar umpouco mais
  26. 26. Mova a carga:Diminua a carga nasinstanciasWeb e BD:• Mova conteúdo estático dainstancia Web para o S3 eCloudFront• Mova estado/sessões e façacache do BD com ElastiCachee/ou DynamoDBWebInstanceRDS DB InstanceActive (Multi-AZ)Availability ZoneElastic LoadBalancerAmazon S3AmazonCloudfrontAmazonRoute 53UserElastiCacheDynamoDB
  27. 27. Agora que nossas camadasWeb e de BD estão maisleves vamos voltar ao inícioda nossa discussão…
  28. 28. Auto-Scaling!!!
  29. 29. Escalabilidade automática deinstancias de acordo com políticasdefinidasTrigger auto-scalingpolicyas-create-auto-scaling-group MyGroup--launch-configuration MyConfig--availability-zones us-east-1a--min-size 4--max-size 200Auto-ScalingAmazonCloudWatch
  30. 30. Tráfego em Novembro na Amazon.comNovember
  31. 31. Provisioned capacityNovemberTráfego em Novembro na Amazon.com
  32. 32. 76%24%Provisioned capacityNovemberTráfego em Novembro na Amazon.com
  33. 33. NovemberTráfego em Novembro na Amazon.comAuto Scaling
  34. 34. É possível fazer ainda maismelhorias deixando suascamadas ainda mais leves eorientadas a serviços
  35. 35. SOA = Service Oriented Architecture
  36. 36. Baixo acoplamente te liberta!• Reduza o acoplamento para escalar ainda mais– Componentes independentes– Projete-os como uma caixa preta– Desacople as integrações– Prefira serviços já construídos com redundancia eescalabilidade ao invés de contruir novamenteController A Controller BController A Controller BQ QAlto acomplamentoUse Amazon SQS como BuffersBaixo acoplamento
  37. 37. Baixo acoplamento + SOA = Win!Exemplos:• Email• Filas• Transcoding de Vídeos• Busca• Bancos de Dados• Monitoramento• Métricas• LogsAmazonCloudSearchAmazon SQSAmazon SNSAmazon ElasticTranscoderAmazon SWFAmazon SESNão reinvente a roda!
  38. 38. Baixo acoplamento + SOAExemplo
  39. 39. Imagine um site/app paraupload e compartilhamentode fotos entre usuários
  40. 40. Exemplo usando filas demensagem SQS
  41. 41. S3 BucketFor IngestUserSNS TopicRRS S3Bucket toServecontent toCloudFrontS3 BucketFororiginalsCloudFrontDownloadDistributionSQS QueueSize for ThumbnailSQS QueueSize Image forMobileSQS QueueSize Image for WebAuto scalingGroupInstancesAuto scalingGroupInstancesAuto scalingGroupInstances
  42. 42. Exemplo usando serviçoSimple Workflow (SWF)
  43. 43. S3 BucketFor IngestUserRRS S3Bucket toServecontent toCloudFrontS3 BucketFororiginalsCloudFrontDownloadDistributionAuto scalingGroupInstancesAuto scalingGroupInstancesAuto scalingGroupInstancesSWFInstance runningdecider
  44. 44. Usuários >1milhão+:Chegar em um milhão e além requer uma arquitetura queutilize os recursos vistos anteriormente:• Multi-AZ• Elastic Load Balancer entre as camadas• Auto-Scaling• Service oriented architecture• Servir conteúdo estático com as soluções certas (S3/CloudFront )• Cache e réplicas de bases de dados• Mover estado para fora das camadas com auto-scaling
  45. 45. Usuários >1milhão+:RDS DB InstanceActive (Multi-AZ)Availability ZoneElastic LoadBalancerRDS DB InstanceRead ReplicaRDS DB InstanceRead ReplicaWebInstanceWebInstanceWebInstanceWebInstanceAmazonRoute 53UserAmazon S3AmazonCloudfrontDynamoDBAmazon SQSElastiCacheWorkerInstanceWorkerInstanceAmazonCloudWatchInternal AppInstanceInternal AppInstanceAmazon SES
  46. 46. Próximos passos
  47. 47. Usuários > 10milhões+:Você provavelmente encontrará dificuldades com suabase de dados nas escritas no BD Master.Como resolver?• Sharding ( separar conjuntos de dados em mais deuma base de dados )• Mover funcionalidades para outros tipos de BDs (NoSQL )
  48. 48. Sharding• Mais complexo para acamada de aplicação• Complexidadeoperacional• Shard por função ouchaveUser ShardID002345 A002346 B002347 C002348 B002349 AABC
  49. 49. Mover funcionalidades para NoSQL• Soluções NoSQL usualmente possuemescalabilidade horizontal transparente• Use serviços gerenciados como oDynamoDBDynamoDB
  50. 50. Você também poderá ter problemas relacionados avelocidade ou performance.• Tenha soluções de monitoração/métricas/logs– Se possível, use soluções prontas! ( SaaS )• Preste atenção no que seus usuários estão dizendo• Verifique a performance de cada serviço/componenteUsuários > 10milhões+:
  51. 51. HOSTLEVELMETRICSAGGREGATELEVELMETRICSLOGANALYSISEXTERNALSITEPERFORMANCE
  52. 52. AWS Marketplace & Partners AWS podem ajudarSaiba mais em: aws.amazon.com/marketplace
  53. 53. Usuários > 10 milhões+:Gerenciar sua infraestrutura será fundamental comnúmero de instancias e recursos utilizados emcrescimento.Use ferramentas para automatizar tarefas.• Ferramentas da AWS• Ferramentas de gestão de configuração• Análise automatizada de logs e ações de usuários
  54. 54. Soluções de Gestão de Aplicações da AWSElastic Beanstalk OpsWorks CloudFormation EC2Conveniência ControleServiços de Alto Nível Faça você mesmo
  55. 55. Host Based Configuration ManagementDois grandes players:– Opscode Chef– PuppetLabs Puppet• São parecidos em recursos• Use HBCM junto com uma das soluções da AWS(OpsWorks integra com Chef e CloudFormationcom Chef ou Puppet)• Mais difícil gerenciar muitos recursoscomputacionais sem HBCM
  56. 56. Breve revisão sobreescalabilidade
  57. 57. Pense em redundância emtodas as camadas
  58. 58. Multi-AZ na sua infraestrutura
  59. 59. Faça uso de serviços prontos( ELB, S3, SNS, SQS, SWF,SES, etc )
  60. 60. Use SQL ou NoSQL deacordo com os requisitos deseu negócio
  61. 61. Crie uma arquiteturaorientada a serviços ( SOA )
  62. 62. Use Auto-scaling quandoprecisar crescer ou diminuirautomaticamente
  63. 63. Use ferramentas de automaçãosempre que possível
  64. 64. Tenha soluções demétricas/monitoração/logs
  65. 65. Não reinvente a roda!
  66. 66. Pensando nesses elementosvocê certamente poderáatender dezenas e até centenasde milhões de usuários!
  67. 67. aws.amazon.com/pt/architectureSaiba mais em…
  68. 68. RECURSOS TÉCNICOSawshub.com.br
  69. 69. OBRIGADO!aws.typepad.com/brasilslideshare.net/AmazonWebServicesLATAMJosé PapoAWS Tech Evangelist@josepapo

×