Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma...

52
Universidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Ciências da Computação RICARDO DOS SANTOS DESAFIOS DO DESENVOLVIMENTO DE UM SOFTWARE NAS NUVENS Belo Horizonte 2010

Transcript of Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma...

Page 1: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

Universidade Federal de Minas Gerais Instituto de Ciências Exatas

Departamento de Ciências da Computação

RICARDO DOS SANTOS

DESAFIOS DO DESENVOLVIMENTO DE UM SOFTWARE NAS NUVENS

Belo Horizonte 2010

Page 2: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação
Page 3: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

Universidade Federal de Minas Gerais Instituto de Ciências Exatas

Departamento de Ciências da Computação Especialização em Informática: Ênfase: Análise de Sistemas

DESAFIOS DO DESENVOLVIMENTO DE UM SOFTWARE NAS NUVENS

Por

RICARDO DOS SANTOS

Monografia de Final de Curso

Prof. Ângelo Moura Guimarães

Belo Horizonte 2010

Page 4: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

RICARDO DOS SANTOS

DESAFIOS DO DESENVOLVIMENTO DE UM SOFTWARE NAS NUVENS

Monografia apresentada ao Curso de Especialização em Informática do Departamento de Ciências Exatas da Universidade Federal de Minas Gerais, como atividade da disciplina Desenvolvimento de Pesquisa e Projeto Em Informática, ministrada pela professora Maria de Lourdes Coelho. Área de concentração: Análise de Sistemas Orientador(a): Prof. Ângelo Moura Guimarães

Belo Horizonte 2010

Page 5: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

RESUMO

Desenvolver Software não é fácil, as vezes as tecnologia pode ser decisiva para o sucesso do

projeto, neste cenário é que introduzimos computação nas nuvens, uma tecnologia promissora

que influenciará diretamente no processo de desenvolvimento de software, pois todas as fases

estabelecidas pela engenharia de software poderão ganhar agilidade e também a eliminação de

certas tarefas. O principal objetivo deste trabalho é apresentar o desenvolvimento de uma

aplicação nas nuvens e suas implicações. Na primeira parte introduzimos o cenário de

computação nas nuvens e na segunda parte, apresentamos o conceito de computação nas

nuvens; no núcleo do trabalho apresentamos o desenvolvimento de uma aplicação com

computação nas nuvens e também a tecnologia utilizada; Ao final levantamos alguns pontos

chaves do projeto.

Palavras-chave: Computação nas nuvens, Desenvolvimento de Software, Gestão de Tecnologia da Informação, Google App Engine.

Page 6: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

ABSTRACT Developing software is not easy, sometimes the technology could be decisive for the success

of the project, in this scenario we introduce the cloud computing, a promising technology that

will directly influence the software development process, because all the stages of software

engineering could be more fast and eliminate some tasks. The main objective of this study is

to develop an application in the clouds and yours implications. In the first part we introduce

the scenario of cloud and the second part, we present the cloud computing concept; In the core

of this work we presents the development of an application with cloud computing and also

the technology used ; In the end we raise some bullet points about the project.

Key-words: Cloud computing, Software development, Information Technology Management, Google App Engine.

Page 7: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

LISTA DE FIGURAS FIG. 1 Representação internet no esquema de rede............................................. 12 FIG. 2 Caso de Uso ShowRoom.......................................................................... 23 FIG. 3 Estrutura do GAE..................................................................................... 26 FIG. 4 Cotas do GAE........................................................................................... 27 FIG. 5 Interface do Console Administrativo........................................................ 30 FIG. 6 Arquivo de configuração appengine-web.xml........................................... 34 FIG. 7 Diagrama de classes................................................................................... 35 FIG. 8 Arquivo de configuração para acesso ao banco de dados.......................... 38 FIG. 9 Bibliotecas JSF.......................................................................................... 42 FIG. 10 Tela painel de controle............................................................................... 45 FIG. 11 Tela cadastro de produto............................................................................ 45

Page 8: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

LISTA DE SIGLAS AJAX Asynchronous Javascript And XML API Application Programming Interface GAE Google App Engine CPU Unidade central de processamento HAAS Hardware as a service HD Hard Drive IDE Integrated Development Environment ISP Internet Service Provider JAR Java Archive JDO Java Data Objects JPA Java Persistence API JSF Java Server Faces MVC Model – View – Controller OO Orientado(a) por Objetos PAAS Platform as a service POO Programação Orientada por Objetos SAAS Software as a service SDK Software Development Kit TI Tecnologia da informação URL Uniform Resource Locator XML Extensible Markup Language

Page 9: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

LISTA DE TABELAS TAB. 1 Analogia entre aplicações tradicionais e nas nuvens................................. 20 TAB. 2 Comparação dos limites da cota gratuita e cota faturada ativada.............. 28 TAB. 3 Custo dos recursos unitário........................................................................ 29 TAB. 4 Comparativo de custos............................................................................... 50 TAB. 5 Comparativo de custos com computação nas nuvens................................ 51

Page 10: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

10

SUMÁRIO

1 INTRODUÇÃO ....................................................................................... 11 2 DEFININDO COMPUTAÇÃO NAS NUVENS................................... 12 2.1 Conceituando computação nas nuvens...................................................... 12 2.2 Componentes da computação nas nuvens. ................................................ 15 2.3 Níveis de serviço........................................................................................ 17 2.4 2.4.1 2.4.2 2.4.3 2.5

Grandes provedores de computação nas nuvens....................................... Amazon...................................................................................................... Google....................................................................................................... Microsoft................................................................................................... Considerações sobre a Computação nas Nuvens.......................................

19 19 19 20 21

3

PROJETO DA APLICAÇÃO NAS NUVENS....................................

22

3.1 Definindo o problema................................................................................ 22 3.2 A aplicação................................................................................................ 24 3.3 Plataforma de desenvolvimento................................................................. 26

4

DESENVOLVENDO A APLICAÇÃO NAS NUVENS.......................

32

4.1 Preparando o ambiente............................................................................... 32 4.2 Modelo de dados........................................................................................ 35 4.3 Autenticação............................................................................................... 39 4.4

Visão.........................................................................................................

41

5 5.1 5.2 5.3 5.4

ANÁLISES E CONCLUSÕES............................................................... Engenharia de software e computação nas nuvens.................................... Custos da Funcionalidade.......................................................................... Economia da computação nas nuvens........................................................ Considerações sobre o que foi implementado REFERÊNCIAS ......................................................................................

46 46 48 49 51 52

Page 11: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

11

1 INTRODUÇÃO

Computação nas nuvens é a grande tendência do momento, pelo simples fato que

a computação está migrando para a Internet, ou seja, hoje você não necessita de um

super computador para realizar as tarefas do dia-a-dia, o mais importante hoje é ter

mobilidade e conexão com a internet (REESE, 2009). Hoje temos várias aplicações

disponíveis na Internet que não necessitam de instalação do usuário, como por exemplo,

o jogo Quake, que é um dos famosos jogos de computadores, está totalmente disponível

