universidade estadual de maringÁ – uem … theodoro de aquino... · o termo computação em...

52
UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM ESPECIALIZAÇÃO EM DESENVOLVIMENTO DE SISTEMAS PARA WEB – ESPWEB BRUNO THEODORO DE AQUINO ORIENTADOR: MESTRE MUNIF GEBARA JÚNIOR COMPUTAÇÃO EM NUVENS COM GOOGLE APP ENGINE E JAVA MARINGÁ 2013

Upload: vothuy

Post on 08-Nov-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

UNIVERSIDADE ESTADUAL DE MARINGÁ – UEMESPECIALIZAÇÃO EM DESENVOLVIMENTO DE SISTEMAS PARA WEB – ESPWEB

BRUNO THEODORO DE AQUINOORIENTADOR: MESTRE MUNIF GEBARA JÚNIOR

COMPUTAÇÃO EM NUVENS COM GOOGLE APP ENGINE E JAVA

MARINGÁ2013

Page 2: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

BRUNO THEODORO DE AQUINO

COMPUTAÇÃO EM NUVENS COM GOOGLE APP ENGINE

Trabalho submetido à Universidade Estadual de Maringá como requisito para a obtenção detítulo de Especialista em Desenvolvimento de Software para Web.

Orientador: Prof. Mestre Munif Gebara Júnior

MARINGÁ

2013

Page 3: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

RESUMO

With the popularization of the internet and its continuous improvement, cloud computing has

grown greatly in recent years. His model is service-oriented and can be divided into: software

as a service, platform as a service, infrastructure as a service and storage as a service. Several

companies have set up their development platforms in the clouds, as the case of Google and

Amazon, studied in this work. Also shown are the first steps of how to create an application

on the Google platform using the Eclipse IDE with the Plug-in SDK, the Java language. A

proposed example was created by Google and shown its development, that is persisted using

JDO.

Keywords: Cloud computing. Google App Engine. Amazon Web Services, AWS Elastic

Beanstalk.

ABSTRACT

With the popularization of the Internet and its constant improvements, cloud computing has

grown tremendously in recent years. His model is service-oriented and can be divided into:

software as a service, platform as a service, infrastructure as a service and storage as a service.

Several companies have set up their development platforms in the clouds, as the case of

Google and Amazon, studied in this work. Also shows the first steps in creating an application

in the Google platform using the Eclipse IDE, the plug-in SDK, the Java liguagem. It created

an example proposed by Google, and shown its development, that is persisted using JDO.

Key words: Cloud Computing. Google App Engine. Amazon Web Services, AWS Elastic

Beanstalk.

Page 4: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

Sumário1 Introdução................................................................................................................................8

1.1 Objetivo............................................................................................................................81.2 Justificativa.......................................................................................................................81.3 Motivação.........................................................................................................................81.4 Estrutura do Trabalho.......................................................................................................9

2 Fundamentação Teórica..........................................................................................................102.1 Computação em Nuvens.................................................................................................102.2 Características.................................................................................................................11

2.2.5 Customização..........................................................................................................122.3 Modelo de Serviço..........................................................................................................12

2.3.1 Infraestrutura como Serviço – IaaS........................................................................122.3.2 Plataforma como serviço – PaaS............................................................................132.3.3 Software como Serviço – SaaS...............................................................................132.3.4 Demais serviços......................................................................................................13

2.4 Modelo de Implantação..................................................................................................142.4.1 Privado....................................................................................................................142.4.2 Pública....................................................................................................................152.4.3 Comunidade............................................................................................................162.4.4 Hibrido....................................................................................................................16

2.5 Google App Engine........................................................................................................172.5.1 Funcionalidades do GAE........................................................................................18

2.6 Amazon Web Services (AWS)........................................................................................202.6.1 Funcionalidades do AWS Elastic Beanstalk...........................................................20

2.7 GAE x AWS...................................................................................................................222.7.1 Ambiente de Desenvolvimento...............................................................................222.7.2 Armazenamento......................................................................................................222.7.3 Definição de Preços e Limites................................................................................232.7.4 Plataforma Java.......................................................................................................23

3 Aplicação com Google App Engine.......................................................................................253.1 Preparando o Ambiente..................................................................................................25

3.1.1 Java Development Kit............................................................................................253.1.2 Plug-in do Google para IDE Eclipse......................................................................263.1.3 Testando a instalação..............................................................................................29

3.2 Criando o primeiro Projeto.............................................................................................293.2.1 Olá Mundo..............................................................................................................30

3.3 Mural de Mensagens......................................................................................................323.4 Persistência.....................................................................................................................32

3.4.1 DataNucleus Access Platform................................................................................323.4.2 Anotações JDO e POJOs........................................................................................333.4.3 Fábrica de Conexão e persistence.xml....................................................................343.4.4 Servlet.....................................................................................................................353.4.5 View (JSP)..............................................................................................................363.4.6 JDOSQL.................................................................................................................363.4.7 Como enviar o projeto com a IDE Eclipse.............................................................37

4 Conclusão...............................................................................................................................425 Referência bibliográfica.........................................................................................................44Apêndices..................................................................................................................................45

Apêndice A – Classe BtajdoServlet......................................................................................46

Page 5: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

Apêndice B – Mural.jsp........................................................................................................48Apêndice C – Controle de Versão com Git..........................................................................50

Page 6: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

Índice de figurasFigura 1: Modelo de Serviço.....................................................................................................12Figura 2: Modelo de Nuvem Privada........................................................................................15Figura 3: Nuvem Pública..........................................................................................................16Figura 4: Nuvem Comunitária..................................................................................................16Figura 5: Nuvem Hibrida..........................................................................................................17Figura 6: Ambiente de desenvolvimento Java..........................................................................18Figura 7: Verificando instalação do Java..................................................................................26Figura 8: Adicionando o link do Plug-in...................................................................................26Figura 9: Adicionando nome e endereço do Download............................................................27Figura 10: Escolhendo as ferramentas......................................................................................27Figura 11: Detalhes dos recursos..............................................................................................28Figura 12: Processo de instalação.............................................................................................28Figura 13: Comando para Linux e MAC OS, [6].....................................................................29Figura 14: Comando para Windows, [6]...................................................................................29Figura 15: Estrutura do Projeto.................................................................................................30Figura 16: Olá Mundo...............................................................................................................31Figura 17: Execução do Olá Mundo.........................................................................................31Figura 18: Configurações JDO.................................................................................................32Figura 19: Classe com anotação JDO.......................................................................................33Figura 20: Exemplo de fábrica de conexão...............................................................................34Figura 21: persistence.xml........................................................................................................35Figura 22: Servlet......................................................................................................................36Figura 23: JSP...........................................................................................................................36Figura 24: Exemplo de JDOSQL..............................................................................................37Figura 25: Criando uma conta Google......................................................................................38Figura 26: Criando o ID do Projeto..........................................................................................38Figura 27: Formulário do ID.....................................................................................................39Figura 28: Adicionando o ID no Projeto...................................................................................39Figura 29: Enviando o projeto..................................................................................................40Figura 30: Projeto mural de mensagens....................................................................................41Figura 31...................................................................................................................................50Figura 32: Fonte: Bitbucket. 2013............................................................................................51Figura 33: Fonte: Bitbucket. 2013............................................................................................51Figura 34: Fonte: Bitbucket. 2013............................................................................................52Figura 35...................................................................................................................................53Figura 36: Fonte: Bitbucket, 2013............................................................................................53

