SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Aplicações web com Python e
Google App Engine

Rodrigo Amaral
Olá!
rodrigoamaral
rodrigoamaral.net
http://pug-se.github.io
Aplicações web são legais
■ Multiplataforma
■ Acessadas de qualquer lugar
■ Fácil distribuição
■ Atualização instantânea
■ Correção de bugs controlada
Mas as coisas podem ficar
complicadas
■ Múltiplos acessos simultâneos
■ Administração de servidores
■ Precisa de alta disponibilidade
■ Custos de hospedagem
■ Programação precisa ser ágil
Platform as a Service (PaaS)
■ Delegar tarefas de administração
■ Permitir escalabilidade
■ Reduzir os custos iniciais
■ Prover serivços auxiliares
Google App Engine

Executar aplicações web na
infraestrutura do Google
Python
■ Tipagem dinâmica
■ Uso geral
■ Multiparadigma
■ Sintaxe clara e legível
■ Introspecção poderosa
■ Rica biblioteca padrão
Python cabe no seu cérebro
JAVA
class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello, World!");
}
}

PYTHON
print "Hello, World!"
Python cabe no seu cérebro (2)

QUADRADO DOS NÚMEROS PARES EM UM VETOR
vetor = [1, 2, 3, 4, 5, 6, 7]
quadrado_pares = [n ** 2 for n in vetor if n % 2 == 0]
print(quadrado_pares)

# mostra [4, 16, 36]
Python cabe no seu cérebro (3)

SORTEIO SIMPLES
import random
sorteio = 'Pedro Maria Paulo Joana Renato Sofia'.split()
print random.choice(sorteio)
Características do Google
App Engine
Sandbox
■ Ambiente protegido
■ Facilita distribuição da demanda
■ Não escreve no sistema de arquivos
■ Somente HTTP(S) nas portas padrão
■ Não dispara subprocessos
■ Não enxerga outras aplicações
Armazenamento de dados
■ Datastore
● banco de dados não-relacional
● entidades, tipos, propriedades
● schemaless

■ Google Cloud SQL
● banco de dados relacional

■ Google Cloud Storage
Autenticação e autorização
■ Google Accounts
■ Users API
Serviços
■ URL Fetch
■ Mail
■ XMPP
■ Memcache
■ Manipulação de imagens
■ Fila de tarefas
Ambiente de execução de
aplicações Python
Python App Engine SDK
■ Servidor de aplicação que simula o
ambiente App Engine
●

dev_appserver.py

■ Utilitário para upload
●

appcfg.py

■ Interface gráfica (Windows e Mac)
■ Python 2.7
Web Server Gateway Interface
(WSGI)
■ Especifica a comunicação entre
servidores web e aplicações
■ Se o framework é compatível,
funciona com o App Engine
■ Django, Flask, Pyramid, Bottle etc.
■ webapp2
Estrutura da aplicação
app.yaml
Identificação

Módulos da
aplicação

Versão
requisição
Cliente

Resolução de URLs
Permissões

Frameworks
e bibliotecas

resposta
APIs de
serviços

script.py
Templates

Aplicação WSGI

Datastore
Exemplo
Entendendo o código de uma aplicação
simples
relogio.py
import webapp2
import datetime
class PaginaPrincipal(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-type'] = 'text/plain'
self.response.write(datetime.datetime.now())
aplicacao = webapp2.WSGIApplication([
('/', PaginaPrincipal)
], debug=True)
app.yaml
application: relogio
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: relogio.aplicacao
Servidor de aplicação local
dev_appserver.py
Linha de comando
# dev_appserver.py <diretorio_da_aplicacao>

INFO
2013-12-09 19:58:56,850 api_server.py:138] Starting
API server at: http://localhost:50958
INFO
2013-12-09 19:58:56,863 dispatcher.py:171] Starting
module "default" running at: http://localhost:8080
INFO
2013-12-09 19:58:56,867 admin_server.py:117] Starting
admin server at: http://localhost:8000
Resultado no browser
Upload
appcfg.py

# appcfg.py update <diretorio_da_aplicacao>
Para saber mais
Google Developers
https://developers.google.com/appengine/

Programming Google App Engine
Livro - Editora O’Reilly

Stack Overflow
http://stackoverflow.com/questions/tagged/google-app-engine
Obrigado!

Mais conteúdo relacionado

Mais procurados

