Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Desenvolvimento de Aplicações para o Google App Engine (CPBR5)

4,978 views

Published on

[Video: http://www.youtube.com/watch?feature=player_detailpage&v=nzo9dcCMi-4#t=1169s ] Palestra que introduz o desenvolvimento de aplicativos na plataforma do Google de forma pragmática, apresentada na 5a. edição (2012) do Campus Party (#cpbr5)

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THAT BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download doc Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book that can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer that is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story That Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money That the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths that Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Desenvolvimento de Aplicações para o Google App Engine (CPBR5)

  1. 1. desenvolvimento de aplicações para oGoogle App Engine http://slideshare.net/chesterbr
  2. 2. Proposta Apresentar de forma simples,prática e ao alcance de todos uma alternativa para a criação de aplicativos na web escaláveis. http://slideshare.net/chesterbr
  3. 3. Palestrante @chesterbr http://chester.me
  4. 4. não-especialista(ou seja: se esse mané pode, eu também posso!)
  5. 5. Como surgem os bons aplicativos web?
  6. 6. existem muitas lendas...
  7. 7. A mais popular
  8. 8. Dilema da Hospedagem Enquanto o site não fizer sucesso, vou ter que custear a hospedagemQuando ele crescer e meu provedor nãoaguentar, vou ter que mudar de provedor (e talvez de tecnologia) Quanto isso vai custar?
  9. 9. Dilema da Arquitetura Projetar uma arquitetura para escalar exige tempo e skills, que poderiam ser aplicados na aplicação em si (emparticular no início), mas deixar isso pra depois pode gerar um problema difícil
  10. 10. Google App Engine
  11. 11. EquilíbrioCrie seu aplicativo web rapidamente ea custo zero. Com alguns cuidados, ele vai se adaptar a volumes de tráfegomaiores e o custo de hospedagem será proporcional a este aumento.
  12. 12. Obstáculos O App Engine não é completamentediferente de outras arquiteturas, mas é preciso aprender coisas novas Nossa proposta hoje é ver essas coisas novas na prática
  13. 13. Escolhendo a Linguagem
  14. 14. ?
  15. 15. JavaÉ uma opção para quem já conhece ela (ou C#), mas muita coisa vai ter que ser feita do “jeito App Engine”(e não é lá muito popular hoje em dia...)
  16. 16. JavaX
  17. 17. Go Criada pelo próprio Google, é boa em tarefas que exigem muita CPU (écompilada e com tipos estáticos), mas o suporte ainda é experimental* e você vai ter pouca companhia * eles mesmos alertam: http://code.google.com/appengine/docs/
  18. 18. Go
  19. 19. Python Fácil de aprender, poderosa (dinâmica, funcional, interativa),estimula a escrita de código legível e tem uma comunidade muito ativa* *
  20. 20. Python
  21. 21. Hello, App Engine
  22. 22. Ingredientes● Google App Engine SDK para Python● Seu editor de textos favorito● Internet (para colocar no ar) (opcional: Eclipse + plugin do App Engine) http://code.google.com/appengine/downloads.html
  23. 23. SDK (Launcher) no Windows http://code.google.com/appengine/downloads.html
  24. 24. SDK (Launcher) no Mac http://code.google.com/appengine/downloads.html
  25. 25. Um app é uma pasta
  26. 26. Um app é uma pasta
  27. 27. app.yaml Descreve o seu aplicativo para osservidores do Google (nome, versão,linguagem), associando os endereços (ex.: “/”, “/noticias”) com o código
  28. 28. app.yamlapplication: meusiteversion: 1runtime: pythonapi_version: 1handlers:- url: /.* script: meusite.py
  29. 29. meusite.pyprint "Oi, Campus Party!"
  30. 30. Tá pronto, vamos rodar!
  31. 31. acrescentando no Launcher
  32. 32. diga onde ele está...
  33. 33. ...e solta o play!
  34. 34. era só isso?
  35. 35. Era!☺
  36. 36. Falando sério agora...
  37. 37. Criando via Launcher
  38. 38. Criando via Launcher
  39. 39. app.yamlapplication: siteserioversion: 1runtime: pythonapi_version: 1Handlers:- url: /favicon.ico static_files: favicon.ico upload: favicon.ico- url: .* script: main.py
  40. 40. main.py “sério”from google.appengine.ext import webappfrom google.appengine.ext.webapp import utilclass MainHandler(webapp.RequestHandler): def get(self): self.response.out.write(Hello world!)def main(): application = webapp.WSGIApplication( [(/, MainHandler)], debug=True) util.run_wsgi_app(application)if __name__ == __main__: main()
  41. 41. webapp É a biblioteca (framework) que mapeia(através de um objeto WSGIApplication) cada caminho (ou grupo deles) para a classe RequestHandler apropriada
  42. 42. Exemplo: site de notícias...def main(): application = webapp.WSGIApplication([ (/, HomeHandler), (/noticias, ListaNoticiasHandler), (/noticia/(w+), NoticiaHandler), ... ], debug=True) util.run_wsgi_app(application)...
  43. 43. Recuperando a notícia...class NoticiaHandler(webapp.RequestHandler): def get(self, id_not): # id_not contém o item entre # parênteses em /noticia/(w+) # ex.: /noticia/123 => id_not=123 noticia = dao.busca_noticia(id_not) # montando o html com os dados: html = template.render(/noticia.html, noticia) self.response.out.write(noticia)...
  44. 44. Template (noticia.html)<html> <body> <h1>{{titulo}}</h1> <h2>{{autor.nickname}}</h2> {{texto}} </body></html>
  45. 45. Parâmetros e REST...class AlgumHandler(webapp.RequestHandler): def get(self): # parâmetros de formulário (GET, POST): p = self.request.get(nome_parametro) # Outros verbos HTTP (i.e., REST): def post(self): ... def delete(self): ......
  46. 46. AlternativasO webapp é minimalista, mas se isso não agradar, o App Engine suporta outros frameworks populares http://www.franciscosouza.com.br/tag/frameworks/
  47. 47. Armazenando Dados
  48. 48. Jeito clássico (relacional)
  49. 49. Bancos RelacionaisTêm implementações maduras, facilitam operações robustas (ACID), mapeiam (mais-ou-menos) com classes/objetos, performam bem em servidor único e (quase) todo mundo sabe usar SQL mas...
  50. 50. Bancos Relacionais ...é difícil paralelizar sem afetar oaplicativo e/ou abrir mão de algumasdessas vantagens, o que tem levado à busca de novas alternativas
  51. 51. App Engine Datastore
  52. 52. Baseada no Bigtable, que é“Um mapa ordenado esparso, distribuído,persistente e multidimensional. O mapa é indexado por chave de linha, chave decoluna e data/hora; cada valor no mapa é um array não-interpretado de bytes” http://research.google.com/archive/bigtable-osdi06.pdf
  53. 53. Na práticaVamos usar uma estrutura mais simples, na qual o aplicativo vai cuidar de maiscoisas (ex.: consistência de dados), mas o sistema poderá escalar facilmente usando a estrutura do Google
  54. 54. Boa notíciaO App Engine reduz esse trabalho comclasses que encapsulam o Datastore na forma de “entidades” e permitem até consultar em estilo SQL (GQL) (só tome cuidado com as diferenças)
  55. 55. Exemplo...class Noticia(db.Model): id = db.IntegerProperty(required=True) titulo = db.StringProperty(required=True) texto = db.StringProperty(required=True) editoria = db.StringProperty(required=True, choices=set([politica, esportes, informatica])) data_criacao = db.DateTimeProperty( auto_now=True) data_publicacao = db.DateTimeProperty() autor = db.UserProperty() avaliacao = db.IntegerProperty() acessos = db.IntegerProperty()...
  56. 56. Cadastrando (put)... noticia = Noticia( id = 123, titulo = SOPA foi pro vinagre!, texto = bla bla bla bla, editoria = politica) noticia.put()...
  57. 57. Consulta (query)... # Montando a query q = Noticia.all() q.filter("editoria =", "esportes") q.order("-data_publicacao") # Executando a query noticias = q.fetch(10) for noticia in noticias: print noticia.titulo...
  58. 58. Consulta (query) com GQL... # Montando a query q = db.GqlQuery("SELECT * FROM Noticia " + "WHERE editoria = :1" + "ORDER BY data_publicacao DESC", "esportes") # Executando a query (não mudou nada!) noticias = q.fetch(10) for noticia in noticias: print noticia.titulo...
  59. 59. Índices Todas as consultas são baseadas em índices definidos no index.yaml (mascriados automaticamente à medida que você testa o site no servidor local) (sim, vale dar uma espiada no arquivo)
  60. 60. RestriçõesComo as buscas usam índices, existem algumas restrições. Por exemplo,desigualdades (<, <=, >=, >, !=) só podem afetar um campo por consulta. http://bit.ly/y3xtkk (Documentação: Restrições)
  61. 61. Restrições... # Query válida q = Noticia.all() q.filter("avaliacao >=", 3) q.filter("avaliacao <=", 8)... # Query INVÁLIDA q = Noticia.all() q.filter("avaliacao >=", 5) q.filter("acessos >=", 12)... http://bit.ly/y3xtkk (Documentação: Restrições)
  62. 62. MemcacheAlguns dados são muito mais acessadosque outros (working set), e o AppEngine disponbiliza o Memcache para manter esses dados em RAM
  63. 63. Memcache ... def busca_noticia(self, id): cache = memcache.Client() noticia = cache.get(id) if noticia is None: result = Noticia.all().filter("id =", int(id)).fetch(1) if result: noticia = result[0] cache.add(id, noticia) return noticia ...(não esqueça do cache.delete() se os dados mudarem)
  64. 64. Colocando no ar
  65. 65. appengine.google.com
  66. 66. Cadastrando o aplicativo
  67. 67. oh, oh...
  68. 68. cadastre com outro nome...
  69. 69. ...e altere no app.yamlapplication: appdojoselitoversion: 1runtime: pythonapi_version: 1Handlers:- url: /favicon.ico static_files: favicon.ico upload: favicon.ico- url: .* script: main.py
  70. 70. Launcher
  71. 71. login do Google
  72. 72. ele trabalha, e...
  73. 73. Conclusão
  74. 74. O poder é de vocês! É preciso estudar e experimentar, mas o App Engine está ao alcance de todos. Basta começar!http://code.google.com/intl/pt-BR/appengine/docs/
  75. 75. Dúvidas?Obrigado! @chesterbr http://chester.me http://slideshare.net/chesterbr
  76. 76. Créditos e Licenciamento Esta apresentação está disponível para uso e reuso sob os termos da licença Creative Commons “by-nc” 3.0, observadas as exceções abaixo Fotos e ilustrações são em sua maioria logomarcas dos produtos eprojetos referenciados (inclusos sob premissa de “fair use”) e ilustrações de uso supostamente livre cuja autoria foi mencionada sempre quepossível (correções são bem-vindas). Tais elementos são de propriedade de seus autores, e não estão cobertos pela licença acima, não havendo qualquer relação deles com o autor

×