Slide 1

Slide 1 text

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

Slide 22

Slide 22 text

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)

Slide 23

Slide 23 text

app.yaml application: relogio version: 1 runtime: python27 api_version: 1 threadsafe: true handlers: - url: /.* script: relogio.aplicacao

Slide 24

Slide 24 text

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

Slide 28

Slide 28 text

Obrigado!