Flask Full Stack - Desenvolvendo um CMS com Flask e MongoDB
Flask Full Stack - Desenvolvendo um CMS com Flask e MongoDBFlask Full Stack - Desenvolvendo um CMS com Flask e MongoDB
Flask Full Stack - Desenvolvendo um CMS com Flask e MongoDBBruno Rocha
 
Minicurso de Cakephp
Minicurso de CakephpMinicurso de Cakephp
Minicurso de CakephpCauan Cabral
 
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Ramon Durães
 
Laravel 5
Laravel 5Laravel 5
Laravel 5DevMT
 
Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Maurício Linhares
 
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015Bruno Rocha
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-ptPedro Sousa
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JSRodrigo Urubatan
 
Laravel + OAuth 2.0 Server
Laravel + OAuth 2.0 ServerLaravel + OAuth 2.0 Server
Laravel + OAuth 2.0 ServerDaniel Satiro
 
Performance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsPerformance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsWaldyr Felix
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + FirebaseBruno Catão
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e HudsonRodrigo Branas
 
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Rodrigo Urubatan
 

Mais procurados (20)

Laravel 5
Laravel 5Laravel 5
Laravel 5
 
Flask Full Stack - Desenvolvendo um CMS com Flask e MongoDB
Flask Full Stack - Desenvolvendo um CMS com Flask e MongoDBFlask Full Stack - Desenvolvendo um CMS com Flask e MongoDB
Flask Full Stack - Desenvolvendo um CMS com Flask e MongoDB
 
Minicurso de Cakephp
Minicurso de CakephpMinicurso de Cakephp
Minicurso de Cakephp
 
Meetup #17
Meetup #17Meetup #17
Meetup #17
 
API Restfull com Laravel
API Restfull com LaravelAPI Restfull com Laravel
API Restfull com Laravel
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
 
Laravel 5
Laravel 5Laravel 5
Laravel 5
 
Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01
 
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-pt
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
Laravel + OAuth 2.0 Server
Laravel + OAuth 2.0 ServerLaravel + OAuth 2.0 Server
Laravel + OAuth 2.0 Server
 
Performance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsPerformance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.js
 
Instalação CakePHP 2.2.3
Instalação CakePHP 2.2.3Instalação CakePHP 2.2.3
Instalação CakePHP 2.2.3
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + Firebase
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
 
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
 
Java wsdp
Java wsdpJava wsdp
Java wsdp
 

Semelhante a Aplicações web com Python e Google App Engine

Opções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasOpções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasJose Papo, MSc
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...BrunoSouza617
 
Apresentação sie ir-2014
Apresentação sie ir-2014Apresentação sie ir-2014
Apresentação sie ir-2014Renan Moreira
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFlávio Lisboa
 
Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE Renzo Nuccitelli
 
Google App Engine e Python
Google App Engine e PythonGoogle App Engine e Python
Google App Engine e PythonPeslPinguim
 
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016Filipe Barretto
 
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016Renato Groff
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Flávio Lisboa
 
Criando uma PWA com React para consumir uma API
Criando uma PWA com React para consumir uma APICriando uma PWA com React para consumir uma API
Criando uma PWA com React para consumir uma APIJessica Zanelato Soares
 
Arquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieVivaldo Jose Breternitz
 

Semelhante a Aplicações web com Python e Google App Engine (20)

Django
DjangoDjango
Django
 
Opções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasOpções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e Arquiteturas
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
 
Api platform
Api platformApi platform
Api platform
 
Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
 
Java Nuvem Appengine
Java Nuvem AppengineJava Nuvem Appengine
Java Nuvem Appengine
 
As Novidades do I3geo
As Novidades do I3geoAs Novidades do I3geo
As Novidades do I3geo
 
Apresentação sie ir-2014
Apresentação sie ir-2014Apresentação sie ir-2014
Apresentação sie ir-2014
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHP
 
Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE
 
Google App Engine e Python
Google App Engine e PythonGoogle App Engine e Python
Google App Engine e Python
 
Function as a Service no OpenFaaS com Docker e PHP
Function as a Service no OpenFaaS com Docker e PHPFunction as a Service no OpenFaaS com Docker e PHP
Function as a Service no OpenFaaS com Docker e PHP
 
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
 
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
 
Criando uma PWA com React para consumir uma API
Criando uma PWA com React para consumir uma APICriando uma PWA com React para consumir uma API
Criando uma PWA com React para consumir uma API
 
Arquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/MackenzieArquitetura Web Desacoplada - FCI/Mackenzie
Arquitetura Web Desacoplada - FCI/Mackenzie
 
Workshop - Ionic + firebase
Workshop - Ionic + firebaseWorkshop - Ionic + firebase
Workshop - Ionic + firebase
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 

