SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
Criando uma plataforma
mundial para
engajamento de usuários
para a Copa do Mundo
2014 na nuvem da
Google
Daniel Viveiros - Head of Technology
Twitter: @dviveiros
Site: http://www.ciandt.com/u/viveiros
http://www.danielviveiros.com.br
A COPA DO MUNDO É
NOSSA!
Será?!?
Fans do
evento
Fotos com
interações
sociais
Diversos
canais
Uma plataforma… para todo um planeta!
Coletar uma
quantidade imensa de
imagens de pessoas do
mundo todo
Capturar
automaticament
e o
consentimento
dos usuários
Usar essas fotos
para montar um
grande mosaico
para a abertura do
evento
Plataforma de
Ativação Social
Escalabilidade
10,000,000 de fotos
30 Tb de dados
40,000 fotos / hora
(pico projetado)
Escalabilidade
Global
Todo o planeta vai usar a
plataforma
Mercados locais podem
customizar solução
usando a plataforma
Escalabilidade
Global
1a
versão em 3 meses
Porque essa é a vida na
cidade grande… ;-)
IaaS ou PaaS?
PaaS
- Ambiente de execução na nuvem
- Escalabilidade e alta disponibilidade
"sem esforço"
- Excelente para novas aplicações,
ruim para migrar aplicações existentes
- Java, Python, PHP or Go! (GAE)
- Mais fácil e rápido de construir /
manter
- É preciso jogar as "regras do jogo"
- Resumo: produtividade e abstração
IaaS
- Datacenter na nuvem
- Escalabilidade e alta disponibilidade
projetados
- Funciona bem para novas aplicações
ou para migrar aplicações existentes
- Qualquer linguagem
- Pode utilizar plataformas externas
como Drupal, Sharepoint etc.
- Resumo: flexibilidade e controle
http://www.infoq.com/news/2014/01/paas-future
http://danielviveiros.com.br/2014/01/24/there-is-nothing-going-wrong-with-paas/
Escalabilidade
Global
1a
versão em 3 meses
IaaS PaaS
Escalabilidade
Global
1a
versão em 3 meses
IaaS PaaS
Concordam?
Arquiteturas Híbridas
FTW!
Arquitetura
Híbrida com
Google Cloud
Platform
Regra geral: deveria estar na linha de frente
de todas as requisições → maior facilidade de
escalar e suportar altos volumes.
Linguagem: Java
Principais Frameworks:
1) Objectify (Persistência)
2) Jersey (RESTful Webservices)
3) Guice (IoC)
4) RestFB (Integração com o Facebook)
5) JInstagram (Integração com o Instagram)
6) Twitter4J (Integração com o Twitter)
Experimentem! https://github.
com/dviveiros/gae-project
Utilização do Datastore para maior escalabilidade
3 pontos de atenção:
1) O datastore não é uma base relacional, trate-a como tal;
2) Cuidado ao fazer a modelagem dos entity groups,
operações de escrita possuem restritos limites por grupos;
3) Em algum momento você vai precisar de contadores.
Considere o artigo "Sharding counters" do Google;
Planeje na largada o uso de Memcache →
garantia de melhor performance,
escalabilidade e diminuição de custos
Quando o PaaS mostrar suas restrições (e isso vai
acontecer), use IaaS (nesse caso: Google
Compute Engine) como complemento
arquitetural.
Foi usado para:
[1] Integração com o Twitter
[2] Manipulações complexas de imagens
(exemplo: transformar imagem em texto)
Atenção: a Google lançou em 25 de março as
Managed VMs, que vai facilitar a criação dessas
arquiteturas híbridas.
https://developers.google.
com/cloud/managed-vms
Integração GAE - GCE
GCE → GAE: expõe um serviço REST no GAE e
faz a chamada dele pelo GCE. Prefira sempre
que esse serviço dispare uma Task Queue
(push) internamente para processamento
assíncrono.
GAE → GCE: utilizamos uma Task Queue (pull)
no GAE para colocar a mensagem e pegamos
essa mensagem no GCE utilizando a Task
Queue REST API. Pattern request-reply.
E por falar em filas...
Usamos filas para quase tudo!
- Barramento de eventos (foto criada, foto moderada,
rejeitada, etc)
- Controle de quota de envio de emails
- Integração com componentes externos (GCE) usando
request-reply
- Implementação de API assíncrona - resposta chega ao client
via callback com politica/garantia de entrega/retries todo
baseado nas características da fila
- Receber as notificações das redes sociais
- Etc...
Todas as imagens estão armazenadas no
Google Cloud Storage, facilidade de
gerenciamento e confiança.
Regra geral: sempre que possível, deixar o
GCS receber e fornecer diretamente as
imagens, sem camadas intermediárias (URL
assinadas).
Mais informações em: https://developers.google.com/storage/docs/accesscontrol#Signed-
URLs
ImageServices do Google
AppEngine (transformações
básicas)
Manipulação de imagens:
ImageMagick (transformações
avançadas)
Redes Sociais e
APIs
Desafios para fazer integração de 2 vias em redes
sociais:
[1] Pense em quotas, se planeje!
[2] É difícil negociar limites com as redes sociais!
[3] Escrever nas redes sociais é um desafio à parte! Pense
em ética e esteja preparado para quotas bem baixas.
[4] As APIs são instáveis, tivemos muitos problemas com
isso. Considere um firehose (Datasift, GNIP etc)
Mais info: http://goo.gl/nNY7Vk
Realtime updates / notificações
Foco na Fan Page. Listening de tudo, filtro na aplicação
Graph API para futuras interações
Streaming API
Google Compute Engine: long-run process
Log para failover
Real-time API (subscription / notification)
Foco em hashtag específica
Subscription só notifica uma vez por hashtag
Pense em APIs:
[1] Segurança e gerenciamento: planeje-se com relação a
isso
[2] Site da API: uma boa documentação é fundamental
para que outros consigam utilizar
[3] Considere um produto para isso (ex. Apigee, Sensedia
API Suite etc)
Mais info: http://goo.gl/p2bNB5
Monitoramento
Se está no GCE, via de regra,
precisa de monitoramento
Usamos o Zabbix, solução
open source de
monitoramento
Dá para melhorar
o monitoramento
do GAE também!
Testes de
Carga
- Utilização do JMeter disparado de máquina local
- Utilização do JMeter disparado de máquina na AWS
- Integração dos testes de performance na
estratégia de CI utilizando o Jenkins
- Testes de performance influenciando o design!
- Testes terceirizados com empresa externa (iGates)
- Testes terceirizados com empresa externa
especializada em testes globais (SOASTA)
Valeu!
Daniel Viveiros - Head of Technology
Twitter/email: @dviveiros / viveiros@ciandt.com
Site: http://www.ciandt.com/u/viveiros
http://www.danielviveiros.com.br

