SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
Google App Engine para Startups Enxutas:
    The Good, The Bad and The Ugly



               Marcio Marchini
              marcio@betterdeveloper.net
Explicando o Título

 1. The Good, The Bad and The Ugly




                      (Um clássico a ser assistido…)
Explicando o Título

 2.  Startups Enxutas




                      (Um bom livro a ser lido…)
Explicando o Título

 3.  Goole App Engine




             (Uma Platform as a Service a ser explorada…)
PaaS, IaaS, etc




                                     Ex. VOCÊ!



                                     Ex. GAE



                                     Ex. EC2


                  Fonte: Wikipedia
GAE Datastore: Comparativo




 Imagem do Artigo: “Banco de dados como serviço” / revista “tema” / SERPRO
GAE: PaaS




   Vamos ao que Interessa pra sua Startup Enxuta…
Lição Lean Startup #1: Web Site Estático Escalável

 1.  Uma App no App Engine pode ter parte estática
     e parte dinâmica (Python, Java, etc)
 2.  O Web Site de sua empresa pode começar 100%
     estático
 3.  E pode ser escalável… (brabilhões de visitantes)
 4.  E sem admin Linux, EC2 etc… ($$$)
 5.  E sem pagar taxa de hosting pra uso normal… ($)
 6.  E sem se incomodar com DDoS etc
 7.  …