Page 7: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

8

1 Introdução

Com o avanço cada vez mais rápido da internet, ter acesso às suas informações de qualquer

computador com acesso à rede, se tornou fundamental no mercado de hoje. A computação em

nuvens, vem trazendo esta possibilidade, onde empresas conseguem usar a infraestrutura de

terceiros, de qualquer dispositivo com acesso as nuvens.

1.1 Objetivo

O objetivo deste trabalho é apresenta o Google App Engine da Google, mostrando os passos

básicos para o desenvolvimento de uma aplicação simples em Java, utilizando a IDE de

desenvolvimento Eclipse. Além disso, será apresentado uma comparação com os recursos do AWS

Elastic Beanstalk, o serviço concorrente da Amazon.

1.2 Justificativa

Com o mercado cada vez mais competitivo, ter acesso a seus sistemas e informações de

qualquer lugar passou a ser fundamental. Com os serviços de computação em nuvens, empresas

terceirizam suas infraestruturas de servidores, e para acessar seus arquivos e aplicativos, basta ter

acesso as nuvens, ou seja, internet. Várias gigantes da internet, como a Google e Amazon,

começaram a disponibilizar sua infraestrutura de computação em nuvens, e são pioneiras no ramo.

Com está abordagem, diminuem os custos que as empresas teriam para bancar sua própria

infraestrutura de servidores, além de outros gastos como segurança, manutenção e atualização dos

equipamentos. A empresa teria recursos para focar em outros pontos estratégicos, justificando assim

este trabalho.

1.3 Motivação

Tanto para empresas como para usuários comuns, a computação em nuvens está cada dia mais

presente, pessoas ficam conectados a nuvem o tempo todo, seja por um computador pessoal ou

Page 8: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

9

smartfones, é um mercado aquecido. Empresas estão migrando seus sistemas corporativos para

nuvens, e fornecendo seus serviços através dela.

1.4 Estrutura do Trabalho

No capítulo 2, apresentaremos uma introdução sobre computação em nuvens, e suas

características de serviços, como IaaS, PaaS e SaaS.

No capítulo 3, será apresentado o Google App Engine, e também uma comparação com o

serviço da Amazon.

No capítulo 4, será apresentado como configurar o Eclipse para o desenvolvimento de uma

aplicação com GAE, além de mostrarmos os passos para o desenvolvimento de uma aplicação

simples e deploy nas nuvens.

Capítulo 5, conclusão deste estudo, mostrando o que esperar da computação e nuvens e do

Google App Engine, além de ser apresentado os trabalhos futuros. No Apêndice, estará presente o

código fonte das principais classes do projeto, além do seu controle de versão.

Page 9: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

10

2 Fundamentação Teórica

Para entender melhor como funciona o Google App Engine, é necessário ter uma base de

conhecimento sobre computação em nuvens. Este capítulo tem como objetivo apresentar os

conceitos de computação em nuvens, e suas principais características.

2.1 Computação em Nuvens

O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric

Schmidt, da Google. Computação em nuvens ou clomputing, se trata de usar a infraestrutura de

terceiras atrás da internet, o armazenamento, é feito com serviços que poderão ser acessados de

qualquer lugar do mundo a qualquer hora, atrás do acesso remoto via internet, daí a alusão a

nuvens. [4]

A palavra nuvem sugere uma ideia de ambiente desconhecido, o qual podemos ver apenas seu

início e fim, assim a palavra nuvem foi empregada a este novo conceito de tecnologia, pois toda a

infraestrutura computacional fica a cargo de terceiros, tendo o usuário final, acesso a estes recursos

e serviços.

As nuvens são representadas pela internet, que é a infraestrutura de comunicação dos recursos

disponibilizados de hardware, software, armazenamento, redes de telecomunicações e etc. Tudo isso

é possível, graças a grande informações de usuários armazenados em grandes centros chamados de

“data center”

Com a computação em nuvens, muitos aplicativos, não precisam mais estar instalados em

computadores do usuário final, nem mesmo em servidores e data centers próprio. Este conteúdo

fica disponível nas nuvens, ou seja, na internet. Cabendo ao fornecedor do serviço, todas as tarefas

de uma data center, como armazenamento, segurança, backups, atualizações e etc.

A computação em nuvem surge da necessidade de diminuir os gastos com recursos com

infraestrutura, e também da necessidade de se acessar os dados de qualquer lugar. Além disso,

recursos de computação e hardware são propensos a ficarem obsoletos rapidamente. Assim a

utilização de plataformas computacionais de terceiros é uma solução inteligente para os usuários

lidarem com a infraestrutura de TI, já que passa essa responsabilidade para o fornecedor contratado.

Page 10: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

11

2.2 Características

A convergência de uma gama de importantes tecnologias permite à computação na nuvem

prover serviços de forma transparente para o usuário, dentre outras funcionalidades e

particularidades. Campos de tecnologia que são de grande relevância nesta convergência são:

Hardware, com a capacidade de virtualização, Tecnologias de internet, como a Web 2.0, serviços

web; Gerenciamento de Sistemas, como a computação independente(autonomic computing) e a

automação de gerenciamento e manutenção de Data Center; além da computação distribuída, em

especial a utility & grid computing. [1]

A computação na nuvem propicia a ilusão de recursos computacionais infinitos disponíveis para

o uso. Portanto, os usuários têm a expectativa de que a nuvem seja capaz de fornecer rapidamente

recursos em qualquer quantidade e a qualquer momento. É esperado que os recursos adicionais

possam ser providos, possivelmente de forma automática, quando ocorre o aumento da demanda e

retidos, no caso da diminuição desta demanda. [1]

O consumidor de serviços da computação na nuvem espera adquirir recursos computacionais de

acordo com sua necessidade e de forma instantânea. Para suportar este tipo de expectativa, as

nuvens devem permitir o acesso em autoatendimento (self-service) para que os usuários possam

solicitar, personalizar, pagar e usar os serviços desejados sem intervenção humana. [1]

Uma vez que o usuário tem a opção de requisitar e utilizar somente a quantidade de recursos e

serviços que ele julgar necessário, os serviços devem ser precificados com base em um uso de baixa

duração, como por exemplo, medido em horas de uso. Por esta razão, as nuvens devem implementar

recursos que garantam um eficiente comércio de serviços, tais como tarifação adequada,

contabilidade, faturamento, monitoramento e otimização do uso. Esta medição de uso dos recursos

deve ser feita de forma automática e de acordo com os diferentes tipos de serviços oferecidos

(armazenamento, processamento e largura debanda) e prontamente reportada, permitindo uma