Contenu connexe

Similaire à Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)

Colóquio Drupal na Universidade do Minho
Colóquio Drupal na Universidade do MinhoColóquio Drupal na Universidade do Minho
Colóquio Drupal na Universidade do Minhointrofini
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemRodrigo Valerio
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sitesthiagolima
 
Plataforma de BigData da Globo.com (Sistema de Recomendação) @ Rio BigData Me...
Plataforma de BigData da Globo.com (Sistema de Recomendação) @ Rio BigData Me...Plataforma de BigData da Globo.com (Sistema de Recomendação) @ Rio BigData Me...
Plataforma de BigData da Globo.com (Sistema de Recomendação) @ Rio BigData Me...Ciro Cavani
 
Drupal e o seu ecossistema
Drupal e o seu ecossistemaDrupal e o seu ecossistema
Drupal e o seu ecossistemaDrupal Portugal
 
Opções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasOpções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasJose Papo, MSc
 
Tech lunch: highlights Google Cloud Platform Live 2014
Tech lunch: highlights Google Cloud Platform Live 2014Tech lunch: highlights Google Cloud Platform Live 2014
Tech lunch: highlights Google Cloud Platform Live 2014Francis Fernandes da Luz
 
Web 2.0: conceito, tendências e desafios
Web 2.0: conceito, tendências e desafiosWeb 2.0: conceito, tendências e desafios
Web 2.0: conceito, tendências e desafiosMauricio Garcia
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento WebSérgio Souza Costa
 
White Paper da Spin para o SIMPASE 2013
White Paper da Spin para o SIMPASE 2013White Paper da Spin para o SIMPASE 2013
White Paper da Spin para o SIMPASE 2013SpinEngenharia
 
Function as a Service: IT forum expo 2017
Function as a Service: IT forum expo 2017Function as a Service: IT forum expo 2017
Function as a Service: IT forum expo 2017Igor Rosa Macedo
 
Utilização CMS - WordPress | Criação de um site de um restaurante
Utilização CMS - WordPress | Criação de um site de um restauranteUtilização CMS - WordPress | Criação de um site de um restaurante
Utilização CMS - WordPress | Criação de um site de um restauranteDiogoAlfama
 
