universidade federal de minas gerais instituto de ciências ... · nesta seção tentaremos uma...
Post on 20-Jul-2020
5 Views
Preview:
TRANSCRIPT
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
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
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
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.
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.
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
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
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
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
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.
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.
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
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.
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.
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.
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
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.
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
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.
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).
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.
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.
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.
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.
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.
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
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).
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
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
31
Fig 5. Interface do Console Administrativo (fonte: próprio autor).
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.
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.
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.
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.
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;
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;
}
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).
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>
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.
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.
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:
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";
}
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;
}
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).
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
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
.
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.
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.
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)
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.
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.
top related