na Internet através do site http://www.quakelive.com, basta o visitante realizar um

cadastro e começar a jogar sem a necessidade de instalar nenhum arquivo em sua

máquina.

Outro ponto favorável para a computação nas nuvens é o atual cenário

econômico da Internet, cada vez mais os custos estão menores e a velocidade de

conexão maior, favorecendo assim as aplicações totalmente instaladas na Internet, ou

melhor, os serviços online (REESE, 2009).

O foco deste trabalho não é no lado do cliente ou o usuário do serviço, é no

processo de desenvolvimento da aplicação, tentaremos responder algumas perguntas,

como: O que é necessário para se desenvolver? Quais as tecnologias necessárias? Onde

poderei instalar minha aplicação? Quais as vantagens e desvantagens para as fábricas de

software. Para responder estas questões será desenvolvida uma pequena aplicação onde

poderemos ilustrar um pouco este novo cenário.

Este trabalho está dividido em cinco capítulos: O primeiro e o segundo capítulo

introduzem o leitor ao conceito de computação nas nuvens, apresenta o cenário atual e a

movimentação das principais empresas; O terceiro capítulo apresenta a tecnologia que

foi utilizada e a proposta da aplicação desenvolvida; O quarto capítulo apresenta de

forma mais técnica o desenvolvimento da aplicação com todas as tecnologias

envolvidas e também apresenta todas as vantagens e desvantagens do desenvolvimento;

Ao final é levantado alguns pontos chaves deste trabalho e algumas conclusões

subjetivas do desenvolvimento da aplicação.

Page 12: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

12

2 DEFININDO COMPUTAÇÃO NAS NUVENS

Computação nas nuvens não é somente mais uma moda do mundo da indústria

da informática, atualmente é o assunto mais discutido na área da tecnologia da

informação (TI), uma estimativa apresentada em (VELTE, 2009) baseado nos dados do

instituto de pesquisa IDC, aponta que no ano de 2012 os serviços de TI ligados a

computação nas nuvens irão movimentar 56,3 bilhões de dólares. Grandes empresas

como a Amazon, Google e Microsoft já investem pesado nessa nova tecnologia. Neste

capítulo é introduzido os principais conceitos de computação nas nuvens: o que é

computação nas nuvens; quais os seus principais componentes; qual a ligação de

virtualização e computação nas nuvens e por último, o que as grandes empresas de TI

possuem atualmente de computação nas nuvens.

2.1 Conceituando computação nas nuvens

Computação nas nuvens está em todo lugar (VELTE, 2009), quase todo site,

blogs e revistas apresentam algo sobre o assunto. Perguntando para diferentes pessoas o

que é computação nas nuvens, certamente podemos obter várias respostas diferentes e

nesta seção tentaremos uma consolidação para evitar a divergência de conceitos.

Para conceituar computação nas nuvens podemos começar com o porquê do

nome. Quando representamos a internet em diagramas ou esquemas de rede, sempre

usamos o símbolo de uma nuvem (figura. 1), então quando dizemos computação nas

nuvens, estamos referindo a computação na internet, ou seja, toda infra-estrutura,

software, plataformas e etc. alocados na internet como serviço.

Page 13: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

13

Fig. 1. Representação internet no esquema de rede (VELTE, 2009).

Basicamente, computação nas nuvens são serviços sobre a internet. Para

exemplificar melhor, imaginemos um software de edição de texto que é necessário

instalar em todas as maquinas de uma empresa. Primeiramente é necessário obter todas

as licenças (uma para cada máquina), depois é necessário instalar, configurar todas as

máquinas para uso, eventualmente poderá ser necessário atualizações no software.

Diante desse cenário simples, podemos observar o grande benefício da computação nas

nuvens, pois este software ficará disponível como serviço na internet. De imediato

podemos observar a redução da carga de trabalho com instalações e atualizações

(manutenções), também podemos destacar a redução com custos de infra-estrutura e

números de licenças adquiridas.

Outras características que são essencialmente providos pela computação nas

nuvens (Sun Microsystems,2009) :

• Serviço sobre demanda: O consumo de serviço pode instigar a escala de

recursos do serviço, ou seja, de acordo com o consumo a nuvem pode

Page 14: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

14

expandir seus recursos de poder de processamento, espaço para

armazenamento, largura de banda e etc.

• Métricas de serviço: O uso dos recursos das nuvens deve ser mensurável,

provendo dessa forma transparência para o provedor do serviço e para o

cliente.

• Elasticidade implícita: A escala do serviço deve ser alterada de forma que

não prejudique a disponibilidade do serviço. Tanto a contratação de mais

recursos, quanto a expansão automática devem ser feitos de forma rápida

e implícita.

• Alta conectividade: Capacidade de acesso através dos mais variados tipos

de clientes, por exemplo, através de dispositivos moveis e computadores

pessoais.

Em computação nas nuvens, assim como toda tecnologia de TI, temos os prós e

contras.

O primeiro problema que apontaremos e o mais óbvio é a conexão com a

internet. Para o uso da computação nas nuvens dependemos da conexão com a internet,

existem várias possibilidades para que esse recurso fique indisponível, por exemplo,

acontecer um problema com o Internet Service Provider (ISP), que é responsável pela

sua conexão com o mundo.

O segundo problema que podemos apontar, é o da de integração entre

aplicações, se duas aplicações residem no mesmo local fisicamente não existirá

problema algum, mas se essa aplicação se encontra em um servidor comum, e a outra se

encontra em um ambiente nas nuvens, a comunicação entre eles pode ser muito

complicada de se conseguir.

Page 15: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

15

2.2 Componentes da computação nas nuvens.

Computação nas nuvens é basicamente formada por três elementos: Cliente,

Servidor e Datacenter. Cada um desempenha um papel diferenciado no ambiente.

O cliente é quem vai interagir com o serviço nas nuvens, é onde o usuário vai

poder usufruir realmente da computação nas nuvens. Os clientes podem ser

classificados em 3 categorias:

• Mobile: São basicamente os dispositivos móveis, tal como celulares e

SmartPhones.

• Thick: São os computadores comuns de hoje em dia, por exemplo,

desktops e notebooks que tenham conexão com a internet.

• Thin: São computadores que possuem o seu hardware limitado, não

possuem Hard disk (HD), são totalmente orientados à internet.

Dentre os três clientes apresentados anteriormente, destaca-se o cliente da

categoria Thin, pois possuem um baixo custo efetivo para o ambiente nas nuvens.

Podemos também destacar outras vantagens, tais como: baixos custos com hardware,

pois não possuem necessidade de processamento local; baixo custo com o

gerenciamento de TI, devido a centralização do serviço no servidor; Segurança, pois não

será possível a contaminação por um vírus na internet e também diminui o risco de ser

roubado fisicamente, já que a máquina possui menos valor concentrado; Segurança dos

dados, pois os dados da interação com o cliente se localizam no servidor; Menos

consumo de energia e por último é fácil , a facilidade de reparar ou substituir.

Os servidores são outro elemento da computação nas nuvens, eles são

