Escolar Documentos
Profissional Documentos
Cultura Documentos
ASSIS
2011
ASSIS
2011
FICHA CATALOGRFICA
ROMANO, Christyano Wesley
Computao em Nuvem com ferramentas do Google /
Christyano Wesley Romano. Fundao Educacional do Municpio de
Assis FEMA Assis, 2011.
42p.
Orientador: Prof. Dr. Alex Sandro Romeo de Souza Poletto
Trabalho de Concluso de Curso Instituto Municipal de Ensino
Superior de Assis IMESA.
1.Computao em Nuvem. 2.Banco de Dados. 3.Novas
Tecnologias. 4.Google. 5.Internet. 6.Aplicaes Web
CDD:001.6
Biblioteca da FEMA.
analisado
pela
seguinte
examinadora:
.
ASSIS
2011
comisso
DEDICATRIO
RESUMO
O conceito de Computao em Nuvem vem crescendo muito em grandes e
pequenas empresas, e tambm em usurios comuns. Esse crescimento vem
acontecendo pelo fato de facilitar na questo de utilizar determinados servios de
qualquer lugar e independente da plataforma, com apenas o acesso a Internet sem
que as aplicaes estejam instaladas em seus computadores. Como essa nova
tecnologia vem crescendo, a Google disponibilizou ferramentas gratuitas de
desenvolvimento de aplicaes para Web, com isso os objetivos do trabalho ser
mostrar conceitos de Computao em Nuvem, e realizar uma pesquisa sobre as
ferramentas disponibilizadas pelo Google, com o intuito de realizar um estudo de
caso, desenvolvendo assim uma aplicao.
ABSTRACT
The concept of Computation in Cloud comes very growing in great and small
companies, and also in common users. These growths comes happening for the fact
to facilitate in the question to use definitive services of any independent place and of
the platform, with only the access the Internet without the applications are installed
in its computers. As this new technology comes growing, the Google available
gratuitous tools of development of applications for Web, with this the objectives of
the work will be to show concepts of Computation in Cloud, and to carry through a
research on the tools available for the Google, with intention to carry through a case
study, thus developing an application.
Applications.
LISTA DE ILUSTRAES
Figura 1. Viso de uma nuvem computacional (Rushel; Zanotto; Da Mota, 2010)
melhorada................................................................................................................. 12
Figura 2. Modelos de servios (Sousa; Moreira; Machado, 2010). ........................... 16
Figura 3. Tipos de Nuvens (Sousa; Moreira; Machado, 2010) ................................. 19
Figura 4. Papis de Computao em Nuvem (Sousa; Moreira; Machado, 2010). .... 21
Figura 5. Instalao da ferramenta SDK. ................................................................. 28
Figura 6. Criao do Projeto Aplicao. ................................................................... 29
Figura 7. Servlet Usurio. ......................................................................................... 30
Figura 8. Desenvolvedor autenticado no Google dentro do Eclipse. ........................ 39
Figura 9. Representao de um projeto em nuvem. ................................................. 40
TI
Tecnologia da Informao.
SDK
JDO
JPA
JSP
APP
Application.
SUMRIO
1.
INTRODUO ............................................................................................... 12
CONCLUSO .......................................................................................................... 40
REFERENCIAS ........................................................................................................ 42
12
1. INTRODUO
Hoje em dia com o desenvolvimento da sociedade humana, somos muito
dependentes de servios de utilidades pblicas como luz, gua, telefone, gs dentre
outros, que facilitam nossas vidas. Para a utilizao desses servios necessrio
pag-los, e a mesma ideia vem sendo utilizada na rea da Informtica. Com o
avano da tecnologia a ideia de vender recursos computacionais esta se tornando
cada vez mais comum, hoje vem se falando muito em Computao em Nuvem, um
tipo de servio na rea da Informtica com esse mesmo conceito, pagar para ser
utilizado.
Segundo Taurion (2009),
pode-se dizer que a Computao em nuvem um termo para
descrever um ambiente da computao baseado em uma imensa
rede de servidores, sejam virtuais ou fsicos. Uma definio simples
pode ser ento, o conjunto de recursos como capacidade de
processamento, armazenamento, conectividade, plataformas,
aplicaes e servios disponibilizados na Internet.
13
1.1 OBJETIVO
1.2. JUSTIFICATIVA
A justificativa pela escolha deste assunto se d pelo fato de ser uma nova tendncia
para a rea de desenvolvimento de aplicaes, que est sendo implantada em
muitas empresas de grande e pequeno porte, alm de oferecer uma reduo nos
gastos de aplicaes e manutenes nas empresas.
14
1.3. MOTIVAES
Este trabalho est organizado em cinco captulos, sendo o primeiro, esta Introduo.
No segundo captulo, sero apresentadas as fundamentaes tericas sobre
Computao em Nuvem.
No terceiro captulo, ser apresentada a ferramenta Google APP ENGINE.
No quarto captulo, ser apresentado um estudo de caso sobre a tecnologia
realizando assim uma aplicao simples mostrando como funcionam as ferramentas.
No quinto captulo a concluso do estudo realizando uma analise da tecnologia
vantagens desvantagens.
15
2. COMPUTAO EM NUVEM
16
17
18
19
A nuvem pblica pode ser utilizada por diversos usurios, basta o usurio conhecer
o local de acesso da nuvem para utilizar seus recursos. Porm, os usurios que
utilizam esse tipo de nuvem no tm acesso a infraestrutura do servio.
Para este modelo de implantao as restries de acessos no podem ser
aplicadas, quando ao gerenciamento de redes, a aplicao de tcnicas de
autenticao e autorizao tambm no ser possvel. (RUSHEL; ZANOTTO; DA
MOTA, 2010).
20
Com os servios citados, os papeis so importantes para definir onde cada tipo de
usurio pode utilizar os modelos de servios.
Para entender melhor a computao em nuvem, preciso classificar os atores dos
modelos de acordo com os papis desempenhados (SOUSA; MOREIRA;
MACHADO, 2010).
21
22
23
24
de
desenvolvimento,
disponibilizou
ferramentas
para
25
JDO (Java Data Objects) uma interface padro para armazenar objetos que
contem dados em um banco de dados, ou seja, o JDO responsvel por gravar os
dados da aplicao.
Java Data Objects uma forma padro de acesso a dados persistente em banco de
dados. (JDO, 2011).
Como foi citado anteriormente, foi desenvolvido o Data Nucleus quando criada
uma aplicao com Application Engine o Data Nucleus responsvel pelo
armazenamento dos dados da aplicao.
26
3.1.3. Sandbox.
27
4. ESTUDO DE CASO
4.1. Aplicao
A aplicao que ser desenvolvida para o estudo de caso, apesar de simples,
demonstra o uso dessa nova tecnologia. uma aplicao em que o usurio poder
ou no fazer login e postar uma mensagem de saudao, com o objetivo de
apresentar a ferramenta Application Engine SDK, disponibilizada pela Google para
desenvolver em Java com o compilador Eclipse.
A ferramenta no vem instalada na verso do Eclipse que utilizado, porm
preciso instalar a mesma. A ferramenta pode ser instalada utilizando o recurso de
Software Update (Atualizao de Software), que esta na opo Help, do Eclipse. A
Figura 5 mostra o caminho para a atualizao.
28
29
30
package aplicacao;
import java.io.IOException;
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 AplicacaoServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
UserService userService = UserServiceFactory.getUserService();
User usuario = userService.getCurrentUser();
if (usuario != null) {
resp.setContentType("text/plain");
resp.getWriter().println("Bem vindo, " + usuario.getNickname());
} else {
resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
31
}
}
}
32
Com o arquivo de configurao criado, pode ser criada uma classe na aplicao
para fazer o armazenamento de dados. A classe que ser apresentada a seguir tem
o nome de Saudacao.jar, uma classe em Java que importara toda a persistncia de
dados utilizando JDO, para armazenar os objetos da classe em dados.
package aplicacao;
import java.util.Date;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import com.google.appengine.api.users.User;
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Saudacao {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long codigo;
@Persistent
private User autor;
@Persistent
private String conteudo;
@Persistent
private Date data;
public Saudacao(User autor, String conteudo, Date data) {
this.autor = autor;
this.conteudo = conteudo;
this.data = data;
}
public Long getCodigo() {
return codigo;
}
public void setCodigo(Long codigo) {
this.codigo = codigo;
}
public User getAutor() {
return autor;
}
public void setAutor(User autor) {
this.autor = autor;
}
public String getConteudo() {
33
return conteudo;
}
public void setConteudo(String conteudo) {
this.conteudo = conteudo;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
}
Na classe Saudao tem trs variveis: o autor, o contedo e a data. Nas trs
variveis tem a notao @Persistent, que serve para informar para o DataNucleus
que as variveis sero gravadas como dados da aplicao.
Outro fator importante no armazenamento dos dados a manipulao dos objetos
que sero gravados, para isso criado uma classe, chamada de Persistence
Manager Factory (PMF), ou seja, a cada vez que a aplicao transformar os objetos
em dados requisitado Manager Factory (MF). Com isso, a criao da classe facilita
de no ter mais que ficar requisitando MF, ou seja, construdo um mtodo na
classe PMF responsvel por toda vez que precisar de uma manipulao ser
utilizado sem precisar requisitar a cada persistncia feita. A implementao da
classe PMF :
package aplicacao;
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManagerFactory;
public final class PMF {
private static final PersistenceManagerFactory pmfInstance =
JDOHelper.getPersistenceManagerFactory("transactions-optional");
private PMF() {}
public static PersistenceManagerFactory get() {
34
return pmfInstance;
}
}
Com o acesso a dados e a Saudacao criada, criado um novo servlet para escrever
as mensagens postadas. Esse servlet ter o nome de EscreverAplicacaoServlet e
seu objetivo responder e requisitar os dados no servidor, pegando o usurio que
vai interagir com o sistema, e gravar os dados na aplicao. Segue o seguinte
cdigo do novo servlet.
package aplicacao;
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;
import aplicacao.Saudacao;
import aplicacao.PMF;
public class EscreverAplicacaoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final Logger log =
Logger.getLogger(EscreverAplicacaoServlet.class.getName());
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
String conteudo = req.getParameter("conteudo");
35
36
/>
</head>
<body>
<%
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
if (user != null) {
%>
<p>Ol, <%= user.getNickname() %>! (Voc quer
<a href="<%= userService.createLogoutURL(request.getRequestURI())
%>">Deslogar</a>.)</p>
<%
} else {
%>
<p>Ol!
<a href="<%= userService.createLoginURL(request.getRequestURI())
%>">Logue</a>
para incluir saudaes com seu nome.</p>
<%
}
%>
<%
PersistenceManager pm = PMF.get().getPersistenceManager();
String query = "select from " + Saudacao.class.getName() + " order by data desc
range 0,5";
List<Saudacao> saudacoes = (List<Saudacao>) pm.newQuery(query).execute();
if (saudacoes.isEmpty()) {
%>
<p>O livro no possui saudaes.</p>
<%
} else {
for (Saudacao s : saudacoes) {
if (s.getAutor() == null) {
%>
<p>Pessoa anonima escreveu: </p>
<%
} else {
%>
<p><b><%= s.getAutor().getNickname() %></b> escreveu: </p>
<%
}
%>
37
Na pgina .jsp pode importar o servio de usurio que foi utilizado no servlet, para
trabalhar com os dados do usurio do servlet. Mas para a pgina trabalhar com o
servlet necessrio mapear a mesma, no arquivo web.xml dentro do diretrio WEBINF, adicionando o seguinte cdigo.
<welcome-file-list>
<welcome-file>aplicacao.jsp</welcome-file>
</welcome-file-list>
O objetivo do mapeamento definir que a pgina criada .jsp ser a pgina principal,
ou seja, quando o aplicativo entrar em execuo ela ser exibida para o usurio.
Na pgina principal utilizado todos os recursos j implementado antes, como o
servios de usurio, para definir o usurio conectado ou no, o PMF que
responsvel para manipular os dados e consultas no banco, e a classe Saudao
utilizando assim os objetos como o autor e contedo, todas essas informaes sero
requisitadas na pgina aplicao.jsp.
38
encontrado na
barra superior do Eclipse, com isso enviando toda aplicao para os servidores do
google. Outro arquivo de configurao que criado junto com o projeto o
appengine-web.xml responsvel pelo nome da aplicao nos servidores do Google e
contem o seguinte cdigo:
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application></application>
<version>1</version>
<!-- Configure java.util.logging -->
<system-properties>
<property name="java.util.logging.config.file" value="WEBINF/logging.properties"/>
</system-properties>
</appengine-web-app>
39
Como a aplicao ainda esta sendo executada no servidor local, necessrio envila para os servidores da Google, essa foi a dificuldade encontrada na aplicao.
Para enviar basta esta autenticada no compilador eclipse que esteja com o email do
desenvolvedor ativado, como mostra na figura 8.
os servidores do Google, com isso ele solicitara que informe um numero de telefone
celular para enviar um cdigo de segurana, porem o cdigo no foi enviado, sendo
assim a dificuldade encontrada no estudo.
40
CONCLUSO
Por ser uma tecnologia considerada nova, a Computao em Nuvem ainda uma
questo muito polmica. Isso se deve pelo fato de as empresas no utilizarem por
insegurana. Muitos empresrios de TI acham que por no fazer parte da
infraestrutura da sua empresa, ou seja, utilizar servidores no conhecidos pode
ocorrer falhas de segurana. Outro fato que muito dependente da Internet
gerando assim gargalo de usurios deixando lento o acesso a dados, porm, poder
ser muito utilizada, em grandes e pequenas empresas, pelo fato de diminuir os
custos das empresas, principalmente na Infraestrutura que com o uso da nova
tecnologia no necessrio ter gastos.
A aplicao realizada no trabalho um bom exemplo de baixo custo apesar de ser
apenas um estudo de caso, mas quando enviada para os servidores da Google
no necessrio ter a aplicao na mquina basta apenas acessa-la via internet,
por intermdio de uma conta do Google. A tecnologia ser representada na Figura 8.
41
O Google o provedor que fornece toda a estrutura para o projeto, cada camada
fundamental para o resultado final da aplicao, ou seja, a camada 1 (IaaS), fornece
a infraestrutura so os servidores onde esta a aplicao, ou seja, o usurio no
precisara se preocupar com a parte fsica, a camada 2 (PaaS), de exclusividade do
desenvolvedor, ela fornecera toda a ferramenta para o desenvolvimento da
aplicao e a camada 3 a aplicao j enviada para nuvem, para o usurio utilizla.
Hoje em dia fcil afirmar que computao em nuvem cada vez mais ira crescer,
claro que muitas empresas adotam outros tipos de servio por serem seguros, mas
um campo muito amplo em TI que ira facilitar cada vez mais no s empresas
como usurios tambm.
42
REFERENCIAS
AMRHEIN, Dustin; QUINT, Scott; Computao em Nuvem para Empresa: Parte 1:
Capturando a Nuvem. IBM, 2009.
GOOGLE. Google AppEngine. Disponvel em: http://code.google.com/intl/ptBR/appengine/. Acessado em: Junho de 2011.
JDO. Java Data Objects. Disponivel em: http://db.apache.org/jdo/ . Acessado em:
Outubro de 2011.
MLLER, Victor Daniel. Desenvolvimento de aplicaes sob o paradigma da
computao em nuvem com ferramentas Google. Santa Catarina. UFSC, 2010.
NOGUEIRA, Matheus Cadori.; PEZZI, Daniel da Cunha. A computao agora
nas Nuvens. Cruz Alta, Rio Grande do Sul. UNICRUZ, 2009.
PACHECO, Diego. PaaS, CloudComputing, Virtualizao eo Futuro. Parte 02.
Disponvel
em:
http://imasters.com.br/artigo/14228/cloud/paas_cloud_computing_virtualizacao_e_o_
futuro_parte_02/. Acessado em: Junho de 2011.
PEDROSA, Paulo H. C.; NOGUEIRA, Thiago. Computao em Nuvem. Campinas,
So Paulo. UNICAMP, 2011.
DA
MOTA,
WeltonCosta.