Copa do mundo no brasil interagindo com os torcedores em tempo real
-
Upload
amazon-web-services-latin-america -
Category
Internet
-
view
163 -
download
5
Transcript of Copa do mundo no brasil interagindo com os torcedores em tempo real
São Paulo
Copa do Mundo no Brasil
Interagindo com os torcedores em tempo real
Agenda
• Motivação
• Jornada para a nuvem
• Aprendizado
• Métricas
Motivação
Segunda tela
Feito para atender a todos os programas da TV Globo
GloboApp.mp4
Jornada para a nuvem
Antes da AWS
TV Globo
CMS
Clients
Primeira publicação na AWS
CloudFront Amazon S3
TV Globo
CMS
Elastic IP Amazon EC2
Clients
Uma ferramenta para resolver tudo
Serviços utilizados
AWS
CloudFormationCloudWatch IAM Amazon SNS Amazon SQS Amazon S3 CloudFront
Amazon Redshift Amazon RDS ElastiCache DynamoDB
RDS DB
instance read
replica
Amazon
Route 53
Elastic Load
BalancingAMI Elastic IP Amazon EC2 Amazon EMR Amazon VPC Auto Scaling
Visão geral da arquitetura
WebServer
Worker
CloudFront Amazon S3
Route 53ClientsTV Globo
CMS
Broadcast
Web Server
WebServer
Social Networks
Elasti
Cache
Amazon
SQS
Amazon
RDS
RDS
Read Replica
CloudFront Amazon S3
TV Globo
CMS
WebApp AppServer
Route 53
Worker
Worker
Elasti
CacheAmazon
SQS
CloudFront Amazon S3
TV Globo
CMS
Ranking
Route 53DynamoDB
Answer
Broadcast
CloudFront Amazon S3
Route 53Clients TV Globo
CMS
Broadcast
Elasti
Cache
AWS Support
Gerenciamento de evento de infraestrutura (IEM)
Auxílio no teste de cargae otimização da performance do aplicativo
Gerenciamento de evento de infraestrutura (IEM)
• Eu tenho um lançamento global que vai acontecer e não tenho ideia de que tipo de capacidade vou precisar.
• Nossa empresa tem picos de acesso durante o ano e não precisamos de muitos recursos para operar, mas quando precisamos….
• Minha empresa é especialista em trazer tráfegopara o nosso site, não somos especialistas emgerenciamento de infraestrutura. Quando mandoos acessos eu confio em vocês para garantir quea infraestrutura está lá.
• Nós vamos fazer uma grande migração, falhar não é uma opção.
Aplicativo Globo
Aprendizado
Resiliência
• Arquitetura Multi-AZ
• Instâncias com disco local
• Famílias variadas de instância para cada tipo de
processamento
Performance
• Testes de carga
• Réplicas de leitura
• Muito cache
NGINX Cache
1. proxy_cache_path /dir/cache levels=1:2 keys_zone=cachename:5m;
2. location ~ /path/.*/file.json {
3. ...
4. proxy_cache cachename;
5. proxy_cache_valid 200 302 24h;
6. proxy_cache_key $proxy_host$uri;
7. ...
8. }
1. local user_timestamp = ngx.var["arg_timestamp”]
2. local timestamp = string.match(ngx.arg[1], "_timestamp.:.?(%d+)”)
3. if timestamp ~= nil and user_timestamp ~= nil then
4. if tonumber(timestamp) <= tonumber(user_timestamp) then
5. ngx.arg[1] = "{}”
6. ngx.arg[2] = true
7. return
8. end
9. end
Development process
TDD
&
BDD
Cloudformation
• Infraestrutura como Código
• Integra com controle de versão
• JSON
• Templates
• Suporta todos os tipos de recursos da AWS
• Publicação blue/green
Cloudformation
"WebServerGroup" : {
"Type" : "AWS::AutoScaling::AutoScalingGroup",
"Properties" : {
"AvailabilityZones" : { "Fn::GetAZs" : ""},
"LaunchConfigurationName" : { "Ref" : "LaunchConfig" },
"MinSize" : "1",
"MaxSize" : "3",
"LoadBalancerNames" : [ { "Ref" : "ElasticLoadBalancer" } ],
"NotificationConfiguration" : {
"TopicARN" : { "Ref" : "NotificationTopic" },
"NotificationTypes" : [ "autoscaling:EC2_INSTANCE_LAUNCH",
"autoscaling:EC2_INSTANCE_LAUNCH_ERROR",
"autoscaling:EC2_INSTANCE_TERMINATE",
"autoscaling:EC2_INSTANCE_TERMINATE_ERROR"]
}
Pense de forma simples
Métricas
Downloads do Aplicativo
0
100000
200000
300000
400000
500000
600000
700000
800000
900000
1000000
Maio Junho Julho
Estrelas no Google Play
1
2
4
Maio Início da Copa Fases Eliminatórias Fim da Copa
Obrigado