maior transparência comercial. [3]

Os recursos devem estar disponíveis através da rede e acessados através de mecanismos padrões

que permitam a utilização dos mesmos por plataformas heterogêneas, como smartfones, laptops,

PDAs, entre outros. [2]

Page 11: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

12

2.2.5 Customização

No atendimento a múltiplos usuários verifica-se a grande disparidade entre a necessidades dos

mesmos, tornando essencial a capacidade de personalização dos recursos da nuvem. Desde serviços

de infraestrutura, a serviços de plataforma e serviços de software.

2.3 Modelo de Serviço

O modelo conceitual encontrado na literatura é composto de três camadas, que definem um

padrão para computação em nuvem. Na ilustração 1, podemos verificar as camadas, informando

quem utiliza e o tipo de serviço.

2.3.1 Infraestrutura como Serviço – IaaS

Nesta camada são oferecidos os serviços de infraestrutura, ou seja, os fornecedores deste

serviço, oferecem recursos de hardwares virtualizados como computação, armazenamento e

comunicação. Está camada é a mais inferior, por este motivo, trabalha como infraestrutura para as

demais camadas.

Exemplo de ferramentas do nicho de serviço como infraestrutura é o Eucalyptus, um software

livre que consiste num framework que utiliza e gerência uma infraestrutura de computadores e

dispositivos de armazenamento com o intuito de disponibilizar um ambiente modular aos

Figura 1: Modelo de Serviço

Page 12: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

13

prestadores de serviço. Outros exemplos estão o CloudSim (voltado para simulações), Amazon

Elastic Compute Cloud, que é puramente comercial, onde ele provê um ambiente virtual no qual é

possível desenvolver e executar aplicações Linux, para isso o usuário escolhe como sua máquina

virtual deve ser.[3]

2.3.2 Plataforma como serviço – PaaS

O fornecedor oferece um ambiente como serviço, onde pode ser desenvolvido aplicações nas

nuvens, evitando assim algumas preocupações dos desenvolvedores, como processamento e

quantidade de memória utilizada pela aplicação. É a camada intermediaria, e utiliza a camada

inferior para prover seus serviços.

A tecnologia que apresentaremos neste trabalho, o Google App Engine, faz parte desta camada

da computação em nuvens, ela oferece serviços capazes de desenvolver aplicações em Java, Python

ou qualquer outra linguagem de programação, que utilize uma Java Virtual Machine (JVM) ou

Máquina Virtual Java.

2.3.3 Software como Serviço – SaaS

Se trata da camada mais alta da computação e nuvens, e fornece como serviços, aplicações

completas para o usuário final. Essas aplicações são fornecidas através do acesso a Web, permitindo

a execução de programas nas nuvens, através de uma máquina local. O SaaS como camada mais

alta, utiliza o IaaS e PaaS para seus serviços.

O Google com seu Google App, é o mais famoso fornecedor deste serviço, entre os serviços

fornecidos, estão Gmail, Hangout e Google Docs, outros exemplos são o Microsoft Azure, Chrome

OS, Photoshop online e etc.

2.3.4 Demais serviços

Existem outras tipologias de computação em nuvem, tais como, DaaS (Desenvolvimento como

Serviço), CaaS (Comunicação como Serviço), TaaS (Teste como Serviço) e EaaS (Tudo como

Serviço). Utilizados normalmente para diferenciar um tipo de serviço.

Page 13: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

14

2.4 Modelo de Implantação

No modelo de implantação,4 dependemos das necessidades das aplicações que serão

implementadas. A restrição ou abertura de acesso depende do processo de negócios, do tipo de

informação e do nível de visão desejado. Percebemos que certas organizações não desejam que

todos os usuários possam acessar e utilizar determinados recursos no seu ambiente de computação

em nuvem. Segue abaixo a divisão dos diferentes tipos de implantação [5].

2.4.1 Privado

Nuvens privadas, são aquelas construídas para um único usuário, por exemplo, uma empresa.

Nela o acesso é restrito, estabelecido pelo usuário, porém por ser uma nuvem privada que permite o

usuário ter este tipo de controle, gera um custo maior.

Característica que diferencia as nuvens privadas é ato da restrição de acesso, pois a mesma se

encontra atrás do firewall da empresa, sendo uma forma de aderir à tecnologia, beneficiando-se das

suas vantagens, porém mantendo o controle do nível de serviço e aderência às regras de segurança

da instituição. [4]

As nuvens privadas são aquelas construídas exclusivamente para um único usuário (uma

empresa, por exemplo). Diferentemente de uma data center privado virtual, a infraestrutura utilizada

pertence ao usuário, e, portanto, ele possui total controle sobre como as aplicações são

implementadas na nuvem. Uma nuvem privada é, em geral, construída sobre um Data

Center privado [5].

A figura 2, mostra um modelo de nuvem privada:

Page 14: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

15

2.4.2 Pública

As nuvens públicas são aquelas que são executadas por terceiros. As aplicações de diversos

usuários ficam misturadas nos sistemas de armazenamento, o que pode parecer ineficiente a

princípio. Porém, se a implementação de uma nuvem pública considera questões fundamentais,

como desempenho e segurança, a existência de outras aplicações sendo executadas na mesma

nuvem permanece transparente tanto para os prestadores de serviços como para os usuários [5].

A figura 3, mostra um modelo de Nuvem publica.

Figura 2: Modelo de Nuvem Privada

Page 15: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

16

2.4.3 Comunidade

A infraestrutura de nuvem é compartilhada por diversas organizações e suporta uma

comunidade específica que partilha as preocupações (por exemplo, a missão, os requisitos de

segurança, política e considerações sobre o cumprimento). Pode ser administrado por organizações

ou por um terceiro e pode existir localmente ou remotamente [5].

A figura 4, mostra um modelo de Nuvem Comunitária

2.4.4 Hibrido

Nas nuvens híbridas temos uma composição dos modelos de nuvens públicas e privadas. Elas

permitem que uma nuvem privada possa ter seus recursos ampliados a partir de uma reserva de

recursos em uma nuvem pública. Essa 8 característica possui a vantagem de manter os níveis de

Figura 3: Nuvem Pública

Figura 4: Nuvem Comunitária

Page 16: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

17

serviço mesmo que haja flutuações rápidas na necessidade dos recursos. A conexão entre as nuvens

pública e privada pode ser usada até mesmo em tarefas periódicas que são mais facilmente

implementadas nas nuvens públicas, por exemplo. O termo “computação em ondas” é, em geral,

utilizado quando se refere às nuvens híbridas [3].

Na figura 5, temos um exemplo de Nuvem Hibrida

2.5 Google App Engine

O Google App Engine, permite que os usuários executem os aplicativos na infraestrutura da

Google, assim não é necessário manter servidores, e se preocupar com os gastos que uma estrutura

dessas demandaria. O aplicativo é enviado para nuvens, e está pronto para ser utilizado pelo usuário

final.

Você pode enviar o arquivo para infraestrutura da Google, e manter seu próprio domínio, ou