Aplicações web com Python e Google App Engine

  • 1. Aplicações web com Python e Google App Engine Rodrigo Amaral
  • 4. Aplicações web são legais ■ Multiplataforma ■ Acessadas de qualquer lugar ■ Fácil distribuição ■ Atualização instantânea ■ Correção de bugs controlada
  • 5. Mas as coisas podem ficar complicadas ■ Múltiplos acessos simultâneos ■ Administração de servidores ■ Precisa de alta disponibilidade ■ Custos de hospedagem ■ Programação precisa ser ágil
  • 6. Platform as a Service (PaaS) ■ Delegar tarefas de administração ■ Permitir escalabilidade ■ Reduzir os custos iniciais ■ Prover serivços auxiliares
  • 7. Google App Engine Executar aplicações web na infraestrutura do Google
  • 8. Python ■ Tipagem dinâmica ■ Uso geral ■ Multiparadigma ■ Sintaxe clara e legível ■ Introspecção poderosa ■ Rica biblioteca padrão
  • 9. Python cabe no seu cérebro JAVA class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } PYTHON print "Hello, World!"
  • 10. Python cabe no seu cérebro (2) QUADRADO DOS NÚMEROS PARES EM UM VETOR vetor = [1, 2, 3, 4, 5, 6, 7] quadrado_pares = [n ** 2 for n in vetor if n % 2 == 0] print(quadrado_pares) # mostra [4, 16, 36]
  • 11. Python cabe no seu cérebro (3) SORTEIO SIMPLES import random sorteio = 'Pedro Maria Paulo Joana Renato Sofia'.split() print random.choice(sorteio)
  • 13. Sandbox ■ Ambiente protegido ■ Facilita distribuição da demanda ■ Não escreve no sistema de arquivos ■ Somente HTTP(S) nas portas padrão ■ Não dispara subprocessos ■ Não enxerga outras aplicações
  • 14. Armazenamento de dados ■ Datastore ● banco de dados não-relacional ● entidades, tipos, propriedades ● schemaless ■ Google Cloud SQL ● banco de dados relacional ■ Google Cloud Storage
  • 15. Autenticação e autorização ■ Google Accounts ■ Users API
  • 16. Serviços ■ URL Fetch ■ Mail ■ XMPP ■ Memcache ■ Manipulação de imagens ■ Fila de tarefas
  • 17. Ambiente de execução de aplicações Python
  • 18. Python App Engine SDK ■ Servidor de aplicação que simula o ambiente App Engine ● dev_appserver.py ■ Utilitário para upload ● appcfg.py ■ Interface gráfica (Windows e Mac) ■ Python 2.7
  • 19. Web Server Gateway Interface (WSGI) ■ Especifica a comunicação entre servidores web e aplicações ■ Se o framework é compatível, funciona com o App Engine ■ Django, Flask, Pyramid, Bottle etc. ■ webapp2
  • 20. Estrutura da aplicação app.yaml Identificação Módulos da aplicação Versão requisição Cliente Resolução de URLs Permissões Frameworks e bibliotecas resposta APIs de serviços script.py Templates Aplicação WSGI Datastore
  • 21. Exemplo Entendendo o código de uma aplicação simples
  • 22. relogio.py import webapp2 import datetime class PaginaPrincipal(webapp2.RequestHandler): def get(self): self.response.headers['Content-type'] = 'text/plain' self.response.write(datetime.datetime.now()) aplicacao = webapp2.WSGIApplication([ ('/', PaginaPrincipal) ], debug=True)
  • 23. app.yaml application: relogio version: 1 runtime: python27 api_version: 1 threadsafe: true handlers: - url: /.* script: relogio.aplicacao
  • 24. Servidor de aplicação local dev_appserver.py Linha de comando # dev_appserver.py <diretorio_da_aplicacao> INFO 2013-12-09 19:58:56,850 api_server.py:138] Starting API server at: http://localhost:50958 INFO 2013-12-09 19:58:56,863 dispatcher.py:171] Starting module "default" running at: http://localhost:8080 INFO 2013-12-09 19:58:56,867 admin_server.py:117] Starting admin server at: http://localhost:8000
  • 26. Upload appcfg.py # appcfg.py update <diretorio_da_aplicacao>
  • 27. Para saber mais Google Developers https://developers.google.com/appengine/ Programming Google App Engine Livro - Editora O’Reilly Stack Overflow http://stackoverflow.com/questions/tagged/google-app-engine