Criando uma plataforma mundial para engajamento de usurios para a - - PowerPoint PPT Presentation

criando uma plataforma mundial para engajamento de usu
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 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

slide-2
SLIDE 2

A COPA DO MUNDO É NOSSA!

slide-3
SLIDE 3

Será?!?

slide-4
SLIDE 4
slide-5
SLIDE 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

slide-6
SLIDE 6

Escalabilidade

slide-7
SLIDE 7

10,000,000 de fotos 30 Tb de dados 40,000 fotos / hora

(pico projetado)

slide-8
SLIDE 8

Escalabilidade Global

slide-9
SLIDE 9

Todo o planeta vai usar a plataforma Mercados locais podem customizar solução usando a plataforma

slide-10
SLIDE 10

Escalabilidade Global 1a versão em 3 meses

slide-11
SLIDE 11

Porque essa é a vida na cidade grande… ;-)

slide-12
SLIDE 12
slide-13
SLIDE 13

IaaS ou PaaS?

slide-14
SLIDE 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
  • u para migrar aplicações existentes
  • Qualquer linguagem
  • Pode utilizar plataformas externas

como Drupal, Sharepoint etc.

  • Resumo: flexibilidade e controle
slide-15
SLIDE 15

http://www.infoq.com/news/2014/01/paas-future http://danielviveiros.com.br/2014/01/24/there-is-nothing-going-wrong-with-paas/

slide-16
SLIDE 16

Escalabilidade Global 1a versão em 3 meses

IaaS PaaS

slide-17
SLIDE 17

Escalabilidade Global 1a versão em 3 meses

IaaS PaaS

Concordam?

slide-18
SLIDE 18

Arquiteturas Híbridas FTW!

slide-19
SLIDE 19

Arquitetura Híbrida com Google Cloud Platform

slide-20
SLIDE 20
slide-21
SLIDE 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

slide-22
SLIDE 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,

  • perações de escrita possuem restritos limites por grupos;

3) Em algum momento você vai precisar de contadores. Considere o artigo "Sharding counters" do Google;

slide-23
SLIDE 23

Planeje na largada o uso de Memcache → garantia de melhor performance, escalabilidade e diminuição de custos

slide-24
SLIDE 24
slide-25
SLIDE 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

slide-26
SLIDE 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.

slide-27
SLIDE 27
slide-28
SLIDE 28
slide-29
SLIDE 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...
slide-30
SLIDE 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).

slide-31
SLIDE 31

Mais informações em: https://developers.google.com/storage/docs/accesscontrol#Signed- URLs

slide-32
SLIDE 32

ImageServices do Google AppEngine (transformações básicas) Manipulação de imagens: ImageMagick (transformações avançadas)

slide-33
SLIDE 33
slide-34
SLIDE 34

Redes Sociais e APIs

slide-35
SLIDE 35
slide-36
SLIDE 36
slide-37
SLIDE 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

slide-38
SLIDE 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

slide-39
SLIDE 39
slide-40
SLIDE 40
slide-41
SLIDE 41
slide-42
SLIDE 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

slide-43
SLIDE 43
slide-44
SLIDE 44
slide-45
SLIDE 45

Monitoramento

slide-46
SLIDE 46

Se está no GCE, via de regra, precisa de monitoramento Usamos o Zabbix, solução

  • pen source de

monitoramento

slide-47
SLIDE 47

Dá para melhorar

  • monitoramento

do GAE também!

slide-48
SLIDE 48

Testes de Carga

slide-49
SLIDE 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)

slide-50
SLIDE 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