também pode estar utilizando um nome livre de domínio oferecido pelo próprio Google App, o

appspot.com. O aplicativo enviado para o ambiente da Google, pode ser configurado para ser

acessado apenas por sua organização, ou ter livre acesso.

Os aplicativos podem ser desenvolvidos nas linguagens de programação Java e Python, ou por

qualquer outra linguagem de programação, que utilize uma Máquina Virtual Java. Para auxiliar no

desenvolvimento, é disponibilizado um conjunto de ferramentas chamado Google Web Toolkit

Figura 5: Nuvem Hibrida

Page 17: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

18

(GWT), que podem ser adicionados as principais IDEs do mercado, por exemplo, Eclipse e

Netbeans.

Na figura 6, mostra como funciona o ambiente de desenvolvimento em Java, e que existem

serviços de apoio.

2.5.1 Funcionalidades do GAE

O Google App Engine facilita a criação de aplicativos que podem ser executados de forma

confiável mesmo sob uma carga pesada e com grandes quantidades de dados. O Google App Engine

inclui os seguintes recursos:

1. Serviço da web dinâmico, com suporte completo a tecnologias da web comuns

2. Armazenamento persistente com consultas, classificação e transações

3. Escalonamento e balanceamento de carga automática

4. APIs para autenticação de usuários e envio de e-mails usando Contas do Google

5. Um ambiente de desenvolvimento local com todos os recursos, simulando o Google App

Engine em seu computador

6. Filas de tarefas para realizar trabalho fora do escopo de uma solicitação da web

Figura 6: Ambiente de desenvolvimento Java

Page 18: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

19

7. Tarefas programadas para iniciar eventos em horários específicos e em intervalos regulares

O aplicativo pode ser executado em um destes dois runtime environments: Java e Python Cada

ambiente oferece protocolos padrão e tecnologias comuns para o desenvolvimento de aplicativos da

web. [6]

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:

1. 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.

2. 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.

3. 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. [6]

O Google App Engine, contém um mecanismos de armazenamento de dados distribuído,

baseado em consultas e transações. Assim o armazenamento de dados distribuído, cresce a medida

que o número de dados aumentam.

O armazenamento de dados do Google App Engine, não é de maneira relacional, como grande

parte dos bancos de dados presentes do mercado. As consultas do modelo oferecido pelo Google,

recupera uma entidade de um tipo determinado, filtradas e classificadas de acordo com as

propriedades definidas. As interfaces de Java JPA/JDO e as interfaces de armazenamento de dados

em Python, possuem recursos para implementação em seus aplicativos.

As consultas são executadas sobre objetos de dados, que também são conhecidas como

entidades, as entidades podem conter uma ou várias propriedades onde uma delas é um

identificador único chamado de chave.

O Google App Engine suporta a integração de um aplicativo com as Contas do Google para

Page 19: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

20

autenticar um usuário. Seu aplicativo pode permitir que um usuário faça login com uma conta do

Google e acesse o endereço de e-mail e o nome de exibição associado à conta. O uso de Contas do

Google permite que o usuário comece a usar seu aplicativo mais rapidamente, pois talvez não

precise criar uma conta. Isso economiza o esforço de implementar um sistema de contas de usuário

somente para seu aplicativo.

Se seu aplicativo estiver sendo executado no Google Apps, ele pode usar os mesmos recursos

com os membros de sua organização e contas do Google Apps.

A API de usuários também pode informar ao aplicativo se o usuário atual é um administrador

registrado do aplicativo. Isso facilita a implementação de áreas de seu site restritas a

administradores. [6]

Criar um aplicativo no Google App Engine é gratuito, assim é possível desenvolver um

aplicativo e publicar o mesmo na plataforma do Google, sem nenhum custo inicial. Porém a versão

gratuita tem suas limitações, um aplicativo nesta categoria, pode ter apenas 500 MB de capacidade

de armazenamento, e 5 milhões de visualizações de página por mês. Caso necessite de mais

recursos, você pode ativar o faturamento, e escolher um dos planos disponíveis.

Você pode registrar no máximo 10 aplicativos por conta de desenvolvedor, e definir uma

limitação para cada um deles, as chamadas cotas, que define a quantidade de recursos que se pode

usar em um dia, podendo ser configurado posteriormente para aumentar ou até mesmo diminuir está

quantidade de recursos, a medida que seu aplicativo necessite.

2.6 Amazon Web Services (AWS)

Criado em 2006, o Amazon Web Services (AWS), começou a oferecer seus serviços de

computação em nuvens para as empresas de TI. Atualmente o AWS oferece nas nuvens um serviço

de infraestrutura altamente confiável e escalável, presente em mais de 190 pais, com seus Data

centers localizados nos EUA, Europa, Brasil, Cingapura, Japão e Austrália.

2.6.1 Funcionalidades do AWS Elastic Beanstalk

Assim que um aplicativo estiver sendo executado, o Elastic Beanstalk fornecerá vários recursos

de gestão, como:

Page 20: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

21

1. Implemente facilmente as novas versões do aplicativo em ambientes em execução (ou

implante em uma versão anterior).

2. Acesse métricas de monitoramento CloudWatch embutidas, como a utilização média da

CPU, a contagem de solicitações e a latência média.

3. Receber notificações por e-mail por meio do Amazon Simple Notification Service (Amazon

SNS) quando o status do aplicativo mudar ou os servidores do aplicativo forem adicionados

ou removidos.

4. Acesse arquivos de log do servidor sem precisar efetuar login nos servidores do aplicativo.

5. Reiniciar rapidamente os servidores do aplicativo em todas as instâncias do EC2 com um

único comando.

Com o Elastic Beanstalk, os desenvolvedores retêm o controle total sobre os recursos da AWS

capacitando seu aplicativo e podem desempenhar uma série de funções simplesmente ao ajustar

definições de configuração padrão do console de gestão do Elastic Beanstalk, incluindo:

1. Seleção do tipo de instância do Amazon EC2 mais apropriado que corresponde aos

requisitos da CPU e de memória do seu aplicativo

2. Escolher entre várias opções de armazenamento e de banco de dados disponíveis, como o

Amazon RDS, Amazon DynamoDB, Amazon SimpleDB, Microsoft SQL Server, Oracle,

IBM DB2 ou o Informix.

3. Habilitação do acesso de login a instâncias do Amazon EC2 para a solução de problemas

imediata e direta

4. Aprimoramento rápido da confiabilidade do aplicativo ao executar em mais de uma Zona de

disponibilidade

5. Aperfeiçoamento da segurança do aplicativo ao habilitar o protocolo HTTPS no load

balancer

6. Ajustar configurações de servidor do aplicativo (p.ex., configurações JVM) e varáveis de

ambiente de passagem

7. Execução de outros componentes do aplicativo, como serviço de armazenamento em cache

da memória, lado a lado no Amazon EC2

8. Ajustar as definições de Auto Scaling para controlar a métrica e os limites usados para

determinar quando adicionar ou remover instâncias de um ambiente. [7]