Bebemos o Próprio Champagne… (nosso site é uma app GAE)
Matamos a Cobra e Mostramos o Pau: Site Estático no GAE

 1.  Vamos escolher um site estático qualquer na web o e vamos
     colocá-lo no GAE. Exemplo aleatório:
     http://www.promote-web-sites.com
 2.  Vamos fazer download de suas páginas:
     wget --mirror -p --convert-links -P . http://www.promote-
     web-sites.com
 3.  Faz de conta que esse é o meu site. Vamos colocá-lo no
     GAE? è Mova as páginas HTML para uma pasta static ,
     dentro do nossa pasta betdevgaenosql
     mv ./www.promote-web-sites.com/* /Users/mqm/
     betdevgaenosql/static
(2/4): Site Estático no GAE

 4.  Editemos app.yaml para poder servir páginas estáticas
(3/4): Site Estático no GAE – Testando Localmente

 5.  Clique Run (botão verde)
 6.  Visite:
     http://localhost:8080/
 7.  Site estático!!
(4/4): Site Estático no GAE - Deploy

 8.  Clique Deploy no GAE Launcher (botão azul)
 9.  Visite: http://betdevgaenosql.appspot.com/
 10. Site estático!!
     (com URL feia L)
Recapitulando

 •  Uma Google App (em Python, Java, etc) pode
    servir conteúdo estático
 •  Podes fazer upload de seu site hoje
 •  Mas… como coloco uma URL raiz com meu
    domínio (ex. www.betterdeveloper.net) ao invés
    de *.appspot.com ?
Lição Lean Startup #2: Sua Página, Seu Domínio, GAE

1.  Registre seu domínio em registro.br ou web.com ou outro
    Registrar qualquer
2.  Crie uma conta (gratuita) em www.ZoneEdit.com
3.  Adicione uma Zone no ZoneEdit, correspondente ao seu
    domínio
4.  No seu Registrar, aponte o DNS para os valores do
    ZoneEdit.com (ex. ns10.zoneedit.com , etc)
5.  Adicione a entrada A e CNAME conforme abaixo
Sua Página, Seu Domínio, GAE

 6.  Crie uma conta gratuita Google Apps (<=10 contas no seu domínio)
 7.  Cria sua Google App nesse domínio
 8.  Crie o mapeamento de www no Google App para sua App
 9.  Deverá funcionar, igual ao www.betterdeveloper.net
Lição Lean Startup #3: Versões Distintas, Rollback

 1.  Temos que habilitar a versão 2 do site
 2.  Habilite o radio button, clique Make Default
 3.  Clique no “2”ao lado do radio button. Ele vai disparar a versão 2 do
     site
 4.  Clique no “1”ao lado do radio button. Ele vai disparar a versão 1 do
     site (original)
Lição Lean Startup #4: Versione seu conteúdo

1.  Use Git ou Svn pra versionar os fontes do seu site. Use TAGs por
    exemplo pra mapear pra versão ativa no ar (slide anterior)
2.  Use uma conta gratuita xp-dev.com – pode ter 1 projeto não Open
    Source, gratuitamente
3.  Agora você tem rastreabilidade e governança de fontes e versões no ar,
    gratuitamente. Fontes na Cloud (XP-Dev). “Binário”/site na Cloud
    (GAE)”. Super Lean.
4.  Ative o TRAC como sistema de tickets no XP-DEV. Pronto, agora até
    suas sprints/backlogs/feature requests/bug fixes tem Roadmap na web
    e governança na empresa.
Hello World no Estilo GAE



                   Hello, World!
GAE Hello World & Elasticidade (2011/06, Wicket)

http://<helloworld>.appspot.com , simulando 250 usuários concorrentes
por 10 minutos com http://sourceforge.net/projects/dieseltest/
GAE Hello World & Elasticidade (2011/06, Wicket)
GAE “Hello World” de Datastore (2011/06, Wicket)

CRUD de Redes de Hotéis e Hotéis
GAE “Hello World” de Datastore (2011/06, Wicket)

GUI versus
Datastore
The Good: J




               (Coisas legais/boas no GAE)
Coisas boas GAE - Performance

•    5 milhões de pageviews / mês gratuitamente. Chega pra ti?
•    Memchache distribuído, sem você precisar instalar/
     configurar
•    Conteúdo estático servido por servidores dedicados,
     transparentemente. Não precisas penar configurando load
     balancers / nginx etc e tal.
•    Mantém sua app em RAM o máximo que dá (performance)
•    Suporta tasks/background, no estilo cron
•    Logging fácil, memcache fácil
•    Utiliza o performático Jetty, envenenado: http://
     www.infoq.com/news/2009/08/google-chose-jetty
•    Suporte a SDPY na sua app http://dev.chromium.org/spdy/
     spdy-whitepaper
Coisas boas GAE – Traffic Splitting

•    A/B Testing etc etc
Coisas boas GAE – IDEs etc

•    Suporte a Python, Go, Java (e linguagens que rodam na
     JVM)
•    Roda frameworks tipo Java Apache Wicket, Python
     CherryPy. Suporta GWT etc. https://
     spreadsheets.google.com/a/betterdeveloper.net/pub?
     key=pRJ_0hajVrhacLjp3HqD5ew
•    Suportado por Eclipse (plugin GAE), PyCharm etc
•    Suporta Ant
•    Podes testar localmente antes
•    Console interativo Python – rode snippets direto no
     servidor, “peek/poke”
•    Sua app pode receber email, entra como http request (GAE
     cuida disso).
Coisas boas GAE - Storage

•    Datastore “schemaless”. Fácil prototipar e evoluir.
•    O NoSQL pode buscar baseado em propriedades
•    Versão dev local analisa perfil de uso e já otimiza índices
     do datastore
•    SDK suporta upload/download de dados em modo “bulk”
•    JPA significa que podes entrar/sair do GAE com mais
     facilidade (evita lock-in). Well… (veja The Ugly)
•    Datastore pode gerar unique keys automaticamente
•    Memcache obedece standard JCache
•    Memcache viewer no Python SDK
•    Podes fazer sync GAE-NoSQL ßà MySQL externo com
     https://github.com/k7d/approcket/wiki
Coisas boas GAE – Storage Relacional

•         Não é só NoSQL. MySQL também suportado (Mas sem quota
          gratuita)
     •     http://googleappengine.blogspot.com.br/2012/05/cloud-
           sql-pick-plan-that-fits-your-app.html
     •     https://developers.google.com/cloud-sql/
Coisas boas GAE

•    Console pra administração
•    Múltiplas versões da app rodando concorrentemente
•    Podes fazer uma app só pra sua “Intranet” – apenas
     membros do seuDominio.com tem acesso
•    10 apps GAE por developer
•    Sem Ads, mesmo nas apps free / conta free (ex. Gmail)
•    Pode-se definir um limite máximo de custo por dia
•    Boa integração com APIs Google: login, gtalk, imagens, etc
•    Paypal ok: http://www.dzone.com/links/
     setting_up_paypal_ipn_handling_on_google_app_engi.html
•    Possível mandar email pra app via XMPP, do console, pra
     testes
Coisas boas GAE
•         Duas implementações novas, não proprietárias
     •     http://en.wikipedia.org/wiki/AppScale
           It has support for Python, Go, and Java applications, taking the open
           source SDK provided by Google App Engine and implementing
           scalable services such as the datastore, memcache, blobstore, users
           API, and channel API.
     •     http://code.google.com/p/typhoonae/ (BETA)
Coisas boas GAE
•    Google Data Centers   http://www.google.com/about/datacenters/
     inside/index.html
The Bad: L




              (Coisas ruins no GAE – na nossa opinião)
Coisas ruins GAE…

•  Livros obsoletos. Exemplo: dica de “main”/Python
   pra cache em Programming Google App Engine:
   não mais necessário com Python 2.7 (veja https://
   developers.google.com/appengine/docs/python/
   python25/migrate27#wsgi )
Coisas ruins GAE…

•  Feito pra requests que demorem <1s. Se demorar
   >60s, você é assassinado (no livro – obsoleto - fala
   30s, mas https://developers.google.com/
   appengine/docs/python/
   runtime#The_Request_Timer diz 60.
   •  File Upload? Que mais demora >60s na web?
   •  Async URL fetch serve pra mitigar a maioria dos
      cenários
New Relic não Rola L

 “The restrictions that exist under Google App Engine,
 such as those on background threads, as well as how
 processes are managed, mean that the Python agent
 as it is implemented at present will not work as is.
 There are no plans at this point to support Google App
 Engine.”




            è Use o Dashboard “toco-duro” GAE… L
Apple iOS Push Notification não Rola L

 Sandbox: não podes abrir conexão socket pros
 servidores de Push da Apple
    è Precisas de uma máquina na EC2 etc que
    responda à sua app no GAE via REST e essa sim
    faz o push pra Apple. Sugestão: RabbitMQ/REST
    http://code.google.com/p/amqp-rest/
    è Ou: espera o Beta graduar: http://
    code.google.com/p/googleappengine/issues/detail?
    id=1164
WebSockets não rola L

Algo tipo Trello, que usa WebSockets (segundo artigo
publicado), não funciona pelo mesmo motivo
(conexões socket persistentes / longas)


 § Mas tem a Channel API:
 https://developers.google.com/appengine/docs/java/channel/
 overview
 The Channel API creates a persistent connection between your application
 and Google servers, allowing your application to send messages to
 JavaScript clients in real time without the use of polling. This is useful for
 applications designed to update users about new information immediately.



 è Sentiu-se atolando na areia movediça da plataforma proprietária?
Minha Framework Web Favorita não vem pré-carregada L

 CherryPy não vem pré-carregada https://
 developers.google.com/appengine/docs/python/tools/
 libraries27
      èTens que empacotar o zip junto e
 dinamicamente adicionar no path




            è Ou seja: não é problema, funciona ok
Coisas ruins GAE
•    Modelo limitado/Sandbox – mais proteção, mas… mais
     restrição
•    (2011) Não suporta(va) Full Text Search (pense CMS).
     Aparentemente ok em 2012: http://
     googleappengine.blogspot.com.br/2012/05/looking-for-search-find-it-
     on-google.html
•    (2011) Algumas operações, só com SDK de linha de comando.
     Inexistência de GUI Launcher pra Linux (só Windows e Mac).
•    Nem todas APIs oficiais são implementadas (ex trivial:
     Thread/ThreadGroup Java)
•    Muita coisa JPA aponta pra JDO, que está obsoleto
•    (2011) Console Java mais limitado que o Python
•    (2011) Servidor DEV/PC não suporta “background tasks” no
     Python (GAE Era Preview até Setembro de 2011!!!)
Coisas ruins GAE

•         Domínio customizado requer conta Google Apps (mas é free
          pra 10 contas de usuário/colaborador/funcionário/whatever)
•         Ativar 1 conta GAE/Developer requer 1 telefone celular. 3
          domínios? Arrume 3 celulares J
•         Não faz routing de domínio puro (foo.com) pra app. Tem que
          ser algo como www.foo.com
     •     è Se usares www, tens que primeiro habilitar Sites, mudar
           esse de www pra www2 ou algo assim, pra sua app poder
           servir www.seuDominio.com
•         Tipo de autenticação da App não pode mudar após criado o
          seu ID
•         Multithreaded p/ Python demorou a ser ativado (só agora
          com Python 2.7). Era CGI ao invés de WSGI. (Mas Java já era
          MT ok)
Coisas ruins GAE: PhD pra entender Índices

•     Todas as queries usam índices
•     Alguns índices são gerados automaticamente pra você
•     Queries mais elaboradas precisam de índices pré-definidos/
      criados no arquivo index.yaml
•     Caso a query precise de um índice e esse não exista ainda,
      vai dar erro/exceção
•     O sistema tenta criar os índices pra você baseado nas queries
      de desenvolvimento DEV/PC
Google Could SQL é pago

è Não dá pra ser enxuto se quiseres SQL ao invés de NoSQL
Alguns Limites em geral

è Fique atento… https://developers.google.com/appengine/
   docs/python/runtime#Quotas_and_Limits
Limites Free à Pago

è Datastore:




è Log:
Limites Free à Pago

è Bandwidth:




è tasks:




            Mais: https://developers.google.com/appengine/docs/quotas
The Ugly: LLL




                   (Coisas bem ruins no GAE)
Coisas bem ruins GAE
•    Acesso SSH? Esquece
•    Precisou de uma ferramenta extra, tipo Sphinx? Esquece!
     Lembre: Não tens um console Linux. PaaS!
Coisas bem ruins GAE: HTTPS
•         Não suporta (va) HTTPS se sua app está com um domain
          “bonito” tipo foo.bar.com (mas OK na forma
          foo.appspot.com). http://code.google.com/p/
          googleappengine/issues/detail?id=792
     •     Isso vai me dificultar adicionar pagamento online VISA no
           www.betterdeveloper.net
     •     Teoricamente arrumado em 06/2012 com SNI (Server
           Name Indication) @ US$9/mês ou VIP (Virtual IP) @ US
           $99/mês - http://googleappengine.blogspot.com.br/
           2012/06/google-app-engine-170-released-at.html
Coisas bem ruins GAE: JPA “Alfa” (tvz ok em 2012?)
•         (2011) Implementação JPA em cima de Datanucleous não
          era oficialmente suportada pelo pessoal Datanucleous.
          Muita limitação, muita dor de cabeça!!!
     •     Exemplo: Uma entidade "pai"e uma "filha" nao podem
           ambas ter @Id sendo um Long. A do filho tem que usar a
           classe proprietária Key da Google. Vejam http://
           code.google.com/p/datanucleus-appengine/issues/detail?
           id=26 . Foi pro espaço sua portabilidade JPA!!!!
          •  è Aparentemente arrumaram em 2012: http://
             code.google.com/p/datanucleus-appengine/source/
             browse/branches/2_0_0/dist/RELEASE_NOTES.ORM
Coisas bem ruins GAE: App Engine Data != Big Data
1.  JÁ QUE Google tem MapReduce & tem NoSQL Datastore
2.  E JÁ QUE GAE roda na infra Google
•         ENTÃO OBVIAMENTE minha GAE App pode ter BigData e eu
          fazer MapReduce nos dados, certo? NÃO! Infelizmente, tens
          que:
a.  OU usar o produto BigQuery https://cloud.google.com/
    products/big-query
b.  OU usar Library MapReduce http://code.google.com/p/
    appengine-mapreduce/ , https://developers.google.com/
    appengine/docs/python/dataprocessing/overview (“ALFA”)
     •     Que por ora só tem o Mapper API (sem Reduce) http://
           googleappengine.blogspot.com.br/2010/07/introducing-
           mapper-api.html?m=1 , https://developers.google.com/
           appengine/articles/mr/mapper
Coisas bem ruins GAE: Queries impossíveis GQL
   è Testar 2 inequalidades de 2 propriedades distintas não rola
Coisas ruins GAE

•      Portabilidade Problemática. Será que http://
       en.wikipedia.org/wiki/AppScale é viável? Não testei.




     è Sentiu-se atolando na areia movediça da plataforma proprietária?
Conclusão
•    Às Vezes o Barato Sai Caro… O Desafio é escolher o barato
     certo (Linux Admin ou GAE Fees?)
          •    Try Before You Buy
          •    Your Mileage May Vary

•    “Valeu à Pena? Tudo Vale a Pena se a Alma Não é
     Pequena” --– Fernando Pessoa
     •    Investigue tb Heroku, Azure, etc
     •    Investigue tb Do-It-Yourself com Amazon EC2 e/ou
          Amazon SimpleDB e/ou Amazon MapReduce (Hadoop)
Obrigado!        E Lembre-se…


 “To Know and not to do, is not to know”

       http://en.wikipedia.org/wiki/Google_App_Engine
Slides em PDF no Site



        http://www.BetterDeveloper.net/downloads.html

Más contenido relacionado

La actualidad más candente

Ebook - Processo de Otimização de Sites WordPress
Ebook - Processo de Otimização de Sites WordPressEbook - Processo de Otimização de Sites WordPress
Ebook - Processo de Otimização de Sites WordPressDaniel Paz
 
Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Acquia
 
PHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPPHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPFlávio Lisboa
 
Construindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressConstruindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressLeo Baiano
 
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoIonic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoAlamo Saravali
 
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Leo Baiano
 
WordCamp Floripa 2021 - Daniel - Core web vitals e WordPress
WordCamp Floripa 2021 - Daniel  - Core web vitals e WordPressWordCamp Floripa 2021 - Daniel  - Core web vitals e WordPress
WordCamp Floripa 2021 - Daniel - Core web vitals e WordPressWordCamp Floripa
 
Iniciando com o_zend_framework
Iniciando com o_zend_frameworkIniciando com o_zend_framework
Iniciando com o_zend_frameworkMilton Rodrigues
 
Atualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.xAtualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.xRodrigo Urubatan
 
Apresentação wild fly-semrevisao
Apresentação wild fly-semrevisaoApresentação wild fly-semrevisao
Apresentação wild fly-semrevisaoRogerio Fontes
 
Javabahia applets novojavaplugin
Javabahia applets novojavapluginJavabahia applets novojavaplugin
Javabahia applets novojavapluginSerge Rehem
 
Trabalhando em ambientes php com docker
Trabalhando em ambientes php com dockerTrabalhando em ambientes php com docker
Trabalhando em ambientes php com dockerAlef Castelo
 

La actualidad más candente (18)

Top Plugins Wordpress
Top Plugins WordpressTop Plugins Wordpress
Top Plugins Wordpress
 
Ebook - Processo de Otimização de Sites WordPress
Ebook - Processo de Otimização de Sites WordPressEbook - Processo de Otimização de Sites WordPress
Ebook - Processo de Otimização de Sites WordPress
 
Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8
 
Cake Php
Cake PhpCake Php
Cake Php
 
Web Performance Client Side
Web Performance Client SideWeb Performance Client Side
Web Performance Client Side
 
PHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHPPHP Papa-Léguas: Performance em PHP
PHP Papa-Léguas: Performance em PHP
 
Dominando o customizer
Dominando o customizerDominando o customizer
Dominando o customizer
 
Construindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPressConstruindo sites e sistemas com WordPress
Construindo sites e sistemas com WordPress
 
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoIonic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
 
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
 
WordCamp Floripa 2021 - Daniel - Core web vitals e WordPress
WordCamp Floripa 2021 - Daniel  - Core web vitals e WordPressWordCamp Floripa 2021 - Daniel  - Core web vitals e WordPress
WordCamp Floripa 2021 - Daniel - Core web vitals e WordPress
 
Plugin Maven no Eclipse
Plugin Maven no EclipsePlugin Maven no Eclipse
Plugin Maven no Eclipse
 
Iniciando com o_zend_framework
Iniciando com o_zend_frameworkIniciando com o_zend_framework
Iniciando com o_zend_framework
 
Web Offline
Web OfflineWeb Offline
Web Offline
 
Atualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.xAtualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.x
 
Apresentação wild fly-semrevisao
Apresentação wild fly-semrevisaoApresentação wild fly-semrevisao
Apresentação wild fly-semrevisao
 
Javabahia applets novojavaplugin
Javabahia applets novojavapluginJavabahia applets novojavaplugin
Javabahia applets novojavaplugin
 
Trabalhando em ambientes php com docker
Trabalhando em ambientes php com dockerTrabalhando em ambientes php com docker
Trabalhando em ambientes php com docker
 

Destacado

Congreso visión 2012 - taller introducción app engine
Congreso visión 2012 - taller introducción app engineCongreso visión 2012 - taller introducción app engine
Congreso visión 2012 - taller introducción app engineNigeŗ Arce
 
Digital Training (SEO: search engine optimization)
Digital Training (SEO: search engine optimization)Digital Training (SEO: search engine optimization)
Digital Training (SEO: search engine optimization)Carlos De La Ossa
 
produção de games com tecnologia livre ou proprietária, Qual usar?
produção de games com tecnologia livre ou proprietária, Qual usar?produção de games com tecnologia livre ou proprietária, Qual usar?
produção de games com tecnologia livre ou proprietária, Qual usar?Renan Nespolo
 
TDD com Python e App Engine
TDD com Python e App EngineTDD com Python e App Engine
TDD com Python e App EngineRicardo Bánffy
 
Was User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AG
Was User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AGWas User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AG
Was User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AGONE Schweiz
 
Mehr Wert für Gesellschaft und Unternehmen - Ratgeber für wirkungsvolle Unter...
Mehr Wert für Gesellschaft und Unternehmen - Ratgeber für wirkungsvolle Unter...Mehr Wert für Gesellschaft und Unternehmen - Ratgeber für wirkungsvolle Unter...
Mehr Wert für Gesellschaft und Unternehmen - Ratgeber für wirkungsvolle Unter...PHINEO gemeinnützige AG
 
Presentation SEO/SEM
Presentation SEO/SEMPresentation SEO/SEM
Presentation SEO/SEMHicham SBINI
 
Performance im Fokus
Performance im FokusPerformance im Fokus
Performance im FokusInxmail GmbH
 
Adforallprsentation 100914100808 Phpapp02
Adforallprsentation 100914100808 Phpapp02Adforallprsentation 100914100808 Phpapp02
Adforallprsentation 100914100808 Phpapp02fabrice_TALAZAC
 
Linkbaiting - SEMSEO 2011
Linkbaiting - SEMSEO 2011Linkbaiting - SEMSEO 2011
Linkbaiting - SEMSEO 2011get on top gmbh
 
коллекция Audi в миниатюре
коллекция Audi в миниатюреколлекция Audi в миниатюре
коллекция Audi в миниатюреVag-Express
 
Maklerkommunikation 2.0 – Vortrag auf der DKM 2012 in Dortmund
Maklerkommunikation 2.0 – Vortrag auf der DKM 2012 in DortmundMaklerkommunikation 2.0 – Vortrag auf der DKM 2012 in Dortmund
Maklerkommunikation 2.0 – Vortrag auf der DKM 2012 in DortmundCybay New Media
 
Social Media für Unternehmen und Institutionen
Social Media für Unternehmen und InstitutionenSocial Media für Unternehmen und Institutionen
Social Media für Unternehmen und InstitutionenChristian Moeller
 

Destacado (20)

Congreso visión 2012 - taller introducción app engine
Congreso visión 2012 - taller introducción app engineCongreso visión 2012 - taller introducción app engine
Congreso visión 2012 - taller introducción app engine
 
Pictures mix
Pictures mixPictures mix
Pictures mix
 
Aula de Risoto
Aula de Risoto Aula de Risoto
Aula de Risoto
 
Digital Training (SEO: search engine optimization)
Digital Training (SEO: search engine optimization)Digital Training (SEO: search engine optimization)
Digital Training (SEO: search engine optimization)
 
SMM-SEO.SEM
SMM-SEO.SEMSMM-SEO.SEM
SMM-SEO.SEM
 
produção de games com tecnologia livre ou proprietária, Qual usar?
produção de games com tecnologia livre ou proprietária, Qual usar?produção de games com tecnologia livre ou proprietária, Qual usar?
produção de games com tecnologia livre ou proprietária, Qual usar?
 
TDD com Python e App Engine
TDD com Python e App EngineTDD com Python e App Engine
TDD com Python e App Engine
 
Was User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AG
Was User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AGWas User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AG
Was User lieben, was sie hassen - Gregor Urech, Sibylle Peuker, Zeix AG
 
Mehr Wert für Gesellschaft und Unternehmen - Ratgeber für wirkungsvolle Unter...
Mehr Wert für Gesellschaft und Unternehmen - Ratgeber für wirkungsvolle Unter...Mehr Wert für Gesellschaft und Unternehmen - Ratgeber für wirkungsvolle Unter...
Mehr Wert für Gesellschaft und Unternehmen - Ratgeber für wirkungsvolle Unter...
 
Presentation SEO/SEM
Presentation SEO/SEMPresentation SEO/SEM
Presentation SEO/SEM
 
20100506 JAX BPMN 2.0 in der Praxis
20100506 JAX BPMN 2.0 in der Praxis20100506 JAX BPMN 2.0 in der Praxis
20100506 JAX BPMN 2.0 in der Praxis
 
Performance im Fokus
Performance im FokusPerformance im Fokus
Performance im Fokus
 
Adforallprsentation 100914100808 Phpapp02
Adforallprsentation 100914100808 Phpapp02Adforallprsentation 100914100808 Phpapp02
Adforallprsentation 100914100808 Phpapp02
 
Linkbaiting - SEMSEO 2011
Linkbaiting - SEMSEO 2011Linkbaiting - SEMSEO 2011
Linkbaiting - SEMSEO 2011
 
Noções de Search Engine
Noções de Search EngineNoções de Search Engine
Noções de Search Engine
 
Ogre Game Engine
Ogre Game EngineOgre Game Engine
Ogre Game Engine
 
Communicating sustainibility
Communicating sustainibilityCommunicating sustainibility
Communicating sustainibility
 
коллекция Audi в миниатюре
коллекция Audi в миниатюреколлекция Audi в миниатюре
коллекция Audi в миниатюре
 
Maklerkommunikation 2.0 – Vortrag auf der DKM 2012 in Dortmund
Maklerkommunikation 2.0 – Vortrag auf der DKM 2012 in DortmundMaklerkommunikation 2.0 – Vortrag auf der DKM 2012 in Dortmund
Maklerkommunikation 2.0 – Vortrag auf der DKM 2012 in Dortmund
 
Social Media für Unternehmen und Institutionen
Social Media für Unternehmen und InstitutionenSocial Media für Unternehmen und Institutionen
Social Media für Unternehmen und Institutionen
 

Similar a Google app engine para lean startups: the good, the bad and the ugly

Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
Guião demotécnica
Guião demotécnicaGuião demotécnica
Guião demotécnicaSilvio Dias
 
Guiao demotecnica
Guiao demotecnicaGuiao demotecnica
Guiao demotecnicaSilvio Dias
 
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
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sitesthiagolima
 
APIs gerenciadas de ponta a ponta - construção
APIs gerenciadas de ponta a ponta - construçãoAPIs gerenciadas de ponta a ponta - construção
APIs gerenciadas de ponta a ponta - construçãoFábio Rosato
 
Ajax para quem_ouviu_falar
Ajax para quem_ouviu_falarAjax para quem_ouviu_falar
Ajax para quem_ouviu_falarCharleston Anjos
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
Master App - Porque menos é mais!
Master App - Porque menos é mais!Master App - Porque menos é mais!
Master App - Porque menos é mais!Rodrigo Serradura
 
Desenvolvimento de Sistemas Web - HTML5 - Introdução
Desenvolvimento de Sistemas Web - HTML5 - IntroduçãoDesenvolvimento de Sistemas Web - HTML5 - Introdução
Desenvolvimento de Sistemas Web - HTML5 - IntroduçãoFabio Moura Pereira
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Bruno Rocha
 

Similar a Google app engine para lean startups: the good, the bad and the ugly (20)

Python e Golang - Parte 1
Python e Golang - Parte 1Python e Golang - Parte 1
Python e Golang - Parte 1
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Guião demotécnica
Guião demotécnicaGuião demotécnica
Guião demotécnica
 
Guiao demotecnica
Guiao demotecnicaGuiao demotecnica
Guiao demotecnica
 
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
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
APIs gerenciadas de ponta a ponta - construção
APIs gerenciadas de ponta a ponta - construçãoAPIs gerenciadas de ponta a ponta - construção
APIs gerenciadas de ponta a ponta - construção
 
GWT
GWTGWT
GWT
 
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
 
Java no Google App Engine - TDC2011
Java no Google App Engine - TDC2011Java no Google App Engine - TDC2011
Java no Google App Engine - TDC2011
 
Ajax para quem_ouviu_falar
Ajax para quem_ouviu_falarAjax para quem_ouviu_falar
Ajax para quem_ouviu_falar
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
1409243945064
14092439450641409243945064
1409243945064
 
Master App - Porque menos é mais!
Master App - Porque menos é mais!Master App - Porque menos é mais!
Master App - Porque menos é mais!
 
Java Nuvem Appengine
Java Nuvem AppengineJava Nuvem Appengine
Java Nuvem Appengine
 
Desenvolvimento de Sistemas Web - HTML5 - Introdução
Desenvolvimento de Sistemas Web - HTML5 - IntroduçãoDesenvolvimento de Sistemas Web - HTML5 - Introdução
Desenvolvimento de Sistemas Web - HTML5 - Introdução
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011
 

Más de PET Computação

Cooperação e Codificação de Rede Aplicadas as RSSF Industriais
Cooperação e Codificação de Rede Aplicadas as RSSF IndustriaisCooperação e Codificação de Rede Aplicadas as RSSF Industriais
Cooperação e Codificação de Rede Aplicadas as RSSF IndustriaisPET Computação
 
Redes de Sensores e Robôs: Um novo paradigma de Monitoramento e Atuação
Redes de Sensores e Robôs: Um novo paradigma de Monitoramento e AtuaçãoRedes de Sensores e Robôs: Um novo paradigma de Monitoramento e Atuação
Redes de Sensores e Robôs: Um novo paradigma de Monitoramento e AtuaçãoPET Computação
 
MapReduce: teoria e prática
MapReduce: teoria e práticaMapReduce: teoria e prática
MapReduce: teoria e práticaPET Computação
 
Processamento e visualização tridimensional de imagens de Satelite e Radar
Processamento e visualização tridimensional de imagens de Satelite e RadarProcessamento e visualização tridimensional de imagens de Satelite e Radar
Processamento e visualização tridimensional de imagens de Satelite e RadarPET Computação
 
Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...
Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...
Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...PET Computação
 
Testes de escalabilidade usando cloud
Testes de escalabilidade usando cloudTestes de escalabilidade usando cloud
Testes de escalabilidade usando cloudPET Computação
 
Bancos de dados nas nuvens: uma visão geral
Bancos de dados nas nuvens: uma visão geralBancos de dados nas nuvens: uma visão geral
Bancos de dados nas nuvens: uma visão geralPET Computação
 
Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...
Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...
Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...PET Computação
 
Cloud computing: evolution or redefinition
Cloud computing: evolution or redefinitionCloud computing: evolution or redefinition
Cloud computing: evolution or redefinitionPET Computação
 
Rastreamento de objetos utilizando ar drone
Rastreamento de objetos utilizando ar droneRastreamento de objetos utilizando ar drone
Rastreamento de objetos utilizando ar dronePET Computação
 
Processamento e visualização tridimensional de imagens de satelite e radar
Processamento e visualização tridimensional de imagens de satelite e radarProcessamento e visualização tridimensional de imagens de satelite e radar
Processamento e visualização tridimensional de imagens de satelite e radarPET Computação
 
Evoluindo dot project em alinhamento ao pmbok
Evoluindo dot project em alinhamento ao pmbokEvoluindo dot project em alinhamento ao pmbok
Evoluindo dot project em alinhamento ao pmbokPET Computação
 
Apresentação geral do gqs - Usabilidade na convergência digital - Customizaç...
Apresentação geral do gqs -  Usabilidade na convergência digital - Customizaç...Apresentação geral do gqs -  Usabilidade na convergência digital - Customizaç...
Apresentação geral do gqs - Usabilidade na convergência digital - Customizaç...PET Computação
 
Com a cabeça nas nuvens: montando ambientes para aplicações elásticas
 Com a cabeça nas nuvens: montando ambientes para aplicações elásticas Com a cabeça nas nuvens: montando ambientes para aplicações elásticas
Com a cabeça nas nuvens: montando ambientes para aplicações elásticasPET Computação
 

Más de PET Computação (20)

Refactoring like a boss
Refactoring like a bossRefactoring like a boss
Refactoring like a boss
 
Linux em tempo real
Linux em tempo realLinux em tempo real
Linux em tempo real
 
Cooperação e Codificação de Rede Aplicadas as RSSF Industriais
Cooperação e Codificação de Rede Aplicadas as RSSF IndustriaisCooperação e Codificação de Rede Aplicadas as RSSF Industriais
Cooperação e Codificação de Rede Aplicadas as RSSF Industriais
 
Redes de Sensores e Robôs: Um novo paradigma de Monitoramento e Atuação
Redes de Sensores e Robôs: Um novo paradigma de Monitoramento e AtuaçãoRedes de Sensores e Robôs: Um novo paradigma de Monitoramento e Atuação
Redes de Sensores e Robôs: Um novo paradigma de Monitoramento e Atuação
 
MapReduce: teoria e prática
MapReduce: teoria e práticaMapReduce: teoria e prática
MapReduce: teoria e prática
 
Processamento e visualização tridimensional de imagens de Satelite e Radar
Processamento e visualização tridimensional de imagens de Satelite e RadarProcessamento e visualização tridimensional de imagens de Satelite e Radar
Processamento e visualização tridimensional de imagens de Satelite e Radar
 
Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...
Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...
Software Evolution: From Legacy Systems, Service Oriented Architecture to Clo...
 
Planejamento automático
Planejamento automáticoPlanejamento automático
Planejamento automático
 
Testes de escalabilidade usando cloud
Testes de escalabilidade usando cloudTestes de escalabilidade usando cloud
Testes de escalabilidade usando cloud
 
Bancos de dados nas nuvens: uma visão geral
Bancos de dados nas nuvens: uma visão geralBancos de dados nas nuvens: uma visão geral
Bancos de dados nas nuvens: uma visão geral
 
Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...
Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...
Uma reflexão sobre os 28 anos de pesquisa no laboratório de integração de sof...
 
Cloud computing: evolution or redefinition
Cloud computing: evolution or redefinitionCloud computing: evolution or redefinition
Cloud computing: evolution or redefinition
 
Rastreamento de objetos utilizando ar drone
Rastreamento de objetos utilizando ar droneRastreamento de objetos utilizando ar drone
Rastreamento de objetos utilizando ar drone
 
Processamento e visualização tridimensional de imagens de satelite e radar
Processamento e visualização tridimensional de imagens de satelite e radarProcessamento e visualização tridimensional de imagens de satelite e radar
Processamento e visualização tridimensional de imagens de satelite e radar
 
Evoluindo dot project em alinhamento ao pmbok
Evoluindo dot project em alinhamento ao pmbokEvoluindo dot project em alinhamento ao pmbok
Evoluindo dot project em alinhamento ao pmbok
 
Ensinar com jogos
Ensinar com jogosEnsinar com jogos
Ensinar com jogos
 
Apresentação geral do gqs - Usabilidade na convergência digital - Customizaç...
Apresentação geral do gqs -  Usabilidade na convergência digital - Customizaç...Apresentação geral do gqs -  Usabilidade na convergência digital - Customizaç...
Apresentação geral do gqs - Usabilidade na convergência digital - Customizaç...
 
Latex
LatexLatex
Latex
 
Ferramenta git
Ferramenta gitFerramenta git
Ferramenta git
 
Com a cabeça nas nuvens: montando ambientes para aplicações elásticas
 Com a cabeça nas nuvens: montando ambientes para aplicações elásticas Com a cabeça nas nuvens: montando ambientes para aplicações elásticas
Com a cabeça nas nuvens: montando ambientes para aplicações elásticas
 

Último

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxLusGlissonGud
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfLuizaAbaAba
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecniCleidianeCarvalhoPer
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAHELENO FAVACHO
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasSocorro Machado
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfHELENO FAVACHO
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...HELENO FAVACHO
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 

Último (20)

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 

Google app engine para lean startups: the good, the bad and the ugly

  • 1. Google App Engine para Startups Enxutas: The Good, The Bad and The Ugly Marcio Marchini marcio@betterdeveloper.net
  • 2. Explicando o Título 1. The Good, The Bad and The Ugly (Um clássico a ser assistido…)
  • 3. Explicando o Título 2.  Startups Enxutas (Um bom livro a ser lido…)
  • 4. Explicando o Título 3.  Goole App Engine (Uma Platform as a Service a ser explorada…)
  • 5. PaaS, IaaS, etc Ex. VOCÊ! Ex. GAE Ex. EC2 Fonte: Wikipedia
  • 6. GAE Datastore: Comparativo Imagem do Artigo: “Banco de dados como serviço” / revista “tema” / SERPRO
  • 7. GAE: PaaS Vamos ao que Interessa pra sua Startup Enxuta…
  • 8. Lição Lean Startup #1: Web Site Estático Escalável 1.  Uma App no App Engine pode ter parte estática e parte dinâmica (Python, Java, etc) 2.  O Web Site de sua empresa pode começar 100% estático 3.  E pode ser escalável… (brabilhões de visitantes) 4.  E sem admin Linux, EC2 etc… ($$$) 5.  E sem pagar taxa de hosting pra uso normal… ($) 6.  E sem se incomodar com DDoS etc 7.  …
  • 9. Bebemos o Próprio Champagne… (nosso site é uma app GAE)
  • 10. Matamos a Cobra e Mostramos o Pau: Site Estático no GAE 1.  Vamos escolher um site estático qualquer na web o e vamos colocá-lo no GAE. Exemplo aleatório: http://www.promote-web-sites.com 2.  Vamos fazer download de suas páginas: wget --mirror -p --convert-links -P . http://www.promote- web-sites.com 3.  Faz de conta que esse é o meu site. Vamos colocá-lo no GAE? è Mova as páginas HTML para uma pasta static , dentro do nossa pasta betdevgaenosql mv ./www.promote-web-sites.com/* /Users/mqm/ betdevgaenosql/static
  • 11. (2/4): Site Estático no GAE 4.  Editemos app.yaml para poder servir páginas estáticas
  • 12. (3/4): Site Estático no GAE – Testando Localmente 5.  Clique Run (botão verde) 6.  Visite: http://localhost:8080/ 7.  Site estático!!
  • 13. (4/4): Site Estático no GAE - Deploy 8.  Clique Deploy no GAE Launcher (botão azul) 9.  Visite: http://betdevgaenosql.appspot.com/ 10. Site estático!! (com URL feia L)
  • 14. Recapitulando •  Uma Google App (em Python, Java, etc) pode servir conteúdo estático •  Podes fazer upload de seu site hoje •  Mas… como coloco uma URL raiz com meu domínio (ex. www.betterdeveloper.net) ao invés de *.appspot.com ?
  • 15. Lição Lean Startup #2: Sua Página, Seu Domínio, GAE 1.  Registre seu domínio em registro.br ou web.com ou outro Registrar qualquer 2.  Crie uma conta (gratuita) em www.ZoneEdit.com 3.  Adicione uma Zone no ZoneEdit, correspondente ao seu domínio 4.  No seu Registrar, aponte o DNS para os valores do ZoneEdit.com (ex. ns10.zoneedit.com , etc) 5.  Adicione a entrada A e CNAME conforme abaixo
  • 16. Sua Página, Seu Domínio, GAE 6.  Crie uma conta gratuita Google Apps (<=10 contas no seu domínio) 7.  Cria sua Google App nesse domínio 8.  Crie o mapeamento de www no Google App para sua App 9.  Deverá funcionar, igual ao www.betterdeveloper.net
  • 17. Lição Lean Startup #3: Versões Distintas, Rollback 1.  Temos que habilitar a versão 2 do site 2.  Habilite o radio button, clique Make Default 3.  Clique no “2”ao lado do radio button. Ele vai disparar a versão 2 do site 4.  Clique no “1”ao lado do radio button. Ele vai disparar a versão 1 do site (original)
  • 18. Lição Lean Startup #4: Versione seu conteúdo 1.  Use Git ou Svn pra versionar os fontes do seu site. Use TAGs por exemplo pra mapear pra versão ativa no ar (slide anterior) 2.  Use uma conta gratuita xp-dev.com – pode ter 1 projeto não Open Source, gratuitamente 3.  Agora você tem rastreabilidade e governança de fontes e versões no ar, gratuitamente. Fontes na Cloud (XP-Dev). “Binário”/site na Cloud (GAE)”. Super Lean. 4.  Ative o TRAC como sistema de tickets no XP-DEV. Pronto, agora até suas sprints/backlogs/feature requests/bug fixes tem Roadmap na web e governança na empresa.
  • 19. Hello World no Estilo GAE Hello, World!
  • 20. GAE Hello World & Elasticidade (2011/06, Wicket) http://<helloworld>.appspot.com , simulando 250 usuários concorrentes por 10 minutos com http://sourceforge.net/projects/dieseltest/
  • 21. GAE Hello World & Elasticidade (2011/06, Wicket)
  • 22. GAE “Hello World” de Datastore (2011/06, Wicket) CRUD de Redes de Hotéis e Hotéis
  • 23. GAE “Hello World” de Datastore (2011/06, Wicket) GUI versus Datastore
  • 24. The Good: J (Coisas legais/boas no GAE)
  • 25. Coisas boas GAE - Performance •  5 milhões de pageviews / mês gratuitamente. Chega pra ti? •  Memchache distribuído, sem você precisar instalar/ configurar •  Conteúdo estático servido por servidores dedicados, transparentemente. Não precisas penar configurando load balancers / nginx etc e tal. •  Mantém sua app em RAM o máximo que dá (performance) •  Suporta tasks/background, no estilo cron •  Logging fácil, memcache fácil •  Utiliza o performático Jetty, envenenado: http:// www.infoq.com/news/2009/08/google-chose-jetty •  Suporte a SDPY na sua app http://dev.chromium.org/spdy/ spdy-whitepaper
  • 26. Coisas boas GAE – Traffic Splitting •  A/B Testing etc etc
  • 27. Coisas boas GAE – IDEs etc •  Suporte a Python, Go, Java (e linguagens que rodam na JVM) •  Roda frameworks tipo Java Apache Wicket, Python CherryPy. Suporta GWT etc. https:// spreadsheets.google.com/a/betterdeveloper.net/pub? key=pRJ_0hajVrhacLjp3HqD5ew •  Suportado por Eclipse (plugin GAE), PyCharm etc •  Suporta Ant •  Podes testar localmente antes •  Console interativo Python – rode snippets direto no servidor, “peek/poke” •  Sua app pode receber email, entra como http request (GAE cuida disso).
  • 28. Coisas boas GAE - Storage •  Datastore “schemaless”. Fácil prototipar e evoluir. •  O NoSQL pode buscar baseado em propriedades •  Versão dev local analisa perfil de uso e já otimiza índices do datastore •  SDK suporta upload/download de dados em modo “bulk” •  JPA significa que podes entrar/sair do GAE com mais facilidade (evita lock-in). Well… (veja The Ugly) •  Datastore pode gerar unique keys automaticamente •  Memcache obedece standard JCache •  Memcache viewer no Python SDK •  Podes fazer sync GAE-NoSQL ßà MySQL externo com https://github.com/k7d/approcket/wiki
  • 29. Coisas boas GAE – Storage Relacional •  Não é só NoSQL. MySQL também suportado (Mas sem quota gratuita) •  http://googleappengine.blogspot.com.br/2012/05/cloud- sql-pick-plan-that-fits-your-app.html •  https://developers.google.com/cloud-sql/
  • 30. Coisas boas GAE •  Console pra administração •  Múltiplas versões da app rodando concorrentemente •  Podes fazer uma app só pra sua “Intranet” – apenas membros do seuDominio.com tem acesso •  10 apps GAE por developer •  Sem Ads, mesmo nas apps free / conta free (ex. Gmail) •  Pode-se definir um limite máximo de custo por dia •  Boa integração com APIs Google: login, gtalk, imagens, etc •  Paypal ok: http://www.dzone.com/links/ setting_up_paypal_ipn_handling_on_google_app_engi.html •  Possível mandar email pra app via XMPP, do console, pra testes
  • 31. Coisas boas GAE •  Duas implementações novas, não proprietárias •  http://en.wikipedia.org/wiki/AppScale It has support for Python, Go, and Java applications, taking the open source SDK provided by Google App Engine and implementing scalable services such as the datastore, memcache, blobstore, users API, and channel API. •  http://code.google.com/p/typhoonae/ (BETA)
  • 32. Coisas boas GAE •  Google Data Centers http://www.google.com/about/datacenters/ inside/index.html
  • 33. The Bad: L (Coisas ruins no GAE – na nossa opinião)
  • 34. Coisas ruins GAE… •  Livros obsoletos. Exemplo: dica de “main”/Python pra cache em Programming Google App Engine: não mais necessário com Python 2.7 (veja https:// developers.google.com/appengine/docs/python/ python25/migrate27#wsgi )
  • 35. Coisas ruins GAE… •  Feito pra requests que demorem <1s. Se demorar >60s, você é assassinado (no livro – obsoleto - fala 30s, mas https://developers.google.com/ appengine/docs/python/ runtime#The_Request_Timer diz 60. •  File Upload? Que mais demora >60s na web? •  Async URL fetch serve pra mitigar a maioria dos cenários
  • 36. New Relic não Rola L “The restrictions that exist under Google App Engine, such as those on background threads, as well as how processes are managed, mean that the Python agent as it is implemented at present will not work as is. There are no plans at this point to support Google App Engine.” è Use o Dashboard “toco-duro” GAE… L
  • 37. Apple iOS Push Notification não Rola L Sandbox: não podes abrir conexão socket pros servidores de Push da Apple è Precisas de uma máquina na EC2 etc que responda à sua app no GAE via REST e essa sim faz o push pra Apple. Sugestão: RabbitMQ/REST http://code.google.com/p/amqp-rest/ è Ou: espera o Beta graduar: http:// code.google.com/p/googleappengine/issues/detail? id=1164
  • 38. WebSockets não rola L Algo tipo Trello, que usa WebSockets (segundo artigo publicado), não funciona pelo mesmo motivo (conexões socket persistentes / longas) § Mas tem a Channel API: https://developers.google.com/appengine/docs/java/channel/ overview The Channel API creates a persistent connection between your application and Google servers, allowing your application to send messages to JavaScript clients in real time without the use of polling. This is useful for applications designed to update users about new information immediately. è Sentiu-se atolando na areia movediça da plataforma proprietária?
  • 39. Minha Framework Web Favorita não vem pré-carregada L CherryPy não vem pré-carregada https:// developers.google.com/appengine/docs/python/tools/ libraries27 èTens que empacotar o zip junto e dinamicamente adicionar no path è Ou seja: não é problema, funciona ok
  • 40. Coisas ruins GAE •  Modelo limitado/Sandbox – mais proteção, mas… mais restrição •  (2011) Não suporta(va) Full Text Search (pense CMS). Aparentemente ok em 2012: http:// googleappengine.blogspot.com.br/2012/05/looking-for-search-find-it- on-google.html •  (2011) Algumas operações, só com SDK de linha de comando. Inexistência de GUI Launcher pra Linux (só Windows e Mac). •  Nem todas APIs oficiais são implementadas (ex trivial: Thread/ThreadGroup Java) •  Muita coisa JPA aponta pra JDO, que está obsoleto •  (2011) Console Java mais limitado que o Python •  (2011) Servidor DEV/PC não suporta “background tasks” no Python (GAE Era Preview até Setembro de 2011!!!)
  • 41. Coisas ruins GAE •  Domínio customizado requer conta Google Apps (mas é free pra 10 contas de usuário/colaborador/funcionário/whatever) •  Ativar 1 conta GAE/Developer requer 1 telefone celular. 3 domínios? Arrume 3 celulares J •  Não faz routing de domínio puro (foo.com) pra app. Tem que ser algo como www.foo.com •  è Se usares www, tens que primeiro habilitar Sites, mudar esse de www pra www2 ou algo assim, pra sua app poder servir www.seuDominio.com •  Tipo de autenticação da App não pode mudar após criado o seu ID •  Multithreaded p/ Python demorou a ser ativado (só agora com Python 2.7). Era CGI ao invés de WSGI. (Mas Java já era MT ok)
  • 42. Coisas ruins GAE: PhD pra entender Índices •  Todas as queries usam índices •  Alguns índices são gerados automaticamente pra você •  Queries mais elaboradas precisam de índices pré-definidos/ criados no arquivo index.yaml •  Caso a query precise de um índice e esse não exista ainda, vai dar erro/exceção •  O sistema tenta criar os índices pra você baseado nas queries de desenvolvimento DEV/PC
  • 43. Google Could SQL é pago è Não dá pra ser enxuto se quiseres SQL ao invés de NoSQL
  • 44. Alguns Limites em geral è Fique atento… https://developers.google.com/appengine/ docs/python/runtime#Quotas_and_Limits
  • 45. Limites Free à Pago è Datastore: è Log:
  • 46. Limites Free à Pago è Bandwidth: è tasks: Mais: https://developers.google.com/appengine/docs/quotas
  • 47. The Ugly: LLL (Coisas bem ruins no GAE)
  • 48. Coisas bem ruins GAE •  Acesso SSH? Esquece •  Precisou de uma ferramenta extra, tipo Sphinx? Esquece! Lembre: Não tens um console Linux. PaaS!
  • 49. Coisas bem ruins GAE: HTTPS •  Não suporta (va) HTTPS se sua app está com um domain “bonito” tipo foo.bar.com (mas OK na forma foo.appspot.com). http://code.google.com/p/ googleappengine/issues/detail?id=792 •  Isso vai me dificultar adicionar pagamento online VISA no www.betterdeveloper.net •  Teoricamente arrumado em 06/2012 com SNI (Server Name Indication) @ US$9/mês ou VIP (Virtual IP) @ US $99/mês - http://googleappengine.blogspot.com.br/ 2012/06/google-app-engine-170-released-at.html
  • 50. Coisas bem ruins GAE: JPA “Alfa” (tvz ok em 2012?) •  (2011) Implementação JPA em cima de Datanucleous não era oficialmente suportada pelo pessoal Datanucleous. Muita limitação, muita dor de cabeça!!! •  Exemplo: Uma entidade "pai"e uma "filha" nao podem ambas ter @Id sendo um Long. A do filho tem que usar a classe proprietária Key da Google. Vejam http:// code.google.com/p/datanucleus-appengine/issues/detail? id=26 . Foi pro espaço sua portabilidade JPA!!!! •  è Aparentemente arrumaram em 2012: http:// code.google.com/p/datanucleus-appengine/source/ browse/branches/2_0_0/dist/RELEASE_NOTES.ORM
  • 51. Coisas bem ruins GAE: App Engine Data != Big Data 1.  JÁ QUE Google tem MapReduce & tem NoSQL Datastore 2.  E JÁ QUE GAE roda na infra Google •  ENTÃO OBVIAMENTE minha GAE App pode ter BigData e eu fazer MapReduce nos dados, certo? NÃO! Infelizmente, tens que: a.  OU usar o produto BigQuery https://cloud.google.com/ products/big-query b.  OU usar Library MapReduce http://code.google.com/p/ appengine-mapreduce/ , https://developers.google.com/ appengine/docs/python/dataprocessing/overview (“ALFA”) •  Que por ora só tem o Mapper API (sem Reduce) http:// googleappengine.blogspot.com.br/2010/07/introducing- mapper-api.html?m=1 , https://developers.google.com/ appengine/articles/mr/mapper
  • 52. Coisas bem ruins GAE: Queries impossíveis GQL è Testar 2 inequalidades de 2 propriedades distintas não rola
  • 53. Coisas ruins GAE •  Portabilidade Problemática. Será que http:// en.wikipedia.org/wiki/AppScale é viável? Não testei. è Sentiu-se atolando na areia movediça da plataforma proprietária?
  • 54. Conclusão •  Às Vezes o Barato Sai Caro… O Desafio é escolher o barato certo (Linux Admin ou GAE Fees?) •  Try Before You Buy •  Your Mileage May Vary •  “Valeu à Pena? Tudo Vale a Pena se a Alma Não é Pequena” --– Fernando Pessoa •  Investigue tb Heroku, Azure, etc •  Investigue tb Do-It-Yourself com Amazon EC2 e/ou Amazon SimpleDB e/ou Amazon MapReduce (Hadoop)
  • 55. Obrigado! E Lembre-se… “To Know and not to do, is not to know” http://en.wikipedia.org/wiki/Google_App_Engine
  • 56. Slides em PDF no Site http://www.BetterDeveloper.net/downloads.html