Apresentação realidade aumentada para aplicações web e mobile
Apresentação   realidade aumentada para aplicações web e mobileApresentação   realidade aumentada para aplicações web e mobile
Apresentação realidade aumentada para aplicações web e mobileRWTH Aachen University
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformAndré Paulovich
 
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...minastestingconference
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHPFlávio Lisboa
 

Similaire à Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014) (20)

Colóquio Drupal na Universidade do Minho
Colóquio Drupal na Universidade do MinhoColóquio Drupal na Universidade do Minho
Colóquio Drupal na Universidade do Minho
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Plataforma de BigData da Globo.com (Sistema de Recomendação) @ Rio BigData Me...
Plataforma de BigData da Globo.com (Sistema de Recomendação) @ Rio BigData Me...Plataforma de BigData da Globo.com (Sistema de Recomendação) @ Rio BigData Me...
Plataforma de BigData da Globo.com (Sistema de Recomendação) @ Rio BigData Me...
 
Drupal e o seu ecossistema
Drupal e o seu ecossistemaDrupal e o seu ecossistema
Drupal e o seu ecossistema
 
Android
AndroidAndroid
Android
 
Opções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasOpções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e Arquiteturas
 
Cronograma final 13maio
Cronograma final 13maioCronograma final 13maio
Cronograma final 13maio
 
Tech lunch: highlights Google Cloud Platform Live 2014
Tech lunch: highlights Google Cloud Platform Live 2014Tech lunch: highlights Google Cloud Platform Live 2014
Tech lunch: highlights Google Cloud Platform Live 2014
 
Web 2.0: conceito, tendências e desafios
Web 2.0: conceito, tendências e desafiosWeb 2.0: conceito, tendências e desafios
Web 2.0: conceito, tendências e desafios
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
White Paper da Spin para o SIMPASE 2013
White Paper da Spin para o SIMPASE 2013White Paper da Spin para o SIMPASE 2013
White Paper da Spin para o SIMPASE 2013
 
Function as a Service: IT forum expo 2017
Function as a Service: IT forum expo 2017Function as a Service: IT forum expo 2017
Function as a Service: IT forum expo 2017
 
Utilização CMS - WordPress | Criação de um site de um restaurante
Utilização CMS - WordPress | Criação de um site de um restauranteUtilização CMS - WordPress | Criação de um site de um restaurante
Utilização CMS - WordPress | Criação de um site de um restaurante
 