Page 21: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

22

2.7 GAE x AWS

Apesar das duas tecnologias de computação em nuvens pertencerem a mesma camada, o PaaS,

ambas tem suas particularidades e similaridades que apresentaremos neste trabalho. Focaremos na

comparação referente a linguagem de programação Java, não entrando em detalhes nas demais

linguagens.

2.7.1 Ambiente de Desenvolvimento

Ambas as tecnologias possuem ferramentas que auxiliam o desenvolvimento, e também no

envio das aplicações para as nuvens, no caso da linguagem Java, possuem uma SDK que suporta o

Java 5 e 6.

Existe um Plug-in de desenvolvimento para a IDE Eclipse, o Google Web Toolkit (GWT) e

AWS Toolkit, após instalação do mesmo, sua IDE Eclipse, estará configurada para o criar, testar e

enviar suas aplicações para as nuvens.

O Netbeans, outra importante IDE do mercado, também possui um Plug-in de desenvolvimento

para o SDK, porém o Eclipse é mais recomendado, e citado na documentação de ambas as

tecnologias.

2.7.2 Armazenamento

O Google App Engine inclui suporte a dois padrões de APIs diferentes para o armazenamento

de dados: JDO (Objetos de dados Java) e JPA (API persistente Java). Essas interfaces são oferecidas

pelo DataNucleus Access Platform, uma implementação de código aberto de vários padrões de

persistência Java, com um adaptador para o armazenamento de dados do App Engine. [6]

Criado e oferecido pelo Google, o BigTable é um banco de dados orientando a colunas, salva

objetos de dados, conhecidos como entidades. Uma entidade tem uma ou mais propriedades, valores

nomeados de um dos vários tipos de dados, incluindo números inteiros, valores de ponto flutuante,

strings, datas, dados binários e etc. Cada entidade também tem uma chave que identifica a entidade.

A chave mais simples têm um tipo e um ID de entidade fornecidos pelo armazenamento de dados. O

tipo classifica a entidade para que você possa consultá-la com mais facilidade. O ID da entidade

também pode ser uma string fornecida pelo aplicativo. Ao contrário de banco de dados tradicionais,

o armazenamento de dados usa uma arquitetura distribuída, também é diferente na forma como

Page 22: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

23

descrever relacionamentos entre objetos de dados, com o BigTable duas entidades do mesmo tipo,

podem ter propriedades diferentes. Diferentes entidades de dados podem ter propriedades com o

mesmo nome, mas tipos de valores diferentes.

São usadas consultas escritas em Google Query Language (GQL) para recuperar dados do

BigTable, diferente dos bancos de dados tradicionais que utilizam Structured Query Language

(SQL). Caso o desenvolvedor queria utilizar o MySQL, banco de dados modelo relacional mais

utilizado no mundo, é necessário uma outra ferramenta do Google, chamada Google Cloud SQL

que pode ser integrada ao Google App Engine.

O Amazon Elastic Beanstalk, o usuário pode utilizar qualquer um dos bancos relacionais mais

populares do mercado, como MySQL, Oracle e Microsoft SQL, basta utilizar um dos seus serviços

de persistência chamado Amazon RDS. Outros serviços oferecidos pela Amazon, são: O Amazon

DynamoDB é um serviço de banco de dados NoSQL, Amazon SimpleDB é um serviço de banco de

dados NoSQL gerenciado, projetado para conjuntos de dados menores e Amazon ElastiCache é um

serviço web que trabalha com cache na memória na nuvem.

2.7.3 Definição de Preços e Limites

Ambos os serviços apresentados, oferecem opções gratuitas para serem utilizadas, e o

contratante só paga o que exceder este limite gratuito. No caso do Google App Engine, um

aplicativo de uma conta gratuita pode usar até 500 MB de armazenamento e até 5 milhões de

visualizações de página por mês. Além disso, você pode registrar até 10 aplicativos por conta de

desenvolvedor.

Amazon Elastic Beanstalk, você só paga pelos recursos AWS subjacentes, por exemplo, um

recurso mais robusto de armazenamento. Cada recurso do AWS, também possui sua cota gratuita,

que varia de produto para produto. Entretanto, o custo é alto para Web sites com tráfego baixo e

desenvolvedores amadores. É possível criar até 25 aplicativos e 500 versões de aplicativos. Por

padrão, você pode executar até 10 ambientes em todos seus aplicativos.

2.7.4 Plataforma Java

Google App Engine e Amazon Elastic Beanstalk, possuem suporte para a Plataforma Java, nas

Page 23: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

24

versões 5 e 6, entretanto há algumas diferenças entre os dois serviços. No caso do primeiro, os

recursos para Java são limitados, e em alguns casos fora dos padrões. Devido a várias restrições

impostas aos seus aplicativos, o Google App Engine não suporta certas APIs da plataforma Java.

As limitações de APIs, acaba prejudicando o uso de alguns frameworks famosos no mercado,

podemos usar como exemplo, o JavaServer Faces (JFS), que requer modificações manualmente no

código de origem do framework para fazer com que ele execute no Google App Engine.

Amazon Elastic Beanstalk, suporta servidor Tomcat completo. Por causa de sua popularidade,

quase todos os frameworks Java corporativos suportam a implementação em Tomcat. Esses

frameworks podem ser iniciados ou inicializados a partir de um arquivo WAR do Tomcat,

oferecendo a você uma ampla variedade de opções de frameworks e bibliotecas.

Page 24: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

25

3 Aplicação com Google App Engine

O objetivo deste trabalho, é apresentar a estrutura de desenvolvimento da ferramenta do Google,

além do apresentarmos o desenvolvimento de uma aplicação simples. Após o desenvolvimento, a

aplicação será envidada para as Nuvens.

3.1 Preparando o Ambiente

Para o desenvolvimento da aplicação, precisamos preparar o ambiente, além do Java e da IDE

Eclipse, precisaremos do SDK do Google App Engine.

O SDK inclui software para um servidor web que você pode executar no seu próprio

computador para testar seus aplicativos Java. O servidor simula todos os serviços do App Engine,

incluindo uma versão local do armazenamento de dados, Contas do Google e recursos de busca de

URLs e envio de e-mails pelo computador através das APIs do App Engine. [6]

3.1.1 Java Development Kit

Java Development Kit é um conjunto de utilitários que permitem criar sistemas de software para

plataforma Java. O Google App Engine, tem suporte para as versões 5 e 6, e também suporte

experimental para a versão 7. A versão recomendada para o desenvolvimento de suas aplicações, é a

6.

É necessário realizar o download do JDK para instalação, isso pode ser feito no site do

fornecedor. A instalação depende do sistema operacional utilizado, mas instruções de instalação

podem ser encontrados em: http://docs.oracle.com/javase/7/docs/webnotes/install/index.html

Depois que o JDK estiver instalado, execute os seguintes comandos em um prompt de comando,

java -version e javac -version para confirmar se é possível executar os comandos e para identificar a

versão instalada. Como mostra a figura 7.

Page 25: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

26

