Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da...
-
Upload
daniel-viveiros -
Category
Technology
-
view
543 -
download
0
description
Transcript of Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da...
![Page 1: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/1.jpg)
Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google
Daniel Viveiros - Head of TechnologyTwitter: @dviveirosSite: http://www.ciandt.com/u/viveiros http://www.danielviveiros.com.br
![Page 2: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/2.jpg)
A COPA DO MUNDO É NOSSA!
![Page 3: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/3.jpg)
Será?!?
![Page 4: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/4.jpg)
![Page 5: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/5.jpg)
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
![Page 6: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/6.jpg)
Escalabilidade
![Page 7: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/7.jpg)
10,000,000 de fotos30 Tb de dados
40,000 fotos / hora(pico projetado)
![Page 8: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/8.jpg)
Escalabilidade
Global
![Page 9: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/9.jpg)
Todo o planeta vai usar a plataforma
Mercados locais podem customizar solução
usando a plataforma
![Page 10: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/10.jpg)
Escalabilidade
Global
1a versão em 3 meses
![Page 11: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/11.jpg)
Porque essa é a vida na cidade grande… ;-)
![Page 12: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/12.jpg)
![Page 13: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/13.jpg)
IaaS ou PaaS?
![Page 14: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/14.jpg)
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
![Page 15: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/15.jpg)
http://www.infoq.com/news/2014/01/paas-future
http://danielviveiros.com.br/2014/01/24/there-is-nothing-going-wrong-with-paas/
![Page 16: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/16.jpg)
Escalabilidade
Global
1a versão em 3 meses
IaaS PaaS
![Page 17: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/17.jpg)
Escalabilidade
Global
1a versão em 3 meses
IaaS PaaS
Concordam?
![Page 18: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/18.jpg)
Arquiteturas HíbridasFTW!
![Page 19: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/19.jpg)
Arquitetura Híbrida com
Google Cloud Platform
![Page 20: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/20.jpg)
![Page 21: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/21.jpg)
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
![Page 22: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/22.jpg)
Utilização do Datastore para maior escalabilidade3 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;
![Page 23: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/23.jpg)
Planeje na largada o uso de Memcache → garantia de melhor performance, escalabilidade e diminuição de custos
![Page 24: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/24.jpg)
![Page 25: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/25.jpg)
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
![Page 26: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/26.jpg)
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.
![Page 27: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/27.jpg)
![Page 28: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/28.jpg)
![Page 29: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/29.jpg)
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...
![Page 30: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/30.jpg)
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).
![Page 31: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/31.jpg)
Mais informações em: https://developers.google.com/storage/docs/accesscontrol#Signed-URLs
![Page 32: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/32.jpg)
ImageServices do Google AppEngine (transformações básicas)
Manipulação de imagens: ImageMagick (transformações avançadas)
![Page 33: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/33.jpg)
![Page 34: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/34.jpg)
Redes Sociais e APIs
![Page 35: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/35.jpg)
![Page 36: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/36.jpg)
![Page 37: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/37.jpg)
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
![Page 38: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/38.jpg)
Realtime updates / notificaçõesFoco na Fan Page. Listening de tudo, filtro na aplicaçãoGraph API para futuras interações
Streaming APIGoogle Compute Engine: long-run processLog para failover
Real-time API (subscription / notification)Foco em hashtag específicaSubscription só notifica uma vez por hashtag
![Page 39: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/39.jpg)
![Page 40: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/40.jpg)
![Page 41: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/41.jpg)
![Page 42: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/42.jpg)
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
![Page 43: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/43.jpg)
![Page 44: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/44.jpg)
![Page 45: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/45.jpg)
Monitoramento
![Page 46: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/46.jpg)
Se está no GCE, via de regra, precisa de monitoramento
Usamos o Zabbix, solução open source de monitoramento
![Page 47: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/47.jpg)
Dá para melhorar o monitoramento do GAE também!
![Page 48: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/48.jpg)
Testes de Carga
![Page 49: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/49.jpg)
- 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)
![Page 50: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)](https://reader034.fdocumentos.com/reader034/viewer/2022051412/54969dddac7959292e8b511d/html5/thumbnails/50.jpg)
Valeu!
Daniel Viveiros - Head of TechnologyTwitter/email: @dviveiros / [email protected]: http://www.ciandt.com/u/viveiros http://www.danielviveiros.com.br