Aplicações web com Python e
Google App Engine
Rodrigo Amaral
Slide 2
Slide 2 text
Olá!
rodrigoamaral
rodrigoamaral.net
Slide 3
Slide 3 text
http://pug-se.github.io
Slide 4
Slide 4 text
Aplicações web são legais
■ Multiplataforma
■ Acessadas de qualquer lugar
■ Fácil distribuição
■ Atualização instantânea
■ Correção de bugs controlada
Slide 5
Slide 5 text
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
Slide 6
Slide 6 text
Platform as a Service (PaaS)
■ Delegar tarefas de administração
■ Permitir escalabilidade
■ Reduzir os custos iniciais
■ Prover serivços auxiliares
Slide 7
Slide 7 text
Google App Engine
Executar aplicações web na
infraestrutura do Google
Slide 8
Slide 8 text
Python
■ Tipagem dinâmica
■ Uso geral
■ Multiparadigma
■ Sintaxe clara e legível
■ Introspecção poderosa
■ Rica biblioteca padrão
Slide 9
Slide 9 text
Python cabe no seu cérebro
class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello, World!");
}
}
print "Hello, World!"
JAVA
PYTHON
Slide 10
Slide 10 text
Python cabe no seu cérebro (2)
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]
QUADRADO DOS NÚMEROS PARES EM UM VETOR
Slide 11
Slide 11 text
Python cabe no seu cérebro (3)
import random
sorteio = 'Pedro Maria Paulo Joana Renato Sofia'.split()
print random.choice(sorteio)
SORTEIO SIMPLES
Slide 12
Slide 12 text
Características do Google
App Engine
Slide 13
Slide 13 text
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
Slide 14
Slide 14 text
Armazenamento de dados
■ Datastore
● banco de dados não-relacional
● entidades, tipos, propriedades
● schemaless
■ Google Cloud SQL
● banco de dados relacional
■ Google Cloud Storage
Slide 15
Slide 15 text
Autenticação e autorização
■ Google Accounts
■ Users API
Slide 16
Slide 16 text
Serviços
■ URL Fetch
■ Mail
■ XMPP
■ Memcache
■ Manipulação de imagens
■ Fila de tarefas
Slide 17
Slide 17 text
Ambiente de execução de
aplicações Python
Slide 18
Slide 18 text
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
Slide 19
Slide 19 text
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
Slide 20
Slide 20 text
Estrutura da aplicação
Datastore
Templates
Cliente
app.yaml
Identificação
Versão
Resolução de URLs
Permissões
script.py
Aplicação WSGI
Módulos da
aplicação
Frameworks
e bibliotecas
APIs de
serviços
requisição
resposta
Slide 21
Slide 21 text
Exemplo
Entendendo o código de uma aplicação
simples
Servidor de aplicação local
dev_appserver.py
# dev_appserver.py
Linha de comando
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
Slide 25
Slide 25 text
Resultado no browser
Slide 26
Slide 26 text
Upload
appcfg.py
# appcfg.py update
Slide 27
Slide 27 text
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