3.1.2 Plug-in do Google para IDE Eclipse

Google Web Toolkit (GWT) é um Plug-in do Google para Eclipse que ajuda no

desenvolvimento de aplicações. O Plug-in permite que você crie, teste e envie aplicativos do App

Engine pelo Eclipse.

Você pode instalar o Plug-in usando o recurso Software Update (Atualização de software) do

Eclipse, instalaremos a versão para a última versão do Eclipse no momento, Eclipse 4.3 (Kepler).

Com o Eclipse aberto, selecione Help (Ajuda) > Install New Software... (Instalar novo software...).

Irá abrir uma janela para informarmos o Plug-in que deve ser instalado, conforme figura número 8.

Figura 7: Verificando instalação do Java

Figura 8: Adicionando o link do Plug-in

Page 26: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

27

Na janela da figura 8, devemos clicar em “Add” para adicionar o nome e o endereço, de onde o

Eclipse deve baixar o Plug-in. O endereço que dever ser inserido:

https://dl.google.com/eclipse/plugin/4.3 conforme a figura 9.

Após o endereço ser adicionado, uma lista de ferramentas do Google App Engine, será

mostrada. Para o desenvolvimento de aplicações Web, é necessário apenas as opções requeridas e

recomendadas, mas adicionaremos todas as ferramentas, como mostra a figura 10.

Figura 9: Adicionando nome e endereço do Download

Figura 10: Escolhendo as ferramentas

Page 27: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

28

A próxima janela que será aberta, mostra os detalhes dos recursos que serão instalados, bastando

clicar em “Next”, como mostra a figura 11.

A figura 12, mostra o processo de instalação, que pode levar alguns minutos.

Figura 11: Detalhes dos recursos

Figura 12: Processo de instalação

Page 28: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

29

3.1.3 Testando a instalação

Com a instalação concluída, para testar se tudo está funcionando, pode executar uma das várias

aplicações demos inclusos no SDK Java do App Engine. Se você usa o Eclipse, o SDK estará

localizado no diretório de instalação, em

plugins/com.google.appengine.eclipse.sdkbundle_VERSION/, em que VERSION representa o

identificador de versão do SDK.

Para testar a instalação e executar um dos aplicativos demos, uma das opções é usar a linha de

comando, para isso, acesse a pasta do Plug-in no Eclipse, e execute o comando, como mostra as

ilustrações 13 e 14:

Se estiver usando o Mac OS X ou o Linux, execute o seguinte comando:

Se estiver usando o Windows, execute o seguinte comando:

3.2 Criando o primeiro Projeto

Os aplicativos Java do App Engine usam a norma Java Servlet para interagir com o ambiente do

servidor web. Os arquivos de um aplicativo, incluindo classes compiladas, JARs, arquivos estáticos

e de configuração, são organizados em uma estrutura de diretórios no layout padrão WAR para

aplicativos web Java. Você pode usar qualquer processo de desenvolvimento que desejar para

desenvolver servlets web e criar um diretório do WAR. Os arquivos do armazenamento WAR ainda

não são compatíveis com o SDK. [GOOGLE, 2013]

No Eclipse, crie um novo projeto, clicando no botão Web Application Project New na barra de

ferramentas: O botão Web Application Project New: De um nome para o projeto, e um nome

Figura 13: Comando para Linux e MAC OS, [6]

Figura 14: Comando para Windows, [6]

Page 29: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

30

para o pacote do mesmo, clique em finalizar, e será criado um novo projeto com a estrutura

mostrada na figura 15.

• src: Código fonte Java;

• META-INF: Outras configurações;

• war: JSP, imagens e arquivos de dados;

• WEB-INF: Aplicativos de configuração;

• lib: JARs, onde adicionamos as bibliotecas;

• classes: Classes compiladas.

3.2.1 Olá Mundo

Os aplicativos em Java do App Engine usam a API Java Servlet para interagir com o servidor

web. Um servlet HTTP é uma classe de aplicativo que pode processar e responder a solicitações da

web. Essa classe estende a classe javax.servlet.GenericServlet ou a classe

javax.servlet.http.HttpServlet. [6]

Figura 15: Estrutura do Projeto

Page 30: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

31

Crie um Servlet dentro do diretório “src” com o código mostrado na figura 16.

Após o desenvolvimento do código, execute aplicação em Run > Run As > Web Application.

Eclipse e o Plug-in do Google para Eclipse, o servidor será executado pela porta 8888 por padrão,

como mostra a figura 17.

Figura 16: Olá Mundo

Figura 17: Execução do Olá Mundo

Page 31: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

32

3.3 Mural de Mensagens

O projeto demostrativo deste trabalho, será um Mural de mensagens, onde poderá ser postada

uma mensagem e a mesma será gravada no mural através da persistência utilizando JDO. O usuário

que estiver logado em uma conta do Google, aparecerá seu nome na mensagem, caso contrário, será

postado como anônimo.

3.4 Persistência

O Google App Engine, permite que realize persistência usando duas API Java. O JDO (Objeto

de dados Java) e JPA (API de persistência Java), no exemplo proposto deste trabalho, será utilizada

a primeira API citada.

3.4.1 DataNucleus Access Platform

O Access Platform precisa de um arquivo de configuração que especifique que ele usará o

armazenamento de dados do GAE, este arquivo é chamado jdoconfig.xml. E deve estar no diretório

war/WEB-INF/classes/META-INF/. Caso esteja utilizando o Eclipse com o Plug-in do Google App

Engine, este arquivo deve ser gerado automaticamente, caso o contrário, crie um com as

informações mostradas na figura 18.

Figura 18: Configurações JDO

Page 32: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

33

3.4.2 Anotações JDO e POJOs

Devemos agora criar um POJO(Plain Old Java Objects), simples classes Java, com construtor e

Gets e Sets. Porém nestas classes adicionaremos anotações JDO para que possamos persisti-la na

plataforma da Google.

Para declarar uma classe Java como capaz de ser armazenada e recuperada do armazenamento

de dados com JDO, atribua a anotação @PersistenceCapable à classe. [6].

Campos da classe de dados que devem ser armazenados no armazenamento de dados devem ser

declarados como campos persistentes. Para declarar um campo como persistente, dê a ele uma

anotação @Persistent. [6]

Toda a classe deve conter um campo dedicado para a chave primaria, As chaves principais

exigem uma anotação @PrimaryKey e uma anotação @Persistent(valueStrategy =

IdGeneratorStrategy.IDENTITY).

A figura 19, mostra um exemplo de classe anotada.

Figura 19: Classe com anotação JDO

Page 33: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

34

3.4.3 Fábrica de Conexão e persistence.xml

Cada solicitação que usa o armazenamento de dados cria uma instância nova da classe

PersistenceManager. Para fazer isso, ela usa uma instância da classe PersistenceManagerFactory.

Uma instância da PersistenceManagerFactory demora para ser inicializada. Felizmente, você só

precisa de uma instância para seu aplicativo e ela pode ser armazenada em uma variável estática

