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
Criando uma plataforma mundial para engajamento de usurios para a - - PowerPoint PPT Presentation
Criando uma plataforma mundial para engajamento de usurios 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
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
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
(pico projetado)
PaaS
"sem esforço"
ruim para migrar aplicações existentes
manter
IaaS
projetados
como Drupal, Sharepoint etc.
http://www.infoq.com/news/2014/01/paas-future http://danielviveiros.com.br/2014/01/24/there-is-nothing-going-wrong-with-paas/
IaaS PaaS
IaaS PaaS
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,
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!
rejeitada, etc)
request-reply
via callback com politica/garantia de entrega/retries todo baseado nas características da fila
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)
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
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
Se está no GCE, via de regra, precisa de monitoramento Usamos o Zabbix, solução
monitoramento
Dá para melhorar
do GAE também!
estratégia de CI utilizando o Jenkins
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