50
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 usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)

Embed Size (px)

DESCRIPTION

Conheça a arquitetura utilizada por um dos maiores varejistas do ramo de bebidas, para criar a plataforma tecnológica que suportará sua campanha mundial de marketing na Copa do Mundo 2014, chamada de "Social Activation Platform". Será detalhado como foi utilizada a plataforma de cloud computing do Google (incluindo App Engine, Cloud Storage e Compute Engine), além da integração realizada com Facebook, Twitter e Instagram – e como tudo isso permitiu a criação de uma plataforma de engajamento de usuários e captura de imagens em escala mundial, para o maior evento esportivo do ano.

Citation preview

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

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)

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)

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)
Page 5: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)

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)

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)

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)

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)

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)

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)

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)
Page 13: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)

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)

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)

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)

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)

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)

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)

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)
Page 21: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)

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)

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)

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)
Page 25: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)

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)

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)
Page 28: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)
Page 29: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)

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)

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)

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)

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)
Page 34: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)

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)
Page 36: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)
Page 37: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)

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)

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)
Page 40: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)
Page 41: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)
Page 42: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)

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)
Page 44: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)
Page 45: Criando uma plataforma mundial para engajamento de usuários para a Copa do Mundo 2014 na nuvem da Google (QCon SP 2014)

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)

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)

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)

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)

- 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)

Valeu!

Daniel Viveiros - Head of TechnologyTwitter/email: @dviveiros / [email protected]: http://www.ciandt.com/u/viveiros http://www.danielviveiros.com.br