para ser usada por várias solicitações e várias classes. Uma maneira fácil de fazer isso através da

criação de uma única classe empacotadora para a instância estática.[6]

As figuras 20 e 21 ilustram nosso modelo de fábrica de conexão e persistência.

O transactions-optional deve estar em seu persistence.xml:

Figura 20: Exemplo de fábrica de conexão

Page 34: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

35

3.4.4 Servlet

A classe BtajdoServlet será responsável por criar e persistir nosso objeto. Para salvar a instância

no armazenamento de dados, ele cria um PersistenceManager usando um

PersistenceManagerFactory e, em seguida, passa a instância para o método makePersistent() do

PersistenceManager. Depois que makePersistent() retorna, o novo objeto é armazenado no

armazenamento de dados.

A figura 22, ilustra nosso modelo.

Figura 21: persistence.xml

Page 35: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

36

3.4.5 View (JSP)

Após a criação do Servlet devemos criar nossa JSP, que será responsável por mostrar as

informações no navegador do usuário, nossa visão deve ser editada com as informações que deseja

apresentar. A figura 23, ilustra nosso formulário.

3.4.6 JDOSQL

Figura 22: Servlet

Figura 23: JSP

Page 36: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

37

A norma JDO define um mecanismo para consultar objetos persistentes chamadas JDOQL. Você

pode usar o JDOQL para realizar consultas de entidades no armazenamento de dados do App

Engine e recuperar resultados como objetos aprimorados pelo JDO.

Realize uma consulta com a interface JDO através da JDOQL, uma linguagem de consultas do

tipo SQL para recuperação de objetos de dados. A linha a seguir define a sequência de caracteres da

consulta JDOQL. [6]

Um exemplo de consulta com JDOSQL pode ser visto na figura 24.

3.4.7 Como enviar o projeto com a IDE Eclipse

Depois de pronto, para enviar o projeto para a plataforma da Google, é necessário criar um ID

único para o projeto, após a criação deste ID, temos a possibilidade de excluirmos, porém, não

poderemos usar o mesmo ID novamente.

Para criar o ID do projeto, acesse a URL: https://appengine.google.com/ . Será necessário ter

uma conta Google, caso não possua, a mesma pode ser criada preenchendo o formulário da URL:

https://accounts.google.com/SignUp?service=chromiumsync&continue=https%3A%2F

%2Fwww.google.com%2Fintl%2Fpt-BR%2Fchrome%2Fblank.html%3Fsource%3D1

Como mostra a figura 25.

Figura 24: Exemplo de JDOSQL

Page 37: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

38

Após finalizar a criação da conta Google, para criar o ID do projeto, clique em “Create

Application” e preenchendo os campos do formulário, como mostra as figuras 26 e 27.

Figura 27, vemos o formulário que deve ser preenchido.

Figura 25: Criando uma conta Google

Figura 26: Criando o ID do Projeto

Page 38: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

39

No projeto edite o arquivo appengine-web.xml e, em seguida, altere o valor do elemento

<application> para corresponder ao ID de aplicativo que registrou. O arquivo deve estar na pasta

WEB-INF de sua aplicação.

A figura 28, mostra onde devemos adicionar o ID no projeto.

Pode enviar o código e os arquivos do projeto pelo Eclipse usando o Plug-in do Google. Para

enviar o projeto pelo Eclipse, clique no botão de implementação do App Engine na barra de

Figura 27: Formulário do ID

Figura 28: Adicionando o ID no Projeto

Page 39: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

40

ferramentas: .

Quando solicitado, digite o nome de usuário (seu endereço de e-mail) e a senha da Conta do

Google e, em seguida, clique no botão Enviar. O Eclipse coletará as informações de versão e ID do

aplicativo no arquivo appengine-web.xml e enviará os conteúdos do diretório war/. [6]

A figura 29, mostra o processo de envio do projeto no Eclipse.

Em seguida, será aperto uma janela com o projeto já rodando na plataforma da Google, como

mostra a figura 30.

Figura 29: Enviando o projeto

Page 40: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

41

Figura 30: Projeto mural de mensagens

Page 41: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

42

4 Conclusão

Este trabalho apresentou o que é, e como desenvolver aplicações para o Google App Engine.

Seus recursos também foram comparados com outro concorrente do mercado, assim foi possível

observar as vantagens e desvantagens de cada serviço.

O projeto final foi criado e adicionado na plataforma do Google, o mesmo seguiu os passos

propostos pela própria documentação oficial, e funcionou de acordo com o propósito apresentado

neste trabalho.

As configurações para chegarmos neste ponto, não são complicadas, a IDE Eclipse ajuda

bastante neste quesito, evitando que seja necessário recorrer ao terminal e a linha de comando, que

embora sejam efetivos, é mais sugestivo ao erro.

Na implementação do código fonte, nota-se que para desenvolver para o Google App Engine, é

necessário seguir algumas regras propostas pela tecnologia, principalmente para manter a

escalonamento do projeto. Estas regras acabam deixando o desenvolvimento mais engessado,

evitando que todo o poder das APIs Java sejam utilizadas. Neste ponto, o Elastic Beanstalk, da

Amazon, leva vantagem, pois pode utilizar todo o poder das APIs, porém o mau uso delas, pode

atrapalhar o escalonamento do projeto.

O deploy do projeto, mais uma vez é facilitado pela ajuda da IDE Eclipse, com o auxílio da

ferramenta, o projeto é enviado apenas com alguns poucos passos que deve ser tomados para evitar

problemas no envio.

Ferramenta para o desenvolvimento são oferecidas, e facilitam muito para a criação do projeto,

com a ajuda do Plug-in da Google, o desenvolvedor pode focar mais no projeto, deixando parte de

configurações para a Plug-in. Também é oferecido um framework o Google Tool Kit, que agiliza

ainda mais o desenvolvimento. Caso seja necessário, a ferramenta ainda pode ser utilizada através

da linha de comando, onde se mostra proporcionalmente efetivo.

Já na plataforma do Google App Engine, mesmo sendo um conta de limite gratuito, o projeto

apresentou bom desempenho, e sempre disponível para utilização do mesmo. Mostrando que é um

serviço confiável.

Computação em nuvens está se tornando cada vez mais presente, e Google junto com a

Amazon, foram pioneiras no assunto, e hoje apresentam diversas tecnologias e recursos para

computação em nuvens, e saem na frente neste quesito,

Page 42: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

43

Como trabalho futuro, pode ser realizado um projeto utilizando os serviços da Amazon, e

realizar o deploy na infraestrutura oferecida, assim podemos comparar o desempenho e cada uma

das tecnologias, também poderá ser visto o desempenho da IDE Eclipse com o Plug-in oferecido

pela ferramenta Elastic Beanstalk.

Page 43: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

44

5 Referência bibliográfica

[1] Pedrosa, Paulo H. C. e Tiago Nogueira. Computação em nuvens. Disponível em

<http://www.ic.unicamp.br/~ducatte/mo401/1s2011/T2/Artigos/G04-095352-120531-t2.pdf>.

