FACULDADE COMUNITÁRIA DE CAMPINAS – UNIDADE 2

Propaganda
CENTRO UNIVERSITÁRIO PADRE ANCHIETA
Curso de Sistemas de Informação
Análise da Plataforma de Desenvolvimento
Google App engine
EDUARDO PERNAMBUCO PESSINI – R.A. 0221426
JULIO CESAR GARÇON MARTINHO – R.A. 0955647
RAFAEL MARTINS MAZZOLA – R.A. 0954360
JUNDIAÍ, SP – 2012
Sumário
1. O QUE É O GOOGLE APP ENGINE?..................................................................3
2. O AMBIENTE DO APLICATIVO........................................................................4
3. O SANDBOX................................................................................................4
4. O JAVA RUNTIME ENVIRONMENT...................................................................5
5. O PYTHON RUNTIME ENVIRONMENT..............................................................6
6. O ARMAZENAMENTO DE DADOS....................................................................6
7. SERVIÇOS DO GOOGLE APP ENGINE..............................................................7
1.1
1.2
1.3
1.4
BUSCA DE URL: ................................................................................................................7
E-MAIL:............................................................................................................................8
MEMCACHE:.......................................................................................................................8
MANIPULAÇÃO DE IMAGENS: ...................................................................................................8
8. TAREFAS AGENDADAS E FILAS DE TAREFAS...................................................8
9. FLUXO DE DESENVOLVIMENTO.....................................................................9
10. COTAS E LIMITES.....................................................................................10
11. EXEMPLOS DE USO..................................................................................11
1.5 EARTH HOUR - HTTP://WWW.EARTHHOUR.ORG/............................................................................11
1.6 A CASA BRANCA (EUA) ABERTO PARA PERGUNTAS - HTTP://WWW.WHITEHOUSE.GOV/OPENFORQUESTIONS......11
1.7 JAIKU - HTTP://JAIKIDO.BLOGSPOT.COM.BR/2009/03/JAIKU-IS-NOW-SERVED-FROM-APP-ENGINE.HTML..............11
12. BIBLIOGRAFIA.........................................................................................12
1. O QUE É O GOOGLE APP ENGINE?
O Google App Engine é uma plataforma de Computação em nuvem para
desenvolver e hospedar aplicações web na infraestrutura do Google. Foi inicialmente
lançado como versão preliminar (beta) em Abril de 2008.
É uma tecnologia no modelo Plataforma como Serviço. Ele virtualiza aplicações em
múltiplos servidores, provendo hardware, conectividade, sistema operacional e
serviços de software. O Google App Engine pode ser usado gratuitamente até um
determinado nível de consumo de recursos. A partir daí, tarifas adicionais são
cobradas pelo consumo recursos (armazenamento, banda de rede, ciclos de CPU,
etc.)
da
aplicação.
Oferece
um
rápido
processo
de
desenvolvimento
e
implementação, administração simples, sem ser necessário se preocupar com
hardware, patches ou backups, e escalabilidade fácil. Com ele, não há necessidade
de manter servidores: você apenas envia seu aplicativo e ele está pronto para
atender a seus usuários.
O Google App Engine suporta aplicativos criados em várias linguagens de
programação. O ambiente de execução em Java do Google App Engine permite
criar um aplicativo usando tecnologias Java padrão, incluindo JVM, servlets Java e a
linguagem de programação Java, ou qualquer outra linguagem que usa um
interpretador ou compilador com base na JVM, como Java Script ou Ruby. Também
apresenta um Python runtime environment dedicado, que inclui um interpretador de
Python rápido e a biblioteca Python padrão, cuja criação teve a finalidade de garantir
que o aplicativo seja executado rapidamente, com segurança e sem interferência de
outros aplicativos no sistema.
Em relação a eventuais cobranças pela utilização de recursos adicionais, como
armazenamento e largura de banda, os valores são medidos em gigabytes e
cobrados a taxas competitivas, ficando por conta do usuário (desenvolvedor)
controlar a quantidade máxima de recursos que seu aplicativo pode consumir,
ficando dentro de seu orçamento.
Todos os aplicativos podem usar até 500 MB de armazenamento e CPU e largura de
banda suficiente para suportar um aplicativo eficiente que ofereça cerca de cinco
milhões de visualizações de página por mês, totalmente grátis. Ao ativar o
faturamento para o aplicativo, os limites gratuitos aumentam e o desenvolvedor paga
somente pelos recursos que ultrapassam os níveis gratuitos.
2. O AMBIENTE DO APLICATIVO
O Google App Engine inclui os seguintes recursos:
•
Serviço da web dinâmico, com suporte completo a tecnologias da
web comuns
•
Armazenamento
persistente
com
consultas,
classificação
e
transações
•
Escalonamento e balanceamento de carga automáticos
•
APIs para autenticação de usuários e envio de e-mails usando
Contas do Google
•
Ambiente de desenvolvimento local com todos os recursos,
simulando o Google App Engine em seu computador
•
Filas de tarefas para realizar trabalho fora do escopo de uma
solicitação da web
•
Tarefas programadas para iniciar eventos em horários específicos e
em intervalos regulares
O
aplicativo
pode
ser
environments: Java e Python.
executado
Cada
em
ambiente
um
oferece
destes
dois
protocolos
runtime
padrão
e
tecnologias comuns para o desenvolvimento de aplicativos da web.
3. O SANDBOX
Os aplicativos são executados em um ambiente seguro que fornece acesso limitado
ao sistema operacional subjacente. Essas limitações permitem que o Google App
Engine distribua solicitações de web para o aplicativo entre diversos servidores,
iniciando e interrompendo servidores para atender às demandas de tráfego. O
sandbox isola o aplicativo em seu próprio ambiente seguro e confiável,
independentemente de hardware, sistema operacional e localização física do
servidor da web.
São exemplos das limitações do ambiente seguro sandbox:
•
Um aplicativo pode acessar outros computadores na Internet somente por
meio dos serviços de busca de URL e de e-mail fornecidos. Outros
computadores podem se conectar ao aplicativo somente fazendo solicitações
HTTP (ou HTTPS) nas portas padrão.
•
Um aplicativo não pode gravar no sistema de arquivos. Um aplicativo pode
ler arquivos, mas somente os enviados junto com o código do aplicativo. O
aplicativo deve usar o armazenamento de dados, o memcache ou outros serviços
do Google App Engine para todos os dados que persistirem entre solicitações.
•
O código do aplicativo é executado somente em resposta a uma
solicitação da web, a uma tarefa na fila ou a um trabalho do cron, e deve retornar
dados de resposta em 30 segundos, independentemente do caso. Um
manipulador de solicitação não pode gerar um subprocesso nem executar o
código após o envio da resposta.
4. O JAVA RUNTIME ENVIRONMENT
Pode-se desenvolver um aplicativo para o Java runtime environment usando
ferramentas comuns de desenvolvimento da web e padrões de APIs em Java. O
aplicativo interage com o ambiente usando o padrão servlet Java e pode usar
tecnologias comuns de aplicativos da web, como JSPs (JavaServer Pages).
O Java runtime environment usa Java 6. O SDK para Java do Google App Engine
suporta o desenvolvimento de aplicativos em Java 5 ou 6.
O ambiente inclui a plataforma JRE 6 (Java SE Runtime Environment) e suas
bibliotecas. As restrições do ambiente sandbox são implementadas na JVM. Um
aplicativo pode usar qualquer bytecode JVM ou recurso da biblioteca, contanto que
não exceda as restrições do sandbox.
Para o armazenamento de dados do Google App Engine, o SDK para Java inclui
implementações das interfaces JDO (Objetos de dados Java) e JPA (API persistente
Java). Seu aplicativo pode usar a API JavaMail para enviar mensagens de e-mail
com o serviço de e-mail do Google App Engine. As APIs HTTP java.net acessam o
serviço de busca de URL do Google App Engine. Os serviços do Google App Engine
também incluem APIs de nível inferior para programar adaptadores adicionais ou
para serem usadas diretamente do aplicativo.
5. O PYTHON RUNTIME ENVIRONMENT
Com o Python runtime environment do Google App Engine, é possível implementar o
aplicativo usando a linguagem de programação Python e executá-lo em um
interpretador otimizado de Python. O Google App Engine inclui APIs avançadas e
ferramentas para desenvolvimento de aplicativos da web em Python, incluindo uma
API de modelagem de dados avançada, uma estrutura para aplicativos da web de
fácil uso e ferramentas para gerenciar e acessar os dados de seu aplicativo.
O Python runtime environment usa a versão 2.5.2 de Python. Inclui a biblioteca
Python padrão. Nem todos os recursos da biblioteca podem ser executados no
ambiente do sandbox. O código dos aplicativos para o ambiente Python deve ser
criado exclusivamente em Python. Não há suporte para extensões criadas na
linguagem C.
O Google App Engine fornece uma estrutura Python simples de aplicativo da web
denominada webapp, para que você possa começar a criar aplicativos facilmente.
Pode-se também fazer upload de outras bibliotecas de terceiros com o aplicativo,
desde que elas sejam implementadas em Python puro e não exijam nenhum módulo
de biblioteca padrão não suportado.
6. O ARMAZENAMENTO DE DADOS
O Google App Engine fornece um poderoso serviço de armazenamento de dados
distribuído que contém um mecanismo de consultas e transações. Assim como o
servidor da web distribuído cresce proporcionalmente ao tráfego, o armazenamento
de dados distribuído cresce à medida que os dados aumentam.
O armazenamento de dados do Google App Engine não é um banco de dados
relacional tradicional. Objetos de dados, ou "entidades", têm um tipo e um conjunto
de propriedades. Consultas podem recuperar entidades de um tipo determinado,
filtradas e classificadas segundo os valores das propriedades. Os valores das
propriedades
podem
propriedade compatíveis.
ser
de
qualquer
um
dos tipos
de
valor
de
As entidades do armazenamento de dados não possuem esquema. A estrutura das
entidades de dados é fornecida e aplicada pelo código de aplicativo desenvolvido.
As interfaces Java JDO/JPA e a interface do armazenamento de dados em Python
incluem recursos para aplicar e implementar a estrutura em seu aplicativo. O
aplicativo também pode acessar o armazenamento de dados diretamente para
aplicar as mudanças necessárias.
O armazenamento de dados é altamente consistente e usa controle de concorrência
otimista. Uma atualização de entidade ocorre em uma transação com um número
fixo de tentativas, caso outros processos estejam tentando atualizar a mesma
entidade simultaneamente.
Outra característica é o fato de implementar transações por toda a rede distribuída
usando "grupos de entidades". Uma transação manipula entidades dentro de um
único grupo. As entidades do mesmo grupo são armazenadas juntas, para uma
execução de transações eficiente. O aplicativo pode atribuir entidades aos grupos
quando elas forem criadas.
7. SERVIÇOS DO GOOGLE APP ENGINE
O Google App Engine fornece diversos serviços que permitem executar operações
comuns ao gerenciar o aplicativo. As APIs abaixo são fornecidas para acessar estes
serviços:
1.1
Busca de URL:
Aplicativos podem acessar recursos da Internet, como serviços da web ou outros
dados, usando o serviço de busca de URL do Google App Engine. O serviço de
busca de URL recupera recursos da web usando a mesma infraestrutura de alta
velocidade do Google que recupera páginas da web para muitos outros produtos do
Google.
1.2
E-mail:
Aplicativos podem enviar mensagens de e-mail usando o serviço de e-mail do
Google App Engine. O serviço de e-mail usa a infraestrutura do Google para enviar
mensagens de e-mail.
1.3
Memcache:
O serviço de memcache fornece a seu aplicativo um cache de memória essencial de
alto desempenho, que pode ser acessado por diversas instâncias do aplicativo. O
memcache é útil para dados que não precisam dos recursos de persistência e
transações do armazenamento de dados, como dados temporários ou copiados do
armazenamento de dados para o cache para acesso de alta velocidade.
1.4
Manipulação de imagens:
O serviço de imagens permite que o aplicativo manipule imagens. Com esta API,
pode-se redimensionar, cortar, girar e inverter imagens nos formatos JPEG e PNG.
8. TAREFAS AGENDADAS E FILAS DE TAREFAS
Um aplicativo pode desempenhar tarefas além de responder a solicitações da web.
O aplicativo desenvolvido pode realizar essas tarefas seguindo um cronograma
configurado pelo desenvolvedor, por exemplo diariamente ou de hora em hora. O
aplicativo também pode realizar tarefas adicionadas a uma fila pelo próprio
aplicativo, como uma tarefa de segundo plano criada durante o processamento de
uma solicitação.
Tarefas agendadas também são conhecidas como "trabalhos do cron", manipulados
pelo serviço do Cron. Atualmente, filas de tarefas são um recurso lançado em
caráter experimental. No momento, apenas o Python runtime environment pode usar
filas de tarefas. Uma interface de fila de tarefas para aplicativos em Java será
lançada em breve.
9. FLUXO DE DESENVOLVIMENTO
Os SDKs (kits de desenvolvimento de software) do Google App Engine para Java e
Python incluem um aplicativo do servidor da web que emula todos os serviços do
Google App Engine em seu computador local. Cada SDK inclui todas as APIs e
bibliotecas disponíveis no Google App Engine. O servidor da web também simula o
ambiente seguro do sandbox, incluindo verificações de tentativas de acesso não
permitido aos recursos do sistema no runtime environment do Google App Engine.
Cada SDK também inclui uma ferramenta para enviar seu aplicativo para o App
Engine. Depois de criar o código e os arquivos estáticos e de configuração do
aplicativo, executa-se a ferramenta para enviar os dados. A ferramenta solicita o
endereço de e-mail e a senha dea conta do Google do desenvolvedor.
Ao criar uma nova versão principal de um aplicativo já sendo executado no Google
App Engine, pode-se enviá-la como uma nova versão. A versão antiga continuará
servindo os usuários até o desenvolvedor mudar para a nova versão. Pode-se testar
a nova versão no Google App Engine enquanto a versão antiga ainda está sendo
executada.
O SDK para Java é executado em qualquer plataforma com Java 5 ou Java 6. O
SDK está disponível como um arquivo .zip. Se o desenvolvedor utiliza o ambiente de
desenvolvimento Eclipse, pode usar o plug-in do Google App Engine para o
Eclipse para criar, testar e enviar aplicativos do Google App Engine. O SDK inclui
também ferramentas da linha de comando para executar o servidor de
desenvolvimento e fazer upload do aplicativo.
O SDK para Python é implementado em Python puro e executado em qualquer
plataforma com Python 2.5, incluindo Windows, Mac OS X e Linux. O SDK está
disponível como um arquivo zip e há programas de instalação disponíveis para
Windows e Mac OS X.
O Admin Console é a interface baseada na web para gerenciar seus aplicativos
executados no Google App Engine. O desenvolvedor o utiliza para criar novos
aplicativos, configurar nomes de domínio, alterar a versão ativa de seu aplicativo,
examinar registros de acessos e de erros e navegar pelo armazenamento de dados
de um aplicativo.
10. COTAS E LIMITES
Pode-se criar uma conta e publicar um aplicativo que as pessoas usarão
imediatamente sem nenhum custo ou compromisso. Além de poder usar até 500 MB
de armazenamento e até 5 milhões de visualizações de página por mês, o
desenvolvedor pode registrar até 10 aplicativos por conta.
Cada aplicativo recebe recursos dentro de limites chamados "cotas". Uma cota
determina quanto de um determinado recurso o aplicativo pode usar em um dia.
Alguns recursos impõem limites não relacionados a cotas para proteger a
estabilidade do sistema. Por exemplo, quando um aplicativo é chamado para servir
uma solicitação da web, ele deve emitir uma resposta em até 30 segundos. Se o
aplicativo demorar muito, o processo será encerrado e o servidor retornará um
código de erro ao usuário. O tempo de espera de solicitação é dinâmico e pode ser
reduzido para poupar os recursos caso um manipulador de solicitação chegue ao
tempo limite com muita frequência.
11. EXEMPLOS DE USO
1.5
Earth Hour - http://www.earthhour.org/
A Hora do Planeta é um evento mundial organizado pela World Wildlife Fund (WWF)
e realizada no último sábado de março, anualmente, encorajando as famílias e
empresas a desligar seus não essenciais luzes por uma hora para aumentar a
conscientização sobre a necessidade de tomar medidas sobre mudanças
climáticas . O evento, idealizado pela WWF e Leo Burnett , primeira ocorreu em
2007, quando 2,2 milhões de habitantes de Sydney participou por desligar todas as
luzes não essenciais. [ 1 ] Seguindo o exemplo de Sydney, muitas outras cidades ao
redor do mundo adotou o evento em 2008 . A Hora do Planeta 2012 ocorreu em 31
março de 2012 20:30 - 21:30, no tempo dos participantes local.
1.6
A Casa Branca (EUA) Aberto para perguntas http://www.whitehouse.gov/openforquestions
Site (em teste) que propõe aos cidadãos oferecer seus questionamentos para o
governo, envolvendo em principal ponto o próprio Presidente dos EUA. Permite a
interação do mesmo perante as referidas perguntas, e ate mesmo o post de vídeos e
afins.
1.7
Jaiku - http://jaikido.blogspot.com.br/2009/03/jaiku-is-now-served-from-appengine.html
Jaiku foi uma rede social , micro-blogging comparável ao Twitter. Foi fundada em
Fevereiro de 2006 por Engeström Jyri e Petteri Koponen da Finlândia e lançado em
Julho desse mesmo ano. Ela foi comprada pelo Google em 9 de outubro de 2007.
12. BIBLIOGRAFIA
http://pt.wikipedia.org/wiki/Google_App_Engine
https://developers.google.com/appengine/docs/whatisgoogleappengine?hl=pt-br
http://stackoverflow.com/questions/3266783/example-of-large-sites-running-ongoogle-app-engine
http://en.wikipedia.org/wiki/Jaiku
http://en.wikipedia.org/wiki/Earth_Hour
Todos conteúdos acessados em 23 de setembro de 2012.
Download