responsáveis em processar todos os serviços. São dispostos de forma distribuída pelo

mundo, para garantir a disponibilidade do serviço, pois mesmo que um servidor

apresente algum problema, outro imediatamente pode assumir a sua responsabilidade,

de forma que fique implícito ao usuário final.

O último elemento, e não menos importante é o datacenter, ele hospeda a

aplicação nas nuvens e gerencia a sua disposição entre os diversos servidores

subordinados a ele. É comum ele ter vários servidores virtuais, a virtualização provê

dinamismo e elasticidade para o gerenciamento da nuvem.

Page 16: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

16

Virtualização é uma tecnologia fundamental para o ambiente nas nuvens, pois

permite o dinamismo da disponibilidade do serviço. Os provedores de serviços nas

nuvens só conseguem disponibilizar os seus serviços através da virtualização (REESE,

2009), tal como a Amazon Web Services. Virtualização permite dividir um servidor

físico em vários outros servidores virtuais. Obviamente, cada servidor irá consumir

parte dos recursos de hardware, mas um servidor virtual possui vantagens, como por

exemplo, o seu deslocamento, já que é possível enviar um servidor com todas as

aplicações e sistema operacional instalados de um país a outro através da internet.

Page 17: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

17

2.3 Níveis de serviço.

O termo serviço é algo comum na computação nas nuvens, pois só é possível

atingir os resultados nas nuvens através de serviços. Para a computação nas nuvens a

palavra serviço vem sendo utilizada como um sufixo as a service para os produtos

(VELTE, 2009). Disponibilizar os produtos como serviços, garante vantagens como:

larga escabilidade, maior integração para os clientes, maior acessibilidade entre

dispositivos clientes e entre outros mais.

O serviço pode ser classificado em:

• Software as a service (SAAS): É um modelo de aplicação no qual ela se

encontra hospedada como serviço na internet, o cliente deve acessar

obrigatoriamente a internet para poder utilizar a aplicação. A aplicação

estando na internet permite tirar todo o trabalho de manutenção da

responsabilidade do cliente, permitindo redução de custos com serviços

de TI. Um dos problemas relatados desse modelo de aplicação é o efeito

de “lock-in” (VELTE, 2009), uma vez que é contratado um provedor

dessa aplicação, não será possível portar essa aplicação para outro

provedor, dessa forma, o cliente fica preso a somente a um provedor.

• Platform as a service (PAAS): Assim como o saas, o paas é um modelo

de aplicação no qual toda a plataforma para desempenhar certa tarefa fica

disponível como um serviço na internet. Podemos imaginar uma empresa

de desenvolvimento de sistema no qual toda a plataforma de

desenvolvimento se encontra nas nuvens em um provedor que oferece

todo o ambiente para se desenvolver e implantar a aplicação. Neste caso

tanto a linguagem quanto outras tecnologias são impostas.

• Hardware as a service (HAAS): HAAS diferentemente do modelo

oferecido por SAAS e PASS que oferecem aplicações, oferece o próprio

hardware, ou seja, os recursos para executar a aplicação, Uma empresa

ao invés de investir em maquinário pode alugar recursos nas nuvens de

forma escalar, ou seja, conforme o negócio cresce a necessidade de mais

Page 18: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

18

recursos crescem na mesma proporção. Dessa forma basta a empresa

alocar mais recursos dentro do modelo HAAS.

Acima, apresentamos os três níveis de serviços oferecidos pela computação nas

nuvens, podemos observar a computação está alocada no ambiente da internet. Uma

tendência não tão distante será que, todo serviço de computação nas nuvens seja

oferecido para as massas através da TV digital.

Page 19: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

19

2.4 Grandes provedores de computação nas nuvens

Existem inúmeros provedores de computação nas nuvens atuando hoje. Eles

diferenciam no modelo de precificação e tipos de serviços oferecidos. De inicio, vamos

falar apenas das grandes e populares empresas de TI.

2.4.1 Amazon

A Amazon foi a primeira empresa a oferecer o serviço de computação nas

nuvens, todos eles são bastante sofisticados, tais como:

• Elastic Compute Cloud (EC2): Oferece máquinas virtuais e

processamento de dados nas nuvens;

• Simply Storage Service (S3): Serviço de armazenamento de dados nas

nuvens;

• Simply Queue Service (SQS): Permite a troca de mensagens entre

computadores de forma gerenciada através de uma fila, é um serviço

importante quando existe altas demandas de mensagens para certos

servidores, por exemplo, um popular sitio de e-commerce.

• SimpleDB: Basicamente é um banco de dados nas nuvens, ele trabalha

em conjunto com os serviços de EC2 e S3, para prover o serviço.

Todos os serviços e suas características estão disponíveis em

HTTP://aws.amazon.com.

2.4.2 Google

A Google, de uma forma mais rígida do que a Amazon, possui o seu serviço

chamado Google App Engine (GAE). Com os serviços da Amazon, temos privilégios

equivalentes a um administrador para manipular o ambiente, já no GAE, por exemplo,

não é possível manipular um arquivo de forma convencional, ou seja, operações de

gravação e remoção, tudo isso é feito via GAE, dessa forma garantindo uma maior

Page 20: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

20

segurança. A Google também disponibiliza ferramentas para construir sua aplicação nas

nuvens seja ela na linguagem de programação Python ou em Java, mas com algumas

restrições. Os detalhes estão disponíveis em HTTP://code.google.com/appengine/.

2.4.3 Microsoft

A solução em computação nas nuvens da Microsoft é chamada de Windows

Azure, Um sistema operacional nas nuvens que permite seus clientes instalar e executar

programas da Microsoft, também é permitido armazenar arquivos e dados utilizando os

datacenters da Microsoft. Assim como a Amazon, a Microsoft possui alguns serviços

interessantes:

• Microsoft SQL Services: Provê o serviço de banco de dados nas nuvens.

• Microsoft .Net Services: Provê os serviços baseados na plataforma .NET.

• Lives Services: Utilizado para compartilhar, armazenar e sincronizar

documentos, fotos, e arquivos através de computadores, celulares entre

outras plataformas.

A Microsoft, dentre as grandes apresentadas, está um pouco atrasada, mas para

as versões futuras, ela planeja lançar o seu maior produto nas nuvens, o Office. Todas

informações sobre Microsoft e computação nas nuvens podem ser encontradas em

HTTP://www.microsoft.com/azure/default.mspx.

Page 21: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

21

2.5 Considerações sobre a Computação nas Nuvens

Como foi descrito até agora, a computação nas nuvens não é somente uma

simples tecnologia, e sim todo um novo paradigma para a disponibilização de serviços

(SANDERSON, 2009).

Não é simples dizer que computação nas nuvens é adequada ao cenário atual de

uma empresa, já que existem softwares que não são apropriados para o ambiente das

nuvens. Toda aplicação não nativa da Internet, ou seja, em que o uso na Internet não é

totalmente apropriado, pode não ser adequado para computação nas nuvens. As

aplicações que mais atendem o perfil são as aplicações não distribuídas, ou seja, que não

usam a internet como meio essencial para o funcionamento da aplicação, a tabela 2.1

apresenta alguns exemplos.

Tradicional Nuvens

servidor de arquivo Google Docs

MS Outlook, Apple Mail Gmail, Yahoo!, MSN

SAP CRM/Oracle CRM/Siebel SalesForce.com

Quicken/Oracle Financials Intacct/NetSuite

Microsoft Office/Lotus Notes Google Apps

Stellent (Gerenciador de conteúdo) Valtira

Off-site backup Amazon S3

servidor, racks, and firewall Amazon EC2, GoGrid, Mosso

Tab.1. Analogia entre aplicações tradicionais e nas nuvens (SANDERSON, 2009).

Page 22: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

22

3 PROJETO DA APLICAÇÃO NAS NUVENS

Este capítulo apresenta uma breve descrição da aplicação que será desenvolvida,

bem como o contexto da aplicação. Também apresentaremos algumas decisões de

projetos, como o uso do GAE da Google, que foi escolhida como plataforma para o

desenvolvimento.

3.1 Definindo o problema

Antes de descrever o que será construído, é preciso considerar alguns aspectos

relacionados a implantação de computação nas nuvens nas empresas.

Computação nas nuvens podem ser implementadas basicamente em três

maneiras (VELTE, 2009):

1. Nuvem computacional: É a forma no qual a nuvem executa qualquer

código utilizando os recursos e escalabilidade dada pela computação nas

nuvens. Este tipo de aplicação é muito bom para pequenas e médias

empresas, porém para grandes empresas se torna um pouco inflexível

devido às necessidades de governança e monitoramentos mais

específicos que são essenciais para uma grande empresa.

2. Nuvem Armazém de dados: É o tipo mais popular atualmente, foi a

primeira implementação de computação nas nuvens, sendo que já

existem mais de 100 provedores desse serviço na atualidade. Consiste

básicamente no armazenamento de arquivos na internet. O principal

problema é segurança dos dados e o custo desse serviço que é bastante

elevado.

3. Nuvem de aplicações: Basicamente é a disponibilização de uma

aplicação como serviço na Internet, esse tipo de aplicação não necessita

de instalações no cliente.

Page 23: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

23

Dentre as três maneiras de implantação de computação nas nuvens descritas

anteriormente, utilizaremos a implantação da nuvem de aplicação, ou seja, será

desenvolvida uma aplicação para exemplificar e ilustrar o processo de

desenvolvimento de softwares nas nuvens.

Page 24: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

24

3.2 A aplicação

Após relacionar os importantes fatores que influenciam no projeto, a proposta da

aplicação nas nuvens será apresentada a seguir.

O intuito deste projeto é demonstrar as mudanças que serão implicadas na

engenharia de software, mais especificamente no desenvolvimento de software nas

nuvens, para isso será desenvolvida uma simples aplicação exemplo, que exponha

alguns dos problemas e vantagens desse tipo de desenvolvimento.

Uma empresa que possua produtos inovadores tem interesse de apresentar e

expor, na Internet, os seus lançamentos e produtos ao mercado, através de uma

aplicação. A aplicação também terá a função de obter o feedback dos clientes , assim,

um cliente pode opinar sobre um produto que já esteja no mercado, ou mesmo fazer

uma crítica sobre um dado lançamento. Essa aplicação será denominada ShowRoom, é

uma aplicação simples, mas apresenta um cenário interessante para o estudo.

3.2.1 Caso de uso

A figura 2 apresenta a modelagem do caso de uso da aplicação utilizando UML.

Fig. 2. Caso de Uso ShowRoom.

Page 25: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

25

Cadastrar Produto

1- O Administrador informa os dados do produto e confirma.

2- O Sistema valida as informações e registra na base de dados.

Comentar

1 - O Visitante Seleciona o produto no qual deseja comentar.

2 - O sistema apresenta o produto e os comentários já realizados.

3 – O Visitante Preenche o campo do comentário e confirma.

4 – O Sistema registra o comentário e apresenta na tela.

O sistema proposto é bastante simples, existe a funcionalidade de autenticação,

mas ela não foi relacionada no diagrama, pois será inerente à plataforma de

desenvolvimento que é apresentada na próxima seção.

Outro ponto interessante é que a aplicação proposta pode apresentar picos de

acesso, o que pode ocasionar falhas de acesso devido as limitações dos recursos. Um

cenário para o pico de acesso pode ser previsto quando a empresa vai apresentar no

showroom, em uma hora e data marcada, um novo produto. Dependendo da expectativa

dos consumidores, eles podem acessar o ShowRoom exatamente na hora marcada,

ocasionando um pico de acesso e por sua vez tornando indisponível a aplicação. Isso

não acontece se a aplicação estiver em uma infra-estrutura de computação nas nuvens, o

que será explicado na seção seguinte.

Page 26: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

26

3.3 Plataforma de desenvolvimento

Para o desenvolvimento da aplicação optamos por utilizar o GAE, não só pelo

fato de pertencer a Google, mas por utilizar a linguagem Java que é Orientada a Objeto

(OO). A Google inicialmente lançou o serviço apenas com suporte a linguagem de

programação Python, mas em meados do ano de 2009, ela finalmente lançou o serviço

com suporte a linguagem Java. O serviço é gratuito até certo ponto e foi projetado para

suportar vários usuários simultâneos, permitindo que uma aplicação possa servir vários

usuários ao mesmo tempo, sem perda de desempenho. Quando isso acontece podemos

dize que uma aplicação é escalar, conforme SANDERSON(2009). Dessa forma a

Google disponibiliza um “contrato escalar” onde se pode definir os limites de utilização

de recursos que a aplicação irá consumir, definindo, dessa forma, o máximo que se quer

pagar, como por exemplo, quantidade de espaço para armazenamento, ciclos de

processamento, bytes de tráfego da banda de passagem, entre outros. O interessante é

que se um serviço for novo no mercado e tiver poucos acessos inicialmente,

consequentemente o consumo de recursos serão baixose os custos iniciais com o serviço

diminuiria a necessidade de uso de capital de investimento nas fases mais críticas de

implantação.

A estrutura do GAE é diferente dos Servidores web típicos. Em geral, o GAE

restringe o acesso de sua aplicação a qualquer componente físico da infra-estrutura do

servidor, acesso a pastas e arquivos, rodar processos em segundo plano, ou outros

recursos comuns ao desenvolvimento. É importante lembrar que o foco é a

escalabilidade, e mais especificamente a escalabilidade horizontal (SANDERSON,

2009), na qual ao invés de ter sua aplicação em uma máquina mais potente, o GAE

aloca mais máquinas e distribui sua aplicação conforme necessário.

A figura 3 apresenta a estrutura do GAE resumida, como podemos observar ,

tanto o banco de dados quanto o acesso a serviços externos estão separadas do núcleo

do GAE, dessa forma, possuem segurança e gerenciamento de carga própria.

Page 27: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

27

Fig. 3. Estrutura do GAE (SANDERSON, 2009).

Outro ponto interessante do GAE é o sistema da cotas, é possível definir quanto

se pretende pagar no máximo baseados nos recursos consumidos. Existem dois tipos de

cotas para cada recurso disponibilizado:

• Cotas faturáveis, no qual é possível definir um valor máximo que se

pretende gastar com determinado recurso no dia, onde só será cobrado o

que se gasta, definindo ainda o valor máximo a se pagar por dia.

• Cotas fixas são valores máximos de consumo de recursos definidos pelo

GAE, esses recursos definem os limites de estrutura nos quais todos os

aplicativos devem obedecer.

Uma aplicação que utiliza uma cota gratuita pode usar até 500 MB de

armazenamento e até 5 milhões de visualizações de página por mês aproximadamente

(SANDERSON, 2009). Quando a aplicação exigir mais do que a cota gratuita oferece,

pode ser necessário ativar o faturamento. O faturamento é definido no console

administrativo da aplicação e é importante salientar que, uma vez que o faturamento da

conta for ativado, o limite de gratuidade se eleva também. A figura 4 apresenta o painel

Page 28: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

28

no qual se define as cotas de faturamento, o orçamento aborda como unidade o dia, uma

unidade mais precisa do que o mês. Observe que é listado os recursos:

• CPU Time: Representa o tempo total de processamento para manipular

as solicitações, incluindo o tempo gasto para executar o aplicativo e

realizar as operações do armazenamento de dados. Não inclui o tempo

gasto esperando por respostas de serviços externos como demonstrado na

figura 3. Por exemplo, se sua aplicação utiliza um serviço web externo,

isso não será contado.

• Bandwidth Out: Representa a quantidade de dados enviados pelo

aplicativo em resposta às solicitações, por exemplo, o envio de um e-mail

pela aplicação.

• Bandwidth In: Representa a quantidade de dados recebidos das

solicitações pelo aplicativo.

• Stored Data: Representa a quantidade de dados que se pode armazenar.

• Recipients Emailed: Representa o total de e-mail que se pode enviar ao

dia.

Fig 4. Cotas do GAE (fonte: próprio autor).

Page 29: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

29

Uma importante observação, é que após vinte e quatro horas a cota é renovada,

exceto a cota de armazenamento de dados, pois o armazenamento é progressivo, ou seja,

quanto mais dados se insere, maior é o espaço consumido. O Google também define

uma cota por minuto, controlando assim o ritmo de consumo do serviço, essa cota,

também é faturável e a tabela 2 apresenta uma comparação entre os limites gratuitos da

cota padrão gratuita e da cota faturável quandoo serviço é ativado. Toda alteração de

cota faturável feita com o a aplicação já em uso é aplicada entre quinze a trinta minutos,

por exemplo, se uma aplicação durante a estréia de um novo produto no ShowRoom

estiver próxima de atingir o limite da cota pré-estabelecida, é possível aumentar o limite

sem maiores impactos. Podemos imaginar o mesmo problema se a aplicação estivesse

em um servidor convencional. Neste caso, vários clientes do serviço ficariam de fora,

pois o recurso físico do servidor atingiria o limite, e uma solicitação de aumento dos

recursos em um servidor convencional, além da burocracia enfrentada, teria prazos

muito maiores, e pior, a aplicação poderia ficar indisponível por maior tempo.

Recurso Cota padrão gratuita Cota com faturamento ativado

Limite diário Taxa máxima Limite diário Taxa máxima

Solicitações 1.300.000

solicitações

7.400

solicitações/minuto

43.000.000

solicitações 30.000

solicitações/minuto

Largura de banda de saída 10 gigabytes 56 megabytes/minuto 10 gigabytes

gratuito; máximo

de 1.046 gigabytes 740

megabytes/minuto

Largura de banda de entrada 10 gigabytes 56 megabytes/minuto 10 gigabytes

gratuito; máximo

de 1.046 gigabytes 740

megabytes/minuto

Tempo de CPU 46 horas de

CPU

15 minutos de

CPU/minuto

46 horas de CPU

gratuito, máximo

de 1.729 horas de

CPU 72 minutos de

CPU/minuto

Tab. 2. Comparação dos limites da cota gratuita e cota faturada ativada

(SANDERSON, 2009).

Também apresentamos a tabela 3 com os valores dos recursos por unidade. Ela

mostra que uso econômico de recursos pode ser viável, e também consistente as

Page 30: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

30

métricas de consumo. Como a aplicação apresentada neste trabalho é extremamente

simples, foi utilizada a cota padrão gratuita.

Recurso Unidade Custo unitário

Largura de banda de saída gigabytes $0,12

Largura de banda de entrada gigabytes $0,10

Tempo de CPU Horas da CPU $0,10

Dados armazenados gigabytes por mês $0,15

Destinatários de e-mail destinatários $0,0001

Tab. 3. Custo dos recursos unitário (SANDERSON, 2009).

O console de administração é uma importante ferramenta para gerenciar a

aplicação, através dele é possível administrar todo sistema, seja assunto técnico ou

financeiro. Exemplos de uso técnico são: a atribuição de novos administradores;

visualização dos dados e execução de consultas sobre o armazenamento de dados;

Versionamento da aplicação, onde é possível trocar a versão corrente e testar novas

versões em uma dada URL em especial.

Para questões financeiras temos como exemplos: Apresentação dados de

consumo em tempo real da aplicação e geração de histórico; Alteração de cotas com os

limites; Alteração de responsável financeiro da aplicação.

Como podemos observar, o console administrativo é uma ferramenta para

gerenciar uma aplicação, a figura 5 apresenta a interface do console administrativo, na

tela de detalhe de uso da cota. O painel administrativo é acessado através de uma conta

da Google e que seja administrador da aplicação

Page 31: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

31

Fig 5. Interface do Console Administrativo (fonte: próprio autor).

Page 32: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

32

4 DESENVOLVENDO UMA APLICAÇÃO NAS NUVENS

Neste capítulo é apresentado todo o processo de desenvolvimento com o

ambiente do GAE, expondo todas as vantagens e desvantagens do desenvolvimento nas

nuvens. Apresentamos todas as ferramentas e recursos utilizados para o

desenvolvimento. Ao final do capítulo é apresentada a aplicação desenvolvida.

4.1 Preparando o ambiente

Antes de considerar especificamente a aplicação desenvolvida, será descrito

nesta seção todos os recursos e ferramentas necessárias, utilizadas durante o

desenvolvimento da aplicação.

O primeiro passo essencial é o registro da aplicação na Google, isso pode ser

feito através do console administrativo apresentado no capítulo anterior, basta apenas

informar o título da aplicação e o identificador. Importante ressaltar que o identificador

é o campo mais importante, pois o mesmo vai compor a URL da aplicação e também o

nome a ser configurado no projeto em um arquivo XML. A aplicação ShowRoom tem o

identificador de “ricardo1784” e o título de “ShowRoom”, dessa forma o acesso pode

ser feito através URL HTTP://ricardo1784.appspot.com, mesmo que o nome não seja

ideal, é possível através do console administrativo atribuir um domínio diferente para a

aplicação, sendo assim, o identificador é importante apenas para a identificação do

projeto para o desenvolvimento.

O principal componente para desenvolver a aplicação é o kit de desenvolvimento

de aplicações (SDK) da Google (ROCHE, 2009), disponível para os principais sistemas

operacionais (Windows, Linux e MAC OS X) e somente para duas linguagens (Python e

Java). O SDK provê todas as ferramentas e bibliotecas com as interfaces (API) para

acessar os serviços da ambiente do GAE, por exemplo:

• Serviço de web dinâmico, com suporte completo a tecnologias de web

comuns.

• Serviço de armazenamento com consultas, classificação e transações.

• APIs para autenticação de usuários e envio de e-mails usando contas do

Google.

Page 33: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

33

• Um ambiente de desenvolvimento local com todos os recursos, capaz de

simular o ambiente do GAE localmente.

• Tarefas programadas para disparar eventos em horários específicos e em

intervalos regulares.

Basta instalar o SDK definido para a linguagem Java, que foi eleita para o

desenvolvimento da aplicação.

Java é linguagem de programação orientada a objetos mais difundida do

mercado (DEITEL, 2003), possui uma vasta documentação e recursos na internet. O

SDK da Google possui um suporte cheio de restrições ao Java, As versões suportadas

pelo GAE são a 5 e a 6, de preferência utilizaremos a 6. Várias das API´s padrões de

Java são suportadas: Servlets, JPA, JCache e JavaMail. Relacionaremos melhor o uso

nas próximas seções e principalmente suas limitações.

A ferramenta para desenvolver o projeto será o Netbeans, ele é o ambiente

integrado de desenvolvimento (IDE) gratuito que existe desde 1996 e atualmente

mantido pela empresa Sun Microsystems, mesma mantenedora das especificações Java.

O Netbeans além de oferecer um ambiente completo para o desenvolvimento e possui

um plugin (ferramenta adicional) para abstrair o uso do GAE: o Nbappengine, que

possui algumas facilidades como: Editor visual para o arquivo de configuração

apresentado a figura 6; Menus para instalar a aplicação no GAE; Servidor local

registrado.

Page 34: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

34

Fig 6. Arquivo de configuração appengine-web.xml (fonte: próprio autor).

A figura 6 também apresenta as configurações do projeto, é necessário informar

a identificação do projeto no XML, e também habilitar o uso de Sessões Web.

Nas próximas seções será detalhado melhor o uso dos recursos no

desenvolvimento.

Page 35: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

35

4.2 Modelo de dados

Nesta seção apresentaremos a parte do desenvolvimento do projeto ShowRoom,

que representa o modelo referenciando a arquitetura model-view-controller (MVC), que

apesar de estar simplificado, está presente no projeto na estrutura de pacotes e nas

atribuição de responsabilidade das classes. A figura 7 apresenta o diagrama de classes

resumido apresentando somente as classes do modelo e logo abaixo descrevemos cada

uma das classes e seus atributos.

Fig. 7. Diagrama de classes (fonte: próprio autor).

Classe Produto

Representa o produto a ser apresentado no ShowRoom.

Atributos

• Id – Representa o código do produto

• imagemUrl – Representa o caminho da imagem a ser apresentada.

• Nome – representa o nome do produto.

• Descrição – apresenta uma breve descrição do produto.

• qtdComentario – atributo derivado que representa a quantidade de

comentários que o produto possui.

Classe Comentario

Representa o comentário de produto

Atributos

Id – Representa o código do comentário.

Page 36: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

36

Texto – apresenta o texto do comentário.

dataPostagem – registra a data no qual o comentário foi realizado.

As classes apresentadas acima possuem métodos apenas para acessar os

atributos, o nosso modelo de dados também possui outras classes que não foram

listadas, mas são responsáveis pelo acesso ao banco do GAE.

Para construir o modelo, utilizamos a tecnologia JDO (Objetos de dados Java),

que é uma interface padrão para armazenar objetos que contêm dados em um banco de

dados. O padrão define as interfaces para anotar objetos Java, recuperar objetos com

consultas e interagir com um banco de dados em geral (ROCHE, 2009). Poderia ser

utilizada outra interface popular, o JPA (Java Persistence API) , porém seria necessário

várias configurações e usos indevidos para a adaptação no GAE.

JDO trabalha por cima da tecnologia de banco de dados da Google, chamada de

BigTable, que é um serviço de banco de dados altamente escalavel e distribuivel, ele foi

projetado para suportar grandes escalas de dados, na faixa dos petabytes, e outro ponto

interessante que é o mesma tecnologia utilizada no seu famoso serviço, o Google Earth

(ROCHE, 2009).

Temos várias limitações imposta pelo GAE quanto ao modelo de dados, algumas

delas são:

• Não pode existir relacionamento muitos para muitos;

• Consultas com funções agregadas não funcionam, o que justifica o uso do

atributo qtdCometario na classe produto.

• Consultas polimórficas. Não é possível consultar uma classe para obter

instâncias de uma subclasse.

Outra imposição importante é que todos objetos sejam serializáveis, ou seja, que

implemente a interface Serializable, dessa forma, a entidade Produto foi codificada

conforme o código abaixo:

package com.showroom.model;

import java.io.Serializable;

import javax.jdo.annotations.IdGeneratorStrategy;

Page 37: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

37

import javax.jdo.annotations.IdentityType;

import javax.jdo.annotations.PersistenceCapable;

import javax.jdo.annotations.Persistent;

import javax.jdo.annotations.PrimaryKey;

/**

*

* @author Ricardo

*/

@PersistenceCapable(identityType= IdentityType.APPLICATION,

detachable= "true")

public class Produto implements Serializable{

private static final long serialVersionUID = 5L;

@PrimaryKey

@Persistent(valueStrategy= IdGeneratorStrategy.IDENTITY)

private Long id;

@Persistent

private String imagemURL;

@Persistent

private String nome;

@Persistent

private String descricao;

@Persistent

private int qtdComentario;

public String getDescricao() {

return descricao;

}

public void setDescricao(String descricao) {

this.descricao = descricao;

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public String getImagemURL() {

return imagemURL;

}

public void setImagemURL(String imagemURL) {

this.imagemURL = imagemURL;

}

public String getNome() {

return nome;

}

Page 38: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

38

public void setNome(String nome) {

this.nome = nome;

}

public int getQtdComentario() {

return qtdComentario;

}

public void setQtdComentario(int qtdComentario) {

this.qtdComentario = qtdComentario;

}

}

Para acessar o banco, primeiro foi necessário configurar o arquivo apresentado na figura

8 com os parâmetros de acesso para o Bigtable. O parâmetro mais importante é a URL

de conexão, repare a simplicidade no qual ela é apresentada, apenas é informado o nome

do serviço appengine.

Fig. 8. Arquivo de configuração para acesso ao banco de dados (fonte: próprio

autor).

Page 39: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

39

4.3 Autenticação

Toda Aplicação na WEB necessita de um serviço de autenticação (ROCHE,

2009), o GAE fornece duas opções: a primeira opção é implementar seu próprio serviço

de autenticação utilizando os recursos da Google com o cache. A segunda opção é

utilizar a API da Google e integrar com o serviço de contas, dessa forma qualquer

usuário que possua uma conta na Google poderá autenticar.

As páginas de serviços do ShowRoom são dividas em duas pastas, “admin”, que

contém as páginas de acesso dos administradores do sistema e pasta “showroom”, que

contém o serviço aos usuários visitantes.

Para implementar as regras acima é simples, primeiramente no arquivo web.xml

do Java definimos as regras:

<security-constraint>

<web-resource-collection>

<url-pattern>/showroom/*</url-pattern>

</web-resource-collection>

<auth-constraint>

<role-name>*</role-name>

</auth-constraint>

</security-constraint>

<security-constraint>

<web-resource-collection>

<url-pattern>/admin/*</url-pattern>

</web-resource-collection>

<auth-constraint>

<role-name>admin</role-name>

</auth-constraint>

</security-constraint>

Page 40: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

40

O asterisco é o caractere coringa para representar todos, incluindo sub-pastas e

todos arquivos. Para manipular o usuário e obter as suas informações, basta utilizar a

API de usuário da Google, a mesma foi utilizada para exibir as informações do usuário e

criar as URL de saída do sistema que é gerada dinamicamente pela Google.

Page 41: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

41

4.4 Visão

Esta seção apresenta o desenvolvimento das interfaces com o usuário, que foi

um dos maiores desafios desse projeto, primeiramente pelo pequeno número de

frameworks suportados pelo GAE. Além disso, mesmo para o framework de visão

escolhido foram necessárias várias configurações extras.

Para implementar a visão, o framework escolhido foi o Java Server Faces (JSF),

que é um framework MVC para desenvolvimento de aplicações Web, como o JSF é

baseado em Servlets, a tecnologia Web Java que permite a criação de páginas dinâmicas

utilizando o protocolo HTTP, é possível adaptá-lo ao uso no GAE. Novamente listamos

as restrições imposta pelo ambiente do GAE, que são necessárias para tornar o ambiente

robusto e escalavel:

• Não é permitido o acesso ao sistema de arquivos local;

• Não é permitida a criação de threads;

• Não é permitida a criação de código nativo;

• Não é permitida a criação de nenhuma conexão;

Dessa forma tivemos que adaptar o uso do JSF. O primeiro passo foi montar a

biblioteca com os arquivos JAR necessários, pois uma das primeiras ações foi retirar a

biblioteca de Asynchronous Javascript And XML (AJAX), pois ela faz referência a

arquivos do sistema. A biblioteca ficou apenas com os JAR mais simples do JSF, que é

apresentado na figura 9, em adição o Facelets, que permite a técnica de templating das

páginas.

Page 42: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

42

Fig. 9. Bibliotecas JSF (fonte: próprio autor)

Na segunda fase da adaptação ao uso do JSF, adicionamos ao arquivo web.xml,

que configura as aplicações Web Java com algumas configurações extras, mas serão

listadas apenas duas das principais que estão diretamente ligadas à restrição de uso de

threads. Abaixo é listado o trecho no qual é desabilitado o uso de threads no JSF:

<context-param>

<param-name>com.sun.faces.enableMultiThreadedStartup</param-name>

<param-value>false</param-value>

</context-param>

<context-param>

<param-name>com.sun.faces.enableThreading</param-name>

<param-value>false</param-value>

</context-param>

Após adptar o JSF, basta agora codificar o projeto. Apresentaremos o caso de

uso Cadastrar produto. O cadastro de um produto é constituído de duas páginas: A

primeira apresenta uma visão geral com a lista de todos os produtos e foi chamada de

painelControle.xhtml . A segunda página é o cadastro propriamente dito, representado

pelo arquivo cadastroProduto.xhtml. Ambos arquivos são gerenciados por uma classe

Java conhecida como managed bean. Ele tem a função de controle na arquitetura MVC.

Abaixo listamos o código do managed bean:

Page 43: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

43

package com.showroom.control;

import com.showroom.model.Produto;

import com.showroom.model.ProdutoDao;

import java.io.Serializable;

import java.util.List;

/**

*

* @author Ricardo

*/

public class ProdutoMB implements Serializable{

private static final long serialVersionUID = 1L;

private List<Produto> listaProdutos ;

private Produto produtoEditando = new Produto();

public ProdutoMB() {

inicialializa();

}

public void inicialializa(){

listaProdutos = ProdutoDao.findAll();

}

public String novo(){

produtoEditando = new Produto();

produtoEditando.setQtdComentario(0);

return "cadastro";

}

Page 44: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

44

public String editar(){

return "cadastro";

}

public String delete(){

ProdutoDao.delete(produtoEditando);

return "";

}

public String gravar(){

ProdutoDao.gravar(produtoEditando);

produtoEditando = null;

return null;

}

public List<Produto> getListaProdutos() {

return listaProdutos;

}

public void setListaProdutos(List<Produto> listaProdutos) {

this.listaProdutos = listaProdutos;

}

public Produto getProdutoEditando() {

return produtoEditando;

}

public void setProdutoEditando(Produto produtoEditando) {

this.produtoEditando = produtoEditando;

}

Page 45: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

45

}

É possível ver todas as operações que um cadastro comum teria, o resultado final

é apresentado nas figuras 10 e 11.

Fig. 10. Tela painel de controle (fonte: próprio autor).

Fig. 11. Tela cadastro de produto (fonte: próprio autor).

Page 46: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

46

5. ANÁLISES E CONCLUSÕES FINAIS

Este capítulo apresenta algumas das análises e conclusões do projeto

apresentado, tanto do ponto de vista do desenvolvedor quanto do empresarial.

5.1. Engenharia de software e computação nas nuvens

Não é exagero dizer que a computação nas nuvens já vem revolucionando a

engenharia de software (SANDERSON,2009). Primeiro veio a revolução da entrega da

aplicação, hoje podemos entregar um projeto como um serviço na Internet, sem a

necessidade de se instalar ou dar manutenção de forma individual aos clientes. Em

segundo a revolução da infra-estrutura da aplicação, a idéia de que os desenvolvedores

poderiam consumir recursos como a armazenamento de dados como serviço sem a

preocupação como estão instalados e como serão mantidos. Agora nos vivenciamos a

revolução da plataforma da aplicação, que possibilita ao desenvolvedor criar a aplicação

sem a necessidade de conhecer a máquina física e suas capacidades no qual será

instalada, Como apresentado ao longo deste trabalho, o GAE é um forte exemplo da

contribuição para a Engenharia de software.

Um bom exemplo da contribuição da computação nas nuvens do GAE é a

influencia na fase de projeto da engenharia de software, já que é necessário muito tempo

para planejar o desenvolvimento da aplicação com questões de recursos, por exemplo:

• Qual será o servidor de aplicação?

• Qual será a tecnologia do banco de dados?

• Qual é o balanceamento de carga é necessário?

• Qual será o custo de cada um destes itens?

O GAE elimina essa fase da engenharia de software, a fase de projeto ainda

existirá, mas esse é um tópico que não será mais necessário, por já se apresentar

resolvido.

Outra fase da engenharia de software que será influenciada é a fase da

implantação do sistema. Tradicionalmente é consumido um terço do tempo total do

Page 47: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

47

projeto para se instalar uma aplicação no ambiente de produção (ROCHE, 2009), com

GAE basta fazer o “upload” da aplicação que toda infra-estrutura já esta montada e

preparada para receber os usuários. Um detalhe importante é que se uma versão do

projeto falhar em produção, é possível alternar para a versão anterior e em quinze a

trinta minutos ela estará novemente disponível. eliminando assim toda a preocupação

com as eventuais falhas que acontecem em um sistema em produção.

O GAE também influencia no tamanho das equipes de desenvolvimento, pois, ao

contrário do usual, em que é comum ter uma equipe destinadas ao desenvolvimento e

outra para a base de dados, no GAE, como o banco é uma abstração no ambiente do

desenvolvimento, é necessário apenas uma equipe

.

Page 48: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

48

5.2 Custos da Funcionalidade

Outro ponto interessante que pode ser levantado é a respeito dos custos da

funcionalidade de uma aplicação, ou seja, dependendo da forma que determinadas

funções de uma aplicação é codificada, ela pode consumir mais ou menos recursos,

como o consumo de recurso está diretamente ligadas as cotas do modelo de faturamento

do GAE, ela implicará em mais ou menos gastos para uma empresa.

Podemos imaginar que se o caso de uso “comentar” de nossa aplicação

ShowRoom tivesse uma validação de conteúdo, buscando por palavras ofensivas. Isso

implicaria que a cada postagem de um comentário exigiria um processamento a mais

para essa validação. Se o acréscimo dessa funcionalidade implicasse em média um dólar

ao dia, ao final do mês teríamos trinta e um dólares a mais apenas pelo acréscimo de

dessa funcionalidade. Observando esse exemplo pode ser questionada a necessidade

dessa funcionalidade, assim como outras no contexto como todo, pois trinta e um

dólares são insignificantes para uma grande empresa, mas as soma de várias

funcionalidades poderiam impactar no custo final.

O interessante é o desafio proposto para o desenvolvimento da aplicação, além

de todas as limitações impostas pelo ambiente nas nuvens, temos agora que preocupar

com o consumo dos recursos que estão diretamente ligados aos custos do software,

exigindo um pouco mais dos profissionais na área e talvez estabelecendo uma nova

métrica para avaliação do software.

Page 49: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

49

5.3. Economia da computação nas nuvens

Nas seções anteriores foram apontados vários aspectos a respeito do

desenvolvimento, mas outro ponto que pode ser considerado é o dos custos gerais de

um projeto para as empresas de software.

Na época da crise financeira recente, passamos por um cenário bastante

interessante, onde as empresas tinham que continuar crescendo, mas o capital para o

investimento estava congelado, pois vários investidores haviam se tornado

conservadores (REESEE, 2009). Para uma empresa crescer, tipicamente ela tem duas

opções: adquirir infra-estrutura própria de equipamentos ou terceirizar a infra-estrutura.

A terceirização neste caso costuma ser mais leve para a empresa, pois não exige capital

de investimento, como apresentado na tabela 4.

infra.

Própria

infra.

Terceirizada

Capital de investimento $40,000 $0

custos com configuração $10,000 $5,000

serviço mensal $0 $4,000

trabalho mensal $3,200 $0

custo após 3 anos $149,000 $129,000

Tab. 4. Comparativo de custos (REESEE, 2009)

Esse cenário demonstra que a terceirização gera uma economia de 13,5%

(REESEE, 2009), mas é importante frisar que mesmo a diferença sendo pequena, a

terceirização não apresenta a necessidade de um investimento tão alto, que pode ser

agravada quando da necessidade de manter esse investimento atualizado, pois após três

anos poderá ser necessária uma atualização na infra-estrutura.

Comparando a computação nas nuvens com a terceirização, a tabela 5 apresenta

o quadro semelhante ao anterior, porém com um resultado um pouco melhor com a

computação nas nuvens com 18% de economia. Os benefícios econômicos de

computação nas nuvens não param por ai, pois, dependendo da aplicação, o tempo no

qual ela fica indisponível pode representar perda de receita para a empresa, como o

ambiente de computação é altamente escalavel, não é necessário interromper os serviços

para a uma atualização de infra-estrutura.

Page 50: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

50

infra.

Própria Nas nuvens

Capital de investimento $40,000 $0

custos com configuração $10,000 $1000

serviço mensal $0 $2,400

trabalho mensal $3,200 $1000

custo após 3 anos $149,000 $106,000

Tab. 5. Comparativo de custos com computação nas nuvens(REESEE, 2009)

Page 51: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

51

5.4 Considerações sobre o que foi implementado

O desenvolvimento da aplicação teve pontos positivos e negativos, poderíamos citar

como pontos positivos a facilidade de disponibilização da aplicação e a vasta

documentação por parte da Google no uso GAE. Já como ponto negativo, podemos citar

os vários problemas enfrentados, que, às vezes desconhecidos pela comunidade,

poderiam comprometer todo o desenvolvimento deste trabalho. Em resumo, o GAE

apresentou-se como uma grande plataforma para o desenvolvimento de aplicações nas

nuvens, principalmente o console administrativo que é fundamental em matéria de

monitoramento de recursos utilizados pela aplicação.

Page 52: Universidade Federal de Minas Gerais Instituto de Ciências ... · nesta seção tentaremos uma consolidação para evitar a divergência de conceitos. Para conceituar computação

52

REFERÊNCIAS

DEITEL, H. M e DEITEL, P. J.trad. Carlos Arthur Lang Lisbôa, Java como programar, 4º edição, - Porto Alegre, Bookman, 2003 REESEE, George. The Economics of Cloud Computing. O’Reilly Media. Disponível em:< http://broadcast.oreilly.com/2008/10/the-economics-of-cloud-c.html>. Acesso em: 19 out. 2009. REESEE, George. Cloud Application Architetures. 1ed. California. O´Reilly Media. 2009. 206p. ROCHE, Kyle.; DOUGLAS, Jeff. Beginning Java Google App Engine. 1 ed New York. Apress. 2009. 265p. SANDERSON, Dan. Programming Google App Engine. 1 ed. California. O´Reilly Media. 2009. 392p. SUN MICROSYSTEMS. Building Customer Trust in Cloud Computing with Transparent Security. Sun Microsystems, Inc. Disponível em:<http://Sun.systemnews.com/articles/143/1/CloudComputing/22675>. Acesso em: 19 jan. 2010. VELTE, Anthony T.; VELTE, Toby J.; ELSENPETER, Robert. Cloud Computing: A Practical Approach. 1.ed. New York. McGraw-Hill. 2009. 353 p.