Acessado em 10 out 2013 Apud BUYYA, Rajkumar; BROBERG, James; GOSCINSKI, Andrzej.

Cloud Computing Principles and Paradigms; 1. ed New Jersey, U.S. : John Wiley & Sons, Inc.

2011. 664p. ISBN: 978-0-470-88799-8

[2] Pedrosa, Paulo H. C. e Tiago Nogueira. Computação em nuvens. Disponível em

<http://www.ic.unicamp.br/~ducatte/mo401/1s2011/T2/Artigos/G04-095352-120531-t2.pdf>.

Acessado em 10 out 2013 Apud MELL, Peter; GRANCE, Timothy. The NIST Definition of Cloud

Computing (Draft). January 2011.

[3] Pedrosa, Paulo H. C. e Tiago Nogueira. Computação em nuvens. Disponível em

<http://www.ic.unicamp.br/~ducatte/mo401/1s2011/T2/Artigos/G04-095352-120531-t2.pdf>.

Acessado em 10 out 2013 Apud CHIRIGATI, Fernando Seabra. Computação em Nuvem. Rio de

Janeiro, RJ. 2009.

[4] Um estudo sobre os benefícios e os riscos de segurança na utilização de Cloud Computing.-

Fabrício Rodrigues. Disponível em <http://fabriciorhs.wordpress.com/2010/09/28/cloud-

computing/>. Acessado em 15 nov 2013 Apud TAURION, C. Computação em Nuvem:

Transformando o mundo da tecnologia da informação. Rio de Janeiro: Brasport, 2009.

[5] Cloud Computing.- Fabrício Rodrigues. Disponível em

<http://fabriciorhs.wordpress.com/2010/09/28/cloud-computing/>. Acessado em 15 nov 2013

[6] Google App Engine. Disponível em <https://developers.google.com/appengine/?hl=pt-BR>.

Acessado em 9 ago 2013.

[7] AWS Elastic Beanstalk. Disponível em <http://aws.amazon.com/pt/elasticbeanstalk/>.

Acessado em 9 ago 2013.

Page 44: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

45

Apêndices

Page 45: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

46

Apêndice A – Classe BtajdoServlet

package btajdo;

import java.io.IOException;

import java.util.Date;

import java.util.logging.Logger;

import javax.jdo.PersistenceManager;

import javax.servlet.http.*;

import com.google.appengine.api.users.User;

import com.google.appengine.api.users.UserService;

import com.google.appengine.api.users.UserServiceFactory;

@SuppressWarnings("serial")

public class BtajdoServlet extends HttpServlet {

private static final Logger log = Logger.getLogger(BtajdoServlet.class.getName());

public void doPost(HttpServletRequest req, HttpServletResponse resp)

throws IOException {

UserService userService = UserServiceFactory.getUserService();

User user = userService.getCurrentUser();

String content = req.getParameter("content");

Date date = new Date();

Mural mural = new Mural(user, content, date);

PersistenceManager pm = PMF.get().getPersistenceManager();

try {

pm.makePersistent(mural);

} finally {

pm.close();

}

Page 46: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

47

resp.sendRedirect("/mural.jsp");

}

}

Page 47: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

48

Apêndice B – Mural.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ page import="java.util.List" %><%@ page import="javax.jdo.PersistenceManager" %><%@ page import="com.google.appengine.api.users.User" %><%@ page import="com.google.appengine.api.users.UserService" %><%@ page import="com.google.appengine.api.users.UserServiceFactory" %><%@ page import="btajdo.Mural" %><%@ page import="btajdo.PMF" %>

<html><head>

<title>BRUNO THEDORO DE AQUINO</title></head> <body><h1>Trabalho Final - Bruno Theodoro de Aquino</h1><% UserService userService = UserServiceFactory.getUserService(); User user = userService.getCurrentUser(); if (user != null) {%><p>Oi, <%= user.getNickname() %>! (você pode<a href="<%= userService.createLogoutURL(request.getRequestURI()) %>">sair</a>.)</p><% } else {%><p>Oi!<a href="<%= userService.createLoginURL(request.getRequestURI()) %>">Entre</a>para incluir o seu nome</p><% }%>

<% PersistenceManager pm = PMF.get().getPersistenceManager(); String query = "select from " + Mural.class.getName(); List<Mural> ms = (List<Mural>) pm.newQuery(query).execute(); if (ms.isEmpty()) {%><p>O livro de visitas não tem mensagens.</p><% } else { for (Mural g : ms) { if (g.getAuthor() == null) {%><p>Uma pessoa anônima escreveu:</p><%

Page 48: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

49

} else {%><p><b><%= g.getAuthor().getNickname() %></b> escreveu:</p><% }%><blockquote><%= g.getContent() %></blockquote><% } } pm.close();%>

<form action="/sign" method="post"> <div><textarea name="content" rows="3" cols="60"></textarea></div> <div><input type="submit" value="Poste no Mural" /></div> </form>

<form action="/mural.jsp" method="get"> <!-- <div><input type="submit" value="Mudar Livro de Visitas" /></div> --> </form>

</body></html>

Page 49: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

50

Apêndice C – Controle de Versão com Git.

Instalando o Git

Acesse o link: http://git-scm.com/book/pt-br/Primeiros-passos-Instalando-Git.

O Git é multiplataforma, e está disponível para Linux, Windows e MacOS. Instale seguindo os

passos para o sistema operacional adequado, mostrado no link.

Criando um Repositório Online

Acesse o link: https://bitbucket.org/

Existe alguns serviços que oferecem Repositórios nas nuvens, onde é armazenado as versões do

projeto. Clique em Sign up for free para criar uma conta gratuita, como mostra a Figura 31.

Acessando o link para criar uma conta, é exibira a tela da Figura 32. Basta preencher os campos

solicitados e clicar no botão Sign Up.

Figura 31

Page 50: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

51

Após se criar uma conta, acesse a mesma com usuário e senha, e clique no botão Criar, e será

exibida a tela da Figura 33, preencha os dados, e clique no botão Criar repositório novo repositório

online.

Figura 32: Fonte: Bitbucket. 2013

Figura 33: Fonte: Bitbucket. 2013

Page 51: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

52

Criado o repositório, clique em Estou começando do zero, e siga os passos da Figura 34 para

criar uma pasta do seu repositório local, iniciar o controle de versão e sincronizar com seu

repositório nas nuvens.

Enviando o projeto para Repositório nas nuvens.

Com os repositórios criados, adicionar as mudanças, confirme as mudança e envie o projeto

para o repositório nas nuvens criado. A Figura 35, mostra os passos no terminal de comando.

Figura 34: Fonte: Bitbucket. 2013

Page 52: UNIVERSIDADE ESTADUAL DE MARINGÁ – UEM … Theodoro de Aquino... · O termo computação em nuvens ou cloud computing surgiu 2006, em uma palestra de Eric Schmidt, da Google

53

A Figura 36, mostra o projeto já presente no repositório nas nuvens.

Figura 35

Figura 36: Fonte: Bitbucket, 2013