Apresentação realidade aumentada para aplicações web e mobile
Apresentação   realidade aumentada para aplicações web e mobileApresentação   realidade aumentada para aplicações web e mobile
Apresentação realidade aumentada para aplicações web e mobile
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 

Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)

  • 1. Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google Daniel Viveiros - Head of Technology Twitter: @dviveiros Site: http://www.ciandt.com/u/viveiros http://www.danielviveiros.com.br
  • 2. A COPA DO MUNDO É NOSSA!
  • 4.
  • 5. Fans do evento Fotos com interações sociais Diversos canais Uma plataforma… para todo um planeta! Coletar uma quantidade imensa de imagens de pessoas do mundo todo Capturar automaticament e o consentimento dos usuários Usar essas fotos para montar um grande mosaico para a abertura do evento Plataforma de Ativação Social
  • 7. 10,000,000 de fotos 30 Tb de dados 40,000 fotos / hora (pico projetado)
  • 9. Todo o planeta vai usar a plataforma Mercados locais podem customizar solução usando a plataforma
  • 11. Porque essa é a vida na cidade grande… ;-)
  • 12.
  • 14. PaaS - Ambiente de execução na nuvem - Escalabilidade e alta disponibilidade "sem esforço" - Excelente para novas aplicações, ruim para migrar aplicações existentes - Java, Python, PHP or Go! (GAE) - Mais fácil e rápido de construir / manter - É preciso jogar as "regras do jogo" - Resumo: produtividade e abstração IaaS - Datacenter na nuvem - Escalabilidade e alta disponibilidade projetados - Funciona bem para novas aplicações ou para migrar aplicações existentes - Qualquer linguagem - Pode utilizar plataformas externas como Drupal, Sharepoint etc. - Resumo: flexibilidade e controle
  • 17. Escalabilidade Global 1a versão em 3 meses IaaS PaaS Concordam?
  • 20.
  • 21. Regra geral: deveria estar na linha de frente de todas as requisições → maior facilidade de escalar e suportar altos volumes. Linguagem: Java Principais Frameworks: 1) Objectify (Persistência) 2) Jersey (RESTful Webservices) 3) Guice (IoC) 4) RestFB (Integração com o Facebook) 5) JInstagram (Integração com o Instagram) 6) Twitter4J (Integração com o Twitter) Experimentem! https://github. com/dviveiros/gae-project
  • 22. Utilização do Datastore para maior escalabilidade 3 pontos de atenção: 1) O datastore não é uma base relacional, trate-a como tal; 2) Cuidado ao fazer a modelagem dos entity groups, operações de escrita possuem restritos limites por grupos; 3) Em algum momento você vai precisar de contadores. Considere o artigo "Sharding counters" do Google;
  • 23. Planeje na largada o uso de Memcache → garantia de melhor performance, escalabilidade e diminuição de custos
  • 24.
  • 25. Quando o PaaS mostrar suas restrições (e isso vai acontecer), use IaaS (nesse caso: Google Compute Engine) como complemento arquitetural. Foi usado para: [1] Integração com o Twitter [2] Manipulações complexas de imagens (exemplo: transformar imagem em texto) Atenção: a Google lançou em 25 de março as Managed VMs, que vai facilitar a criação dessas arquiteturas híbridas. https://developers.google. com/cloud/managed-vms
  • 26. Integração GAE - GCE GCE → GAE: expõe um serviço REST no GAE e faz a chamada dele pelo GCE. Prefira sempre que esse serviço dispare uma Task Queue (push) internamente para processamento assíncrono. GAE → GCE: utilizamos uma Task Queue (pull) no GAE para colocar a mensagem e pegamos essa mensagem no GCE utilizando a Task Queue REST API. Pattern request-reply.
  • 27.
  • 28.
  • 29. E por falar em filas... Usamos filas para quase tudo! - Barramento de eventos (foto criada, foto moderada, rejeitada, etc) - Controle de quota de envio de emails - Integração com componentes externos (GCE) usando request-reply - Implementação de API assíncrona - resposta chega ao client via callback com politica/garantia de entrega/retries todo baseado nas características da fila - Receber as notificações das redes sociais - Etc...
  • 30. Todas as imagens estão armazenadas no Google Cloud Storage, facilidade de gerenciamento e confiança. Regra geral: sempre que possível, deixar o GCS receber e fornecer diretamente as imagens, sem camadas intermediárias (URL assinadas).
  • 31. Mais informações em: https://developers.google.com/storage/docs/accesscontrol#Signed- URLs
  • 32. ImageServices do Google AppEngine (transformações básicas) Manipulação de imagens: ImageMagick (transformações avançadas)
  • 33.
  • 35.
  • 36.
  • 37. Desafios para fazer integração de 2 vias em redes sociais: [1] Pense em quotas, se planeje! [2] É difícil negociar limites com as redes sociais! [3] Escrever nas redes sociais é um desafio à parte! Pense em ética e esteja preparado para quotas bem baixas. [4] As APIs são instáveis, tivemos muitos problemas com isso. Considere um firehose (Datasift, GNIP etc) Mais info: http://goo.gl/nNY7Vk
  • 38. Realtime updates / notificações Foco na Fan Page. Listening de tudo, filtro na aplicação Graph API para futuras interações Streaming API Google Compute Engine: long-run process Log para failover Real-time API (subscription / notification) Foco em hashtag específica Subscription só notifica uma vez por hashtag
  • 39.
  • 40.
  • 41.
  • 42. Pense em APIs: [1] Segurança e gerenciamento: planeje-se com relação a isso [2] Site da API: uma boa documentação é fundamental para que outros consigam utilizar [3] Considere um produto para isso (ex. Apigee, Sensedia API Suite etc) Mais info: http://goo.gl/p2bNB5
  • 43.
  • 44.
  • 46. Se está no GCE, via de regra, precisa de monitoramento Usamos o Zabbix, solução open source de monitoramento
  • 47. Dá para melhorar o monitoramento do GAE também!
  • 49. - Utilização do JMeter disparado de máquina local - Utilização do JMeter disparado de máquina na AWS - Integração dos testes de performance na estratégia de CI utilizando o Jenkins - Testes de performance influenciando o design! - Testes terceirizados com empresa externa (iGates) - Testes terceirizados com empresa externa especializada em testes globais (SOASTA)
  • 50. Valeu! Daniel Viveiros - Head of Technology Twitter/email: @dviveiros / viveiros@ciandt.com Site: http://www.ciandt.com/u/viveiros http://www.danielviveiros.com.br