68
FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃO SÉRGIO CARVALHO DE ABREU COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE REFATORAÇÃO DE SISTEMA Fortaleza - 2012

COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

Embed Size (px)

Citation preview

Page 1: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃO

SÉRGIO CARVALHO DE ABREU

COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE REFATORAÇÃO DE SISTEMA

Fortaleza - 2012

Page 2: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

SÉRGIO CARVALHO DE ABREU

COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE REFATORAÇÃO DE SISTEMA

Monografia apresentada para obtenção dos créditos da disciplina Trabalho de Conclusão do Curso da Faculdade Farias Brito, como parte das exigências para graduação no Curso de Ciência da Computação. Orientador: Prof. MSc Leopoldo Soares de Melo Junior

Fortaleza - 2012

Page 3: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE REFATORAÇÃO DE SISTEMA

Sérgio Carvalho de Abreu

PARECER: APROVADO

NOTA: 9,0 Data: 16/06/2012

BANCA EXAMINADORA:

___________________________________ Prof. MSc Leopoldo Soares de Melo Junior

(Orientador)

___________________________________ Prof. MSc Maikol Magalhães Rodrigues

(Examinador)

__________________________________ Prof. Dr. Daniel Matos Alves

(Examinador)

Page 4: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

RESUMO

A Computação nas Nuvens é um conceito onde várias tecnologias são utilizadas em

conjunto para fornecer serviços e recursos através da rede. Este trabalho pretende mostrar

alguns conceitos de Computação nas Nuvens. Serão mostradas algumas de suas tecnologias,

características, modelos de serviços e modelos de implantação. Também serão abordadas

algumas plataformas que fornecem recursos de nuvens, além de apontar alguns “desafios”.

Realizaremos um estudo de caso de refatoração e migração de sistema. Nele, serão abordados

alguns aspectos tais como: métodos de analise para migração de sistema para as nuvens;

requisitos e características funcionais; e vantagens do processo de migração.

Page 5: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

AGRADECIMENTOS

Aos meus pais, Carlos e Marina por sempre me apoiarem e acreditarem em meu sonho e que

sem sua dedicação e incentivo, nada disso seria possível.

Aos meus tios, José e Benedita que me receberam em sua casa como um filho.

Aos meus irmãos, Lucas, Geovane e Hilsa por sempre se orgulharem de mim.

Ao meu orientador, Leopoldo Melo por sua inteligência e competência.

Aos meus colegas de faculdade, Elizeu, Evandir, Juscilando, Heráclito, Jackson, Thamires,

Helem e Charles que estiveram juntos comigo desde o início da jornada. E aos que encontrei

ao longo da estrada Marcela, Álan, Valrimar e Edivan.

À minha namorada Carolina, por seu carinho, apoio e paciência.

À minha “grande” família, por sua torcida e carinho.

Aos meus colegas de trabalho, por seu incentivo.

A todos os meus amigos, que contribuíram com minha formação profissional e pessoal. Em

especial ao Marcelo Teles, que me incentivou a “dar” o primeiro passo.

Page 6: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

SUMÁRIO

1 INTRODUÇÃO ......................................................................................................... 11

2 COMPUTAÇÃO NAS NUVENS ............................................................................. 13

2.1 Tecnologias Relacionadas............................................................................... 15

2.2 Características.................................................................................................. 16

2.3 Camadas de Arquitetura.................................................................................. 17

2.4 Modelos de Serviços........................................................................................ 19

2.4.1 Infraestrutura como Serviço (Infrastructure as a Service – IaaS) ......... 20

2.4.2 Plataforma como Serviço (Platform as a Service – PaaS) .................... 20

2.4.3 Software como Serviço (Software as a Service – SaaS) ....................... 21

2.4.4 Tudo como Serviço – XaaS ................................................................... 22

2.5 Modelos de Implantação ................................................................................. 22

2.5.1 Nuvens Privadas .................................................................................... 23

2.5.2 Nuvens Públicas .................................................................................... 23

2.5.3 Nuvens Comunitárias ............................................................................ 24

2.5.4 Nuvens Híbridas .................................................................................... 24

2.6 Principais Plataformas .................................................................................... 24

2.6.1 Amazon ................................................................................................. 24

2.6.2 Google ................................................................................................... 26

2.6.3 Microsoft ............................................................................................... 27

2.7 Desafios .......................................................................................................... 28

3 MIGRAÇÃO DE SISTEMAS PARA AS NUVENS ............................................... 30

Page 7: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

3.1 Refatoração ..................................................................................................... 31

3.2 Requisitos da Migração .................................................................................. 32

4 ESTUDO DE CASO ................................................................................................. 34

4.1 Visão Geral ...................................................................................................... 34

4.2 Freedom ERP ................................................................................................... 36

4.3 Plataforma Google ........................................................................................... 40

4.4 Implementação ................................................................................................. 41

4.4.1 Envio de email de Marketing ................................................................ 41

4.4.2 Agendamento de Tarefas ....................................................................... 42

4.5 Análise dos Resultados..................................................................................... 45

4.6 Vantagens e Desvantagens............................................................................... 47

5 CONCLUSÃO .......................................................................................................... 50

5.1 Contribuição e Trabalhos Futuros................................................................... 51

6 REFERÊNCIAS BIBLIOGRÁFICAS ..................................................................... 52

APÊNDICE ................................................................................................................... 57

Page 8: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

LISTA DE FIGURAS

Figura 1 – Camadas de Arquitetura.

Figura 2 – Camadas de Serviço.

Figura 3 – Componentes do sistema antes da refatoração.

Figura 4 – Componentes do sistema depois da refatoração.

Figura 5 – Diagrama de componentes.

Figura 6 – Diagrama de pacotes.

Figura 7 – Classes do pacote org.freedom.modulos.crm.view.frame.utility.

Figura 8 – Principais métodos da classe FEnviaMail.

Figura 9 – Diagrama de pacotes do modulo CRM do subsistema freedom-fw1.

Figura 10 – Classes do pacote org.freedom.crm do subsistema freedom-fw1.

Figura 11 – Classe FAgenda.

Page 9: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

LISTA DE TABELAS

Tabela 1 – Comunicação Síncrona e Assíncrona.

Tabela 2 – Métodos para acessar o Google Agenda.

Tabela 3 – Números da refatoração.

Page 10: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

LISTA DE ABREVIATURAS E SIGLAS

AWS Amazon Web Services

Amazon EC2 Amazon Elastic Compute Cloud

Amazon RDS Amazon Relational Database Service

Amazon SQS Amazon Simple Queue Sevice

Amazon S3 Amazon Simple Storage Service

Amazon VPC Amazon Virtual Private Cloud

API Application Programming Interface

GFS Google File System

HuaaS Human as a Service

HaaS Hardware as a Service

IaaS Infrastructure as a Service (Infraestrutura como Serviço)

JVM Java Virtual Machine

NIST National Institute of Standards and Technology

PaaS Platform as a Service (Plataforma como Serviço)

QoS Quality of Service

SaaS Software as a Service (Software como Serviço)

SLA Service Level Agreements

VM Virtual Machine

XaaS Tudo como Serviço

Page 11: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

1 INTRODUÇÃO

Eventualmente surgem no mundo da tecnologia novas tendências e conceitos que são

consideradas promessas e que, de repente, tornam-se realidades. Quando Eric Schmidt do

Google usou pela primeira vez o termo “Computação nas Nuvens”, em 2006, em uma palestra

sobre o gerenciamento de datacenters, ele não sabia como esse termo seria bastante discutido,

e como seria utilizado para a definição de uma ideia simples, mas poderosa (TAURION,

2009).

Computação nas Nuvens é uma ideia que reúne várias tecnologias existentes, de uma

forma inovadora, provendo novos modelos de serviços. Ela pode ser entendida como um

conceito que consiste basicamente em ter acesso à infraestrutura e ferramentas, hoje

disponíveis localmente, através da Internet como um serviço, assim como água, luz e telefone.

(RAMOS; ESES, 2010; SOUSA; MOREIRA; MACHADO, 2009).

Pouco tempo passou, e o conceito ganhou vários adeptos e muitas empresas

começaram a implantar e “fornecer” nuvens, como a Amazon, Google, IBM. Com isso,

pequenas e médias empresas foram beneficiadas, pois elas passaram a dispor de recursos

computacionais ubíquos, sob demanda, podendo reduzir seus custos e se concentrar apenas no

objetivo de seu negócio deixando toda a “responsabilidade” tecnológica nas mãos das

empresas “fornecedoras” de nuvens.

Os usuários também foram beneficiados, pois eles passaram a dispor de recursos

computacionais exatamente na quantidade que precisam pagando somente pelo utilizado.

Além disso, eles passaram a acessar seus dados de qualquer lugar, precisando apenas de um

Page 12: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

12 navegador web para acessar seus arquivos e aplicativos. Como exemplo dessa facilidade,

podemos citar os serviços de nuvens da Google, mais conhecidos como Google Drive, onde

processadores de texto, planilhas, correio eletrônico e agenda são disponibilizados

gratuitamente, sem a necessidade de instalação de software local (BOLSONI; CARDOSO;

SOUZA, 2009).

No entanto, por ser um paradigma novo, a Computação nas Nuvens possui inúmeras

definições diferentes, mas todas com muitos pontos em comum que esclarecem e completam

o conceito de nuvens. Essas definições citam características que, em geral, são os benefícios

que as nuvens oferecem como: escalabilidade, desempenho, pagamento somente pelo o que

foi utilizado, facilidade no compartilhamento e acesso aos dados (RAMOS; ESES, 2010).

Além dos benefícios que as nuvens oferecem, ao implantá-la, as empresas devem levar

em consideração um ponto importante: seus recursos tecnológicos atuais. Não apenas os

equipamentos físicos como computadores, servidores e datacenters, mas elas precisam

analisar quais sistemas “perderão” sua utilidade e quais serão “refeitos” para o novo

paradigma. Para isso, pode-se utilizar técnicas de refatoração, que consiste em modificar

partes internas de um sistema sem alterar sua funcionalidade (FOWLER, 2004).

O propósito desse trabalho é realizar um estudo da arquitetura das nuvens, suas

tecnologias, características, conceitos e serviços, e pesquisar a migração de serviços para as

nuvens. Esse estudo vai permitir analisar a viabilidade de sistemas que possam ser refatorados,

para que parte dele, ou o sistema completo, fique nas nuvens e parte em infraestrutura interna.

Com esse objetivo será realizado um estudo de caso de refatoração de sistema.

Page 13: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

2 COMPUTAÇÃO NAS NUVENS

O termo Cloud Computing (Computação nas Nuvens ou Computação em Nuvens) tem

ganhado nos últimos tempos grande atenção no mundo da tecnologia. Agora não mais como

uma promessa de um novo modelo computacional, mas como uma realidade já implantada e

utilizada por diversas empresas e usuários.

No entanto, por ainda ser um paradigma novo, não há um consenso que defina de uma

forma clara e universal o conceito de Computação nas Nuvens. Na realidade, ela possui várias

definições e muitas outras ainda podem aparecer ou evoluir (VERDI et. al., 2010). Com isso,

podemos encontrar várias definições diferentes na literatura, mas que possuem muitos pontos

em comum. A seguir mostraremos algumas delas.

Para Sousa; Moreira e Machado (2009, p. 3) Computação nas Nuvens é “uma

metáfora para a Internet ou infraestrutura de comunicação entre os componentes arquiteturais,

baseada em uma abstração que oculta à complexidade de infraestrutura”. Com a utilização da

Internet, a arquitetura das nuvens, como serviços, modelos de implantação e características,

torna-se transparente para os usuários.

No caso de Bolsoni; Cardoso e Souza (2009, p.4), os autores descrevem que a nuvem

“consiste no compartilhamento de dispositivos e ferramentas através da interligação dos

sistemas, sempre disponíveis, em que não há mais ferramentas e softwares locais, mas nas

nuvens”.

Page 14: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

14

Para Mell e Grance (2011, p.2), do NIST (National Institute of Standards and

Technology), a Computação nas Nuvens é:

Um modelo que possibilita acesso, de modo conveniente e sob demanda, a

um conjunto de recursos computacionais configuráveis (por exemplo, redes,

servidores, armazenamento, aplicações e serviços) que podem ser

rapidamente adquiridos e liberados com o mínimo de esforço gerencial ou

interação com provedor de serviços.

Cearley (2010, p.2), vice-presidente de pesquisas do GARTNER FELLOW, diz que

Computação nas Nuvens é um “um estilo computacional no qual as capacidades de tecnologia

podem ser massivamente escaláveis, consumidas no padrão como serviço e rodando sobre

plataformas de Internet”.

Além de fazer um amplo levantamento de várias definições de Computação nas

Nuvens, Vaquero et. al. (2009, p.2) propõem a seguinte definição:

Cloud computing é um conjunto de recursos virtuais facilmente usáveis e

acessíveis tais como hardware, plataformas de desenvolvimento e serviços.

Estes recursos podem ser dinamicamente reconfigurados para se ajustarem a

uma carga variável, permitindo a otimização do uso dos recursos. Este

conjunto de recursos é tipicamente explorado através de um modelo pay-per-

use com garantias oferecidas pelo provedor através de acordos de nível de

serviço (Service Level Agreements-SLAs).

Como podemos perceber, existem vários conceitos referentes à tecnologia nas nuvens, e em resumo, podemos dizer que a Computação nas Nuvens “pode ser entendido como um conceito que consiste em, basicamente, ter acesso a serviços, estrutura e ferramentas, hoje presente nos computadores pessoais ou locais, através da Internet” (RAMOS; ESES, 2010, p.2).

Page 15: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

15 2.1 TECNOLOGIAS RELACIONADAS

A nuvem é confundida com algumas tecnologias existentes. No entanto a ideia das

nuvens é mais abrangente e chega a englobar muitas dessas tecnologias para prover todos os

serviços advindos de sua definição (ZHANG; CHENG; BOUTABA, 2010). A seguir,

exploraremos as tecnologias mais importantes.

Grid Computing, segundo Bombonato (2002, p. 4) apud Gentzsch (2002) é:

Uma infraestrutura de hardware e software que oferece dependência,

consistência e facilidade de acesso a recursos que possibilitem o

compartilhamento de tais recursos computacionais, computação utilitária,

computação automática, colaboração em um grupo de organizações virtuais

(VOs) e processamento de dados distribuído, dentre outros.

Também conhecida como Computação em Grades, ela contém muitas características

semelhantes com a Computação nas Nuvens como: redução de custos, aumento da

flexibilidade e confiabilidade (VAQUERO, et. al. 2009). Porém, diferentemente da grade, as

nuvens possuem capacidades administrativas, sem a necessidade de gerenciamento,

escalonamento e monitoramento de recursos, sendo que seu fornecimento é realizado de

forma dinâmica (BARBOSA; CHARÃO, 2009; VIEDI et. al., 2010). As nuvens empregam a

tecnologia de grades ao compartilhar recursos virtuais entre as diversas camadas de serviços

(IaaS, PaaS, SaaS) (ZHANG; CHENG; BOUTABA, 2010).

Virtualização (Virtualization) refere-se à abstração de recursos computacionais físicos.

Ela fornece reservas de recursos através de Máquinas Virtuais (VM), que abstraem a parte

física fornecendo recursos virtuais equivalentes como discos virtuais, memórias virtuais,

CPUs virtuais, etc. (HESS; NEWMAN, 2009). As características da virtualização se mostram

fundamentais para as nuvens, pois o provimento adequado das camadas de arquiteturas e

modelos de serviços só é possível graças às técnicas de virtualização. Além disso, a

virtualização torna mais flexível o provimento dinâmico de recursos, gerando uma eficiente

escalabilidade (WANG et. al., 2008). As nuvens utilizam o conceito de virtualização ao

fornecer recursos computacionais dos servidores, clustes e datacenters na camada de

Page 16: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

16 hardware (ZHANG; CHENG; BOUTABA, 2010). Diferente da virtualização, as nuvens

fornecem capacidade de gerenciamento.

Utility Computing ou Computação Utilitária é um conjunto de recursos de tecnologia

como servidores e armazenamento, fornecidos como serviços escaláveis dinamicamente sob

demanda e na medida certa, com custo previsível (BUNKER; THOMSON, 2006). Na prática

os usuários obtêm recursos computacionais nas nuvens da mesma forma que os serviços de

água, luz, telefone, etc. Ao fornecer recursos computacionais e cobrar apenas pela quantidade

utilizada, levando em consideração o SLA, a Computação nas Nuvens está utilizando o

conceito de Utility Computing.

Computação autonômica (Autonomic Computing) é uma definição para sistemas com

capacidade de autogerenciamento com o mínimo de intervenção humana. O termo deriva do

sistema nervoso central, um sistema que controla suas funções sem consciência ou

envolvimento (IBM, 2011). O provimento automático de recursos, à medida que o usuário

utiliza, e configurações dinâmicas de hardware e software dentro das nuvens são exemplos de

como a Computação nas Nuvens utiliza a Computação Autonômica.

2.2 CARACTERÍSTICAS

O modelo de nuvens é composto por cinco características essenciais (MELL;

GRANCE, 2011). Elas serão exploradas a seguir.

Self-Service sob demanda: o consumidor pode adquirir novos recursos à medida que

precisar, sem a necessidade de interação humana com o servidor de serviços.

Amplo acesso à rede: os clientes podem acessar os recursos que estão disponíveis na

rede através de ferramentas heterogêneas como navegadores web e celulares.

Conjunto de Recursos: os provedores de recursos podem atender vários consumidores

simultaneamente, alocando recursos dinamicamente de acordo com a demanda.

Armazenamento, processamento e memória são exemplos de conjunto de recursos.

Elasticidade: recursos podem ser adquiridos e liberados rapidamente em qualquer

quantidade e a qualquer momento. São ilimitados para o consumidor.

Page 17: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

17

Medição de Serviço: as nuvens provêm controle e otimização automáticos da

utilização dos recursos. Essa automação é realizada de acordo com o serviço, como

armazenamento, processamento, etc. A utilização dos recursos pode ser medido, tornando

claro para o consumidor e para o provedor de nuvens quais os serviços que estão sendo

consumidos.

Outras características importantes que também compõem o modelo de Computação

nas Nuvens são (TAURION, 2009):

Abstração da infraestrutura e a distribuição geográfica dos sistemas: questões

administrativas e gerencias permitem a autonomia dos diversos sistemas.

Heterogeneidade: diversos sistemas com tecnologias diferentes compõem a nuvem.

Escalabilidade: a nuvem pode crescer dinamicamente com a inclusão de novos

sistemas ao sistema existente.

Adaptabilidade: a nuvem possui a capacidade de se manter funcionando mesmo em

caso de falha de alguma parte do sistema.

2.3 CAMADAS DE ARQUITETURA

As nuvens podem ser divididas em quatro camadas: Camada de hardware, de

Infraestrutura, de Plataforma e de Aplicações. Cada camada serve de base para as camadas

superiores, bem como, para os vários serviços oferecidos pelas nuvens tais como: IaaS, PaaS,

SaaS, etc. Esses serviços serão detalhados em seções posteriores.

A Camada de Hardware é composta pela parte física. Nela se encontram os recursos

computacionais propriamente ditos, como por exemplo: servidores, datacenters,

computadores e seus sistemas operacionais, clusters, recursos de memória e processamento.

A Camada de Infraestrutura, por sua vez, é responsável pela virtualização dos recursos.

Ela é uma middleware que gerencia a infraestrutura física e fornece uma visão de alto nível

para as camadas superiores (SOUSA; MOREIRA; MACHADO, 2009).

Page 18: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

A seguir temos a Camada de Plataforma, que consiste basicamente

de sistemas operacionais, ambientes de desenvolvimento e

BOUTABA, 2010). Nela é possível construir e executar aplicações nas nuvens.

Por último, temos a Camada de Aplicação. A camada que fornece o maior nível d

abstração para os usuários. Nela “estão os portais de acesso e os programas que exploram a

potencialidade das nuvens” (TAURION, 2009. p.45). As aplicações que executam nessa

camada, podem tirar proveito de recursos como: disponibilidade, custo operaciona

dimensionamento automático (ZHANG; CHENG; BOUTABA, 2010).

A figura 1, baseada no trabalho de Zhang; Cheng e Boutaba (2010), exemplifica as

camadas de arquitetura. Observe como cada camada é responsável por prover um tipo de

serviço (IaaS, PaaS, SaaS).

Figura 1 - Camadas de Arquitetura

A seguir temos a Camada de Plataforma, que consiste basicamente

de sistemas operacionais, ambientes de desenvolvimento e frameworks

BOUTABA, 2010). Nela é possível construir e executar aplicações nas nuvens.

Por último, temos a Camada de Aplicação. A camada que fornece o maior nível d

abstração para os usuários. Nela “estão os portais de acesso e os programas que exploram a

potencialidade das nuvens” (TAURION, 2009. p.45). As aplicações que executam nessa

camada, podem tirar proveito de recursos como: disponibilidade, custo operaciona

dimensionamento automático (ZHANG; CHENG; BOUTABA, 2010).

A figura 1, baseada no trabalho de Zhang; Cheng e Boutaba (2010), exemplifica as

camadas de arquitetura. Observe como cada camada é responsável por prover um tipo de

Camadas de Arquitetura. Fonte: Zhang; Cheng e Boutaba, 2010,

18

A seguir temos a Camada de Plataforma, que consiste basicamente de uma plataforma

frameworks (ZHANG; CHENG;

BOUTABA, 2010). Nela é possível construir e executar aplicações nas nuvens.

Por último, temos a Camada de Aplicação. A camada que fornece o maior nível de

abstração para os usuários. Nela “estão os portais de acesso e os programas que exploram a

potencialidade das nuvens” (TAURION, 2009. p.45). As aplicações que executam nessa

camada, podem tirar proveito de recursos como: disponibilidade, custo operacional baixo e

A figura 1, baseada no trabalho de Zhang; Cheng e Boutaba (2010), exemplifica as

camadas de arquitetura. Observe como cada camada é responsável por prover um tipo de

Zhang; Cheng e Boutaba, 2010, p. 9.

Page 19: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

2.4 MODELOS DE SERVIÇOS

Com o advento da Computação nas Nuvens e o seu paradigma

- desenvolveu-se uma forma diferente de consumo de serviços de Tecnologia, os do tipo

pague o que consumir, tornando a capacidade dos serviços oferecidos pelas nuvens “infinitos”

(VERDI et. al., 2010. SOUSA; MOREIRA; MACHADO, 2009).

Os serviços fornecido

serviço SLA (Service Level Agreement

fornecidos pela empresa contratada. O SLA é a garantia do serviço, ou seja, a qualidade do

serviço (QoS – Quality of Service

recursos (VERDI et. al., 2010).

As nuvens não ficam limitadas apenas aos consumidores. Com seu modelo de serviço,

elas proveem suporte não apenas para usuários consumidores de serv

empresas que pretendam colocar toda sua infraestrutura

(SOUSA; MOREIRA; MACHADO, 2009)

A definição de nuvens possui três modelos de serviços (MELL; GRANCE, 2011). A

figura 2 mostra os principais mode

estes modelos.

ODELOS DE SERVIÇOS

Com o advento da Computação nas Nuvens e o seu paradigma -

se uma forma diferente de consumo de serviços de Tecnologia, os do tipo

pague o que consumir, tornando a capacidade dos serviços oferecidos pelas nuvens “infinitos”

(VERDI et. al., 2010. SOUSA; MOREIRA; MACHADO, 2009).

Os serviços fornecidos pelas empresas são acertados através de acordo de nível de

Service Level Agreement), que mostra ao consumidor quais serviços serão

fornecidos pela empresa contratada. O SLA é a garantia do serviço, ou seja, a qualidade do

ity of Service) contratado, e nele se definem preços e características dos

recursos (VERDI et. al., 2010).

As nuvens não ficam limitadas apenas aos consumidores. Com seu modelo de serviço,

elas proveem suporte não apenas para usuários consumidores de serviços, mas também para

empresas que pretendam colocar toda sua infraestrutura de TI, ou parte dela, nas nuvens

(SOUSA; MOREIRA; MACHADO, 2009).

A definição de nuvens possui três modelos de serviços (MELL; GRANCE, 2011). A

figura 2 mostra os principais modelos de serviços das nuvens. As seções a seguir detalham

Figura 2 - Camadas de Serviço

19

recursos como serviço

se uma forma diferente de consumo de serviços de Tecnologia, os do tipo

pague o que consumir, tornando a capacidade dos serviços oferecidos pelas nuvens “infinitos”

s pelas empresas são acertados através de acordo de nível de

), que mostra ao consumidor quais serviços serão

fornecidos pela empresa contratada. O SLA é a garantia do serviço, ou seja, a qualidade do

) contratado, e nele se definem preços e características dos

As nuvens não ficam limitadas apenas aos consumidores. Com seu modelo de serviço,

iços, mas também para

TI, ou parte dela, nas nuvens

A definição de nuvens possui três modelos de serviços (MELL; GRANCE, 2011). A

los de serviços das nuvens. As seções a seguir detalham

Page 20: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

20 2.4.1 Infraestrutura como Serviço (Infrastructure as a Service – IaaS).

Segundo Souza; Moreira e Machado (2009, p.7), “IaaS é a parte responsável por

prover toda a infraestrutura necessária para a PaaS e o SaaS”. Seu foco é a distribuição de

recursos de infraestrutura como, hardware, armazenamento e processamento, na forma de

serviço, onde o usuário possui o controle virtual da parte física utilizando ferramentas de

virtualização.

Na prática, os recursos do IaaS são fornecidos como máquinas virtuais (VM – Virtual

Machine). O consumidor, ou empresa, ao contratar um serviço do tipo “IaaS”, define quais as

configurações de sua VM. Por exemplo, ele poderia adquirir uma VM com 2 Gigabytes de

memória RAM, 320 Gigabytes de capacidade de armazenamento e um “processador” com

1,6GHz de capacidade e processamento.

Nesse modelo de serviço, a alocação, o desempenho e a disponibilidade dos recursos

ficam nas nuvens. O consumidor não exerce funções de gerenciamento. Ele obtém uma visão

de alto nível dos recursos disponíveis e apenas decide como utilizá-los.

O IaaS possui duas características importantes: elasticidade e escalabilidade. Isso

permite a construção de ambientes de desenvolvimento e execução de aplicativos,

aumentando ou diminuindo os recursos necessários de acordo com a necessidade, pagando

apenas pela quantidade de serviço utilizado (CHAGANTI, 2010). Assim, o IaaS, fornece

acesso de alto nível à infraestrutura física no modelo de serviço, de forma transparente,

escalar e virtual.

2.4.2 Plataforma como Serviço (Platform as a Service – PaaS).

O PaaS fornece os recursos necessários para o desenvolvimento e execução de

aplicativos e para questões de segurança. Nele, há acesso a linguagens de programação e a

sistemas operacionais (SOUSA; MOREIRA; MACHADO, 2009), bem como opções de banco

de dados.

Nesse modelo de serviço, o desenvolvedor encontra disponível um ambiente de alto

nível, altamente integrado, para construir, testar e executar seus projetos (XU; LIU, 2010).

Page 21: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

21 Além disso, o servidores de PaaS, geralmente fornecem para os consumidores, alguma API

(Application Programming Interface) própria, que é incompatível com outras APIs de

terceiros (NAGAPRASAD et. al., 2010).

2.4.3 Software como Serviço (Software as a Service – SaaS).

Entende-se por software como serviço, a capacidade de fornecer aplicações através da

arquitetura das nuvens, utilizado a Internet. O consumidor necessita apenas de uma

ferramenta simples de acesso, como um navegador web (MELL; GRANCE, 2011).

No SaaS, as aplicações não precisam ser instaladas localmente. Elas ficam disponíveis

nas nuvens, onde podem ser acessadas de qualquer lugar através da Internet.

Geralmente implantada sobre os serviços de IaaS e PaaS, uma de suas principais

características é o baixo custo. Nesse modelo de serviço, o consumidor paga somente pelo

percentual utilizado e não comprando licenças completas para utilização do software, como

acontece com o paradigma atual. Outra característica desse serviço, é que o consumidor não

fica responsável pelo gerenciamento dos recursos ou controle da infraestrutura base, podendo

focar todo o seu trabalho no uso do software (SOUZA; MOREIRA; MACHADO, 2009;

MELL; GRANCE, 2011).

Outro ponto importante desse modelo de serviço é escalabilidade para o provimento de

recursos e o tempo reduzido para utilização do serviço contratado. Para começar a utilizar o

serviço, o consumidor e a empresa fornecedora definem um contrato - SLA (Service Level

Agreement) que define quais os direitos do consumidor em caso de falha do fornecedor. Uma

grande vantagem do SaaS, é que o consumidor não precisa montar uma infraestrutura prévia

para começar a utilizar o serviço. E quando existir a necessidade de aumento de recursos, o

consumidor simplesmente paga um pouco há mais por isso. Essa aquisição de novos recursos

e aumento da capacidade é transparente para o consumidor.

Page 22: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

22 2.4.4 Tudo como Serviço – XaaS

Computação nas Nuvens é um modelo emergente que provê “Everything as a Service”

(XaaS), ou seja, a nuvem é composta por uma pilha de serviços (LENK et. al., 2009). Os

principais serviços são: IaaS, PaaS, SaaS, que já foram abordados anteriormente. Nesta seção

mostraremos outros serviços fornecidos pelas as nuvens.

Hardware como Serviço (Hardware as a Service - HaaS): Resultado do avanço das

técnicas de virtualização e automação. Os usuários podem adquirir equipamentos de TI no

modelo pay-as-a-go, ou seja, apenas o que precisarem. É escalável, gerenciável e flexível

(WANG et. al., 2008).

Banco de Dados como Serviço (Database as a Service): Fornecimento de serviços de

banco de dados nas nuvens (HOGAN, 2008).

Dados como Serviço (Data as a Service): Os usuários tem acesso, seja local ou através

da rede, a diversas fontes de dados, em formatos e locais diferentes (WANG et. al., 2008).

Humanos como Serviço (Human as a Service- HuaaS): Camada mais alta da pilha de

recursos das nuvens. Quando pessoas utilizam ferramentas, ou recursos, para resolver

problemas e extrair informações de um conjunto de pessoas (WANG et. al., 2008).

Teste como Serviço (Testing as a Service): Recursos de testes de aplicativos em

nuvens (HP, 2011).

2.5 MODELOS DE IMPLANTAÇÃO

Para atender a demanda de seus clientes e funcionários por serviços e recursos, as

empresas podem implantar sua infraestrutura em diferentes modelos, cada um com suas

características e tecnologias próprias. “Tratando-se do acesso e disponibilidade de ambientes

de computação em nuvem, têm-se diferentes tipos de modelos de implantação” (SOUSA;

Page 23: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

23 MOREIRA; MACHADO, 2009). Mell e Grance (2011) definem quatro modelos que serão

explorados nas seções a seguir.

2.5.1 Nuvens Privadas

No modelo privado a infraestrutura de nuvem é utilizada exclusivamente pela

organização. Pode ser gerenciada pela própria organização ou por fornecedores externos

(MELL; GRANCE, 2011).

A grande vantagem desse modelo é que a nuvem está instalada dentro das

dependências da empresa. Assim, muitas preocupações com segurança causadas pela

hospedagem fora da infraestrutura da empresa, são eliminadas. Para isso, são utilizados

políticas de segurança, controles de acesso e métodos de autorização e autenticação (SOUSA;

MOREIRA; MACHADO, 2009).

No entanto, por ser instalada em servidores da própria empresa, não oferece os

benefícios de outros modelos de nuvens, como custo reduzido, flexibilidade e escalabilidade.

Uma alternativa seriam as Nuvens Privadas Virtuais, em que possuem os benefícios das

nuvens públicas de terceiros com as restrições internas de segurança (ZHANG; CHENG;

BOUTABA, 2010), ou seja, contrata-se uma nuvem pública, e está deixa a cargo do cliente

toda a responsabilidade com relação a questões de segurança, configuração e gerenciamento,

fornecendo apenas os recursos necessários.

2.5.2 Nuvens Públicas

No modelo público, a infraestrutura é disponibilizada por provedores para empresas e

usuários em geral. Para utilizá-las basta saber a localização física dos recursos e utilizar a

Internet para acessá-la, sem necessidade de investimentos iniciais em infraestrutura.

O ponto fraco desse modelo é com relação à segurança. A privacidade do usuário se

torna mais vulnerável, pois informações pessoais ficam sob a responsabilidade de terceiros

(NAGAPRASAD et. al., 2010).

Page 24: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

24 2.5.3 Nuvens Comunitárias

A implantação desse modelo ocorre quando várias empresas possuem algum interesse

em comum, como a mesma missão e políticas de segurança (SOUSA; MOREIRA;

MACHADO, 2009). Nas Nuvens Comunitárias há o compartilhamento de aplicações,

infraestrutura e acesso aos dados.

As empresas em conjunto contratam um serviço de nuvem que pode ser gerenciado

por uma empresa que faz parte da comunidade ou por uma empresa externa ao grupo.

2.5.4 Nuvens Híbridas

São a combinação de dois ou mais modelos de nuvens (privada, comunitária ou

pública), que permanecem independentes, mas unidas por padronização ou tecnologias

proprietárias (MELL; GRANCE, 2011).

Esse modelo combina as vantagens de cada abordagem, como a flexibilidade das

nuvens públicas e a segurança das nuvens privadas, para suprir as limitações de cada tipo de

nuvem (ZHANG; CHENG; BOUTABA, 2010). Por exemplo, sistemas de missão críticas

podem ficar em nuvens privadas enquanto que a escalabilidade e a elasticidade podem ser

resolvidos através de nuvens públicas (NAGAPRASAD et. al., 2010).

2.6 PRINCIPAIS PLATAFORMAS

Esta seção analisa algumas empresas que se destacam com seus produtos e serviços.

2.6.1 Amazon

A Amazon foi uma das pioneiras em adotar e fornecer o conceito de Computação nas

Nuvens. Ela possui um conjunto de serviços que fornecem recursos nas nuvens, para

Page 25: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

25 empresas e usuários, chamados de Amazon Web Services (AWS) (AMAZON, 2011). A seguir

serão relacionados os principais serviços de nuvens da Amazon.

Amazon CloudFront é um serviço voltado para a entrega de conteúdo, integrando-se

com outras ferramentas. Ela fornece facilidade de distribuição de conteúdo para usuários e

empresas AWS (AMAZON, 2011).

Amazon Elastic Compute Cloud (Amazon EC2) é um serviço que provê recursos

escaláveis para usuários, como máquinas virtuais. Ela permite uma rápida configuração com o

mínimo de interação humana. Nesse serviço o usuário paga somente pela quantidade de

recursos utilizados (AMAZON, 2011).

Amazon Relational Database Service (Amazon RDS) fornece capacidades de

gerenciamento, escalonamento e configuração de banco de dados relacional nas nuvens. Ela

fornece recursos similares ao MySQL, permitindo que bancos de dados existentes com essa

tecnologia funcionem perfeitamente com o Amazon RDS (AMAZON, 2011).

Amazon SimpleDB é similar ao Amazon RDS, disponibilizando recursos escaláveis e

flexíveis para banco de dados. No entanto essa capacidade é apenas para banco de dados não

relacionais. Ela é altamente disponível e necessita de pouco interação administrativa

(AMAZON, 2011).

Amazon Simple Queue Sevice (Amazon SQS) permite a troca de mensagens entre

aplicações que estão disponibilizadas nas nuvens e entres componentes do AWS. Os

aplicativos que trocam as mensagens não precisam estar disponíveis, permitindo uma maior

flexibilidade (AMAZON, 2011). Além disso, esse serviço é um importante mecanismo

assíncrono de integração entre sistemas.

Amazon Simple Storage Service (Amazon S3) fornece recursos de armazenamento. O

usuário tem acesso a seus dados de qualquer lugar utilizando a Internet. Essa tecnologia foi

desenvolvida para prover escalonamento “simples” para os usuários. Esse serviço também é

utilizado pela própria Amazon para sua infraestrutura de sites (AMAZON, 2011).

Page 26: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

26

Amazon Virtual Private Cloud (Amazon VPC) aplica o conceito de nuvem privada

para fornecer uma versão isolada do AWS (AMAZON, 2011). Com o Amazon VPC você

pode configurar uma topologia de rede dentro das nuvens. Além disso, pode criar uma VPN

(Vitual Private Network – Rede Privada Virtual) entre o datacenter da empresa e o serviço.

2.6.2 Google

O Google foi uma das primeiras empresas a fornecer serviços nas nuvens. A seguir

listaremos seus principais serviços.

Google Apps é um conjunto de ferramentas de colaboração disponíveis para os

usuários através da Internet. Dentre as categorias de aplicativos fornecidos estão: soluções de

email (Gmail™), mensagens instantâneas (Google Talk), agendas (Google Agenda), edição e

armazenamento de documentos (Google Drive), intranet e compartilhamento de documentos

(Google Sites) e compartilhamento de vídeos (Google Videos) (GOOGLE, 2011).

Google App Engine é uma plataforma voltada para o desenvolvimento e execução de

aplicativos utilizando a infraestrutura do Google (GOOGLE, 2011). Nela é possível aumentar

a capacidade do seu aplicativo á medida que o armazenamento e o trafego de dados do

aplicativo crescer, fornecendo escalabilidade de recursos. Inicialmente o usuário tem acesso

gratuito aos serviços, e se houver a necessidade de recursos extras ele somente paga pelo o

que ultrapassar a conta gratuita. O Google App Engine fornece dois ambientes de execução. O

primeiro baseado na tecnologia Java, o usuário pode desenvolver seus aplicativos utilizando

recursos da linguagem como a JVM (Java Virtual Machine) e servlets, bem como outras

linguagens que tenha por base o interpretador JVM, como JavaScript e Ruby (GOOGLE,

2011). O segundo ambiente de execução é baseado na tecnologia Phython, fornecendo um

interpretador Python e suas bibliotecas padrões.

Google File System (GFS) é um sistema de arquivos distribuídos e escaláveis

(GHEMAWAT; GOBIOFF; LEUNG, 2003). Fornece recursos de armazenamentos e

processamento de dados.

Page 27: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

27

Big Table é um sistema de armazenamento de dados estruturados (CHANG et. al.,

2006). Ele utiliza o GFS para fornecer serviços de gerenciamento e acesso a banco de dados.

No entanto é um banco do tipo “chave-valor”, e não relacional como acontecem como os

bancos de dados tradicionais.

2.6.3 Microsoft

A Microsoft também disponibiliza serviços nas nuvens. A plataforma Windows Azure

Platform é um conjunto de serviços que disponibilizam recursos para o desenvolvimento e

hospedagem de aplicativos nas nuvens (WINDOWS AZURE, 2011). Serão apresentados a

seguir os principais componentes.

O Windows Azure fornece aos usuários recursos computacionais de armazenamento,

rede, hospedagem e desenvolvimento. Com ele é possível escalar e gerenciar os aplicativos

que estão nas nuvens através da Internet.

Microsoft SQL Azure fornece serviço de dados nas nuvens. Ela inclui as capacidades

de comunicação e sincronização, além de prover recursos de banco de dados relacional.

Microsoft SQL Azure Database pertence ao componente Microsoft SQL Azure. Ele é

um banco de dados relacional nas nuvens baseado na tecnologia do SQL Server. Ele fornece

alta disponibilidade e tolerância a falhas. Além disso, não há a necessidade de gerenciamento

ou configuração de aplicativos (WINDOWS AZURE, 2011).

Windows Azure AppFabric é uma plataforma que fornece recursos para o desenvolver,

elaborar, gerenciar e implantar aplicações nas nuvens. Permite a integração de sistemas locais

com os aplicativos das nuvens.

Windows Azure Marketplace é ambiente disponível na web para desenvolvedores

compartilharem, comprarem e venderem aplicativos, serviços e dados.

Page 28: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

28 2.7 DESAFIOS

Por ser um novo paradigma, que reúne novas e antigas ideias, a Computação nas

Nuvens traz consigo problemas e desafios para profissionais e acadêmicos que trabalham com

ela. Ao considerar a adoção das nuvens, devem ser considerados aspectos como:

escalabilidade, confiabilidade e segurança (KHAJEH-HOSSEINI; SOMMERVILLE;

SRIRAM, 2010) dentre outro fatores. Essa seção mostra os principais desafios enfrentados

pelas nuvens.

Segurança e Gerenciamento de Dados: é de grande importância o provimento da

segurança. Aspectos como autenticidade, confidencialidade, integridade e auditoria precisam

ser levados em consideração. No entanto algumas técnicas utilizadas para prove-la, como

criptografia, podem acarretar uma perda de desempenho. Além disso, o gerenciamento é um

ponto crítico quando se considera milhares de servidores de dados (SOUSA; MOREIRA;

MACHADO, 2009; ARMBRUST et. al. 2009).

Provimento Automático de Serviços: umas das principais características das nuvens é a

capacidade de fornecimento e aquisição de recursos sob demanda. Prover recursos

dinamicamente, no momento em que o usuário necessitar e ainda garantir a QoS,

redirecionando recursos que estão sendo subutilizados em outro ponto da nuvem de forma

eficiente, pode ser um ponto sensível e comprometer o fornecimento de serviços (ZHANG;

CHENG; BOUTABA, 2010).

Escalabilidade, Disponibilidade e Desempenho: As nuvens precisam ser flexíveis no

fornecimento de serviços. O usuário pode aumentar a qualquer momento a demanda por

recursos consumidos, além de poder acessar seus serviços e dados de qualquer local

utilizando a Internet. Os provedores de nuvens precisam manter uma qualidade satisfatória de

acesso aos recursos, independente da quantidade de clientes acessando o serviço, para garantir

a QoS, e cumprir o SLA (SOUSA; MOREIRA; MACHADO, 2009; ARMBRUST et. al. 2009).

Questões Legais: com a implantação das nuvens nas organizações, as informações e

dados que foram hospedados nas nuvens estarão sujeitos às regulamentações locais onde os

provedores estarão localizados geograficamente. Aspectos relacionados ao direito autoral e de

Page 29: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

29 confidencialidade dos dados devem ser considerados a longo prazo. Outro fator que precisa

ser observado é o da TI. Como o “poder” da TI estará sendo transferida para fora das

empresas, a atual equipe de TI será atribuída a um novo papel (KHAJEH-HOSSEINI;

SOMMERVILLE; SRIRAM, 2010), que a deixa responsável pelo o monitoramento do SLA.

Além disso, a implantação das nuvens não é apenas a utilização de novas tecnologias e

ferramentas, é a modificação inteira de formas de trabalho implantas em uma empresa

(GREENWOOD; KHAJEJ-HOSSEINI; SOMMERVILE, 2010).

Armbrust et. al. (2009) cita além dos desafios, alguns já abordados nesta seção, uma

serie de oportunidades que as nuvens oferecem.

Page 30: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

3 MIGRAÇÃO DE SISTEMAS PARA AS NUVENS

O processo de migração de aplicações e serviços para as nuvens muitas vezes é

complexo e demorado, exigindo uma análise detalhada da tecnologia e do negócio da empresa.

Muitos fatores influenciam a decisão de levar ou não uma aplicação ou serviço para as nuvens.

DEB (2010, p. 1) faz a seguinte colocação ao analisar as características do legado da empresa

que será migrado:

Existem várias considerações de negócio, tecnologia e riscos que podem ter

efeito profundo no sucesso geral de iniciativas de nuvem em uma empresa,

significando que não existe uma resposta única para a adequação de um

aplicativo para a nuvem [...]. Cada empresa deve avaliar seu portfólio de

aplicativos com base em suas próprias obrigações de negócio, estratégia de

tecnologia e margem de risco.

Assim, refatorar sistemas para migrá-los para as nuvens não é uma tarefa fácil. No

entanto, existem alguns métodos e técnicas que podem auxiliar os profissionais nesse

processo, das quais podemos destacar (UNIPRESS, 2011):

� Troca de hospedagem de aplicações: consiste em redistribuir aplicações para

um ambiente (computacional) diferente sem, no entanto, modificar sua

estrutura, fornecendo uma rápida mudança de paradigma.

� Reestruturação de códigos: permite que os aplicativos sejam executados na

plataforma de nuvens. Fornece aos desenvolvedores a capacidade de utilizarem

frameworks e ambientes nos quais estão familiarizados.

Page 31: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

31

� Revisão de aplicações: fornece as organizações a capacidade de reconstruir ou

“evoluir” seus sistemas. Dessa forma, eles são refeitos e/ou modernizados para

aproveitarem os recursos das nuvens.

� Reconstrução de aplicações: nessa abordagem, o sistema é completamente

refeito. Assim, ele pode tirar proveito de todas as capacidades das nuvens.

� Substituição de aplicações: é a troca dos sistemas legados das empresas por

softwares de terceiro no modelo de serviço (SaaS).

Para o estudo de caso proposto, utilizaremos alguns desses métodos em conjunto. O

primeiro é a reestruturação de códigos. Uma das nossas metas é refatorar parte de um sistema

e migrá-lo para as nuvens. Para isso, escolheremos uma plataforma no qual o ambiente seja

“familiar” e forneça ferramentas compatíveis com as utilizadas para desenvolver o sistema. O

segundo é a revisão de aplicações. Nós iremos avaliar partes do sistema para que ele mude de

paradigma, indo para as nuvens. Dessa forma estamos “modernizando” o sistema para

desfrutar dos recursos da nova plataforma.

3.1 REFATORAÇÃO

Segundo Fowler (2004, p. 10) “refatoração é o processo de alteração de um sistema de

software de modo que o comportamento externo do código não mude, mas que sua estrutura

interna seja melhorada”, ou seja, é a modificação de partes do código sem modificar sua

funcionalidade (MURPHY-HILL, 2006).

No processo de evolução de software, a refatoração pode ser aproveitada para melhorar

a qualidade do software em muitas características como extensão, eficiência e reusabilidade

(MENS; TOURWÉ, 2004). No estudo de caso (capitulo 4), a refatoração será utilizada para

modificar parte de um sistema aplicando o paradigma da Computação nas Nuvens, para que

esse sistema possa ser fornecido no modelo de Software como Serviço (SaaS), ou seja,

estamos aumentado a reusabilidade dele.

Page 32: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

32 3.2 REQUISITOS DA MIGRAÇÃO

Assim como a análise e o desenvolvimento de software, a migração/refatoração de

sistemas para as nuvens devem seguir as mesmas normas de requisitos, projeto, teste, etc. da

Engenharia de Software. Com isso, podemos destacar alguns requisitos-não funcionais

importantes, para o processo de migração/refatoração, que estão “intimamente ligados” ao

conceito de Computação nas Nuvens.

Segundo SOMMERVILLE (2005), requisitos não funcionais são características

relacionadas ao desempenho, disponibilidade, confiabilidade, etc., ou seja, eles não estão

ligados diretamente às funcionalidades dos sistemas, mas a sua utilidade. A seguir,

descreveremos alguns desses requisitos relacionados ao processo de migração/refatoração.

Um importante requisito funcional que precisa ser avaliado é o desempenho do serviço

que será hospedado nas nuvens. Com relação a esse requisito, YOSHIDA (2011, p. 1) faz a

seguinte observação:

A velocidade de aplicações na web é uma questão de negócios, porque

aplicações que não apresentam um bom desempenho – seja por uma demora

na inicialização, por períodos de instabilidade frequentes ou inconsistência

geral na qualidade – podem trazer impactos negativos à experiência dos

usuários.

Dessa forma, aplicações e serviços que estão hospedados nas nuvens e que recebem um

grande número de requisições, dentro da abordagem híbrida ou não, podem comprometer o

desempenho geral do sistema. Por isso, a decisão de utilizar uma comunicação síncrona ou

assíncrona tem de ser analisada com cautela. REIS et. al. (2006, p. 1) define esses tipos de

comunicação da seguinte forma:

Nos sistemas de comunicação síncrona, os relógios do emissor e do receptor

estão em perfeito sincronismo e são dependentes, enquanto no tipo

assíncrono os relógios do emissor e do receptor apenas têm que estar

suficientemente próximos e são independentes.

Page 33: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

33

No trabalho de ALUR (2008), ele faz uma análise desses dois tipos de comunicação.

Ele ressalta em que casos devem-se usar um ou outro tipo. A tabela 1 mostra um resumo das

principais características de uso da comunicação síncrona e assíncrona.

Síncrona Assíncrona

Quando o desempenho for a característica

mais importante.

Processamento em lote com tempo pré-

determinado.

Quando necessitar de troca de dados em

tempo real.

Quando necessitar fazer a troca de uma grande

quantidade de dados.

Quando o tamanho dos dados for pequeno. Troca de mensagens com sistemas legados.

Quando as chamadas ao sistema forem

protegidas por transações.

Sem controle de transação.

Tabela 1 - Comunicação Síncrona e Assíncrona.

Outro principal requisito funcional que precisa ser analisado é a questão da

disponibilidade. Como a aplicação utiliza uma abordagem híbrida de migração, o serviço que

está hospedado nas nuvens pode ficar indisponível temporariamente, tornado o sistema

inconsistente. Assim, o processo de migração do sistema tem de prover, ao usuário e/ou

administrador, alternativas para manter o funcionamento mesmo com a indisponibilidade do

serviço (migrado/refatorado). Além disso, a disponibilidade da rede para acesso as nuvens é

uma característica básica.

Page 34: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

4 ESTUDO DE CASO

O estudo de caso a seguir, pretende apontar alguns passos de como refatorar uma

funcionalidade (serviço) de um sistema, para que ele venha a ser implantado na plataforma de

nuvens públicas e o sistema continuar utilizando o mesmo de forma transparente. Além disso,

pretendemos mostrar alguns pontos fortes e fracos desse tipo de abordagem.

4.1 VISÃO GERAL

Funcionalidades de sistemas que manipulam informações de “risco”, como dados dos

clientes, tendem a impedir que eles não sejam migrados para nuvens públicas. Nós

pretendemos mostrar, com essa migração parcial, que é possível aproveitar as facilidades da

Computação nas Nuvens, sem que para isso, tenha de armazená-los nas “mãos” de terceiros.

Assim o foco principal do nosso trabalho é refatorar parte de um sistema, para que ele

venha ser implantado nas nuvens. Dessa forma, o sistema poderá aproveitar os benefícios das

nuvens e ao mesmo tempo manter suas funcionalidades.

Por se tratar de uma migração “parcial”, após a refatoração, partes dos serviços serão

“levados” para as nuvens. A figura 3, elaborada a partir da análise do código do sistema,

mostra os componentes do sistema antes da refatoração, na infraestrutura da empresa,

enquanto que a figura 4 mostra o sistema depois da refatoração, com parte de suas

funcionalidades nas nuvens.

Page 35: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

Figura 3

Figura 4

Figura 3 – Componentes do sistema antes da refatoração.

Figura 4 – Componentes do sistema depois da refatoração.

35

Page 36: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

36

Dessa forma, podemos destacar que um dos benefícios desse processo de

refatoração/migração parcial, é que o sistema poderá manter suas informações de “risco” e

suas “informações sensíveis” ao negócio da empresa, na sua estrutura interna, enquanto que

os serviços que manipulam as informações não sensíveis sejam hospedados nas nuvens

públicas, beneficiando-se de seus recursos como a escalabilidade.

Contudo, o processo de migração, e consequentemente sua refatoração, de sistemas para

as nuvens tem de ser analisada com cautela. Nem todo sistema deve ser migrado atualmente

para as nuvens. Algumas características como questões legais de armazenamento, segurança e

privacidade dos dados (no caso de nuvens públicas), sistemas que não são favoráveis a

virtualização (dependem de hardware específicos) e latência (CV, 2012) tem de ser

consideradas quando for migrar. Existe um faixa de abordagens que podem ser migrados ou

não. Como exemplo, sistemas altamente customizados e sistemas que trabalham com dados

sensíveis não estão aptos a serem migrados, já os que possuem abordagem colaborativa e de

armazenamento estão preparados para “ir” para as nuvens.

4.2 FREEDOM ERP

Para nossa análise, utilizaremos o sistema FREEDOM ERP (que nós chamaremos

apenas de FREEDOM), que é um software livre de Gestão Empresarial que pode ser utilizado

em estabelecimentos comerciais, varejistas, atacadistas e industriais. Dividido em vários

módulos, atende a diversas necessidades de empresas em diferentes áreas de atuação

(FREEDOM, 2012).

O sistema FREEDOM é composto por vários módulos: standard, financeiro, PDV

(Ponto de venda), PCP (Produção), NFe (Integração com serviços de validação) e CRM.

Cada um dos módulos possui funcionalidades especificas que podem ser utilizadas

individualmente ou em conjunto com os outros módulos.

Page 37: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

Para nosso estudo utilizaremos o módulo CRM, que fornece

usuário como abertura de chamado, envio de email de

agendamento de tarefas, cadastro de cliente, etc. (FREEDOM, 2012).

O sistema FREEDOM

Firebird. Ele está dividido em quatro partes principais no qual “freedom” é onde se encontra

os módulos do sistema (standard,

suporte para as funcionalidades do sistema.

sistema FREEDOM que foram

mostra o diagrama de componente do sistema.

Já a figura 6 mostra o digrama de pacotes do subsistema “freedom”. Com ela temos

uma visão completa dos pacotes que o compõe. Nele podemos ver o pacote do módulo CRM

(org.freedom.modulos.crm), alvo de nosso análise.

Para nosso estudo utilizaremos o módulo CRM, que fornece vários serviços para o

como abertura de chamado, envio de email de marketing

agendamento de tarefas, cadastro de cliente, etc. (FREEDOM, 2012).

O sistema FREEDOM é construído na plataforma JAVA e utiliza o banco de dados

dividido em quatro partes principais no qual “freedom” é onde se encontra

standard, CRM, etc.) propriamente ditos. As outras partes forne

suporte para as funcionalidades do sistema. A seguir, mostraremos alguns diagramas do

sistema FREEDOM que foram elaborados a partir da análise do código do sistema.

mostra o diagrama de componente do sistema.

Figura 5 - Diagrama de componentes.

mostra o digrama de pacotes do subsistema “freedom”. Com ela temos

uma visão completa dos pacotes que o compõe. Nele podemos ver o pacote do módulo CRM

), alvo de nosso análise.

37

vários serviços para o

marketing para os clientes,

é construído na plataforma JAVA e utiliza o banco de dados

dividido em quatro partes principais no qual “freedom” é onde se encontra

CRM, etc.) propriamente ditos. As outras partes fornecem

A seguir, mostraremos alguns diagramas do

partir da análise do código do sistema. A figura 5

mostra o digrama de pacotes do subsistema “freedom”. Com ela temos

uma visão completa dos pacotes que o compõe. Nele podemos ver o pacote do módulo CRM

Page 38: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

Dentro do pacote

org.freedom.modulos.crm.view.frame.utility

classe é responsável pelo o serviço

para as nuvens. A figura 7 mostra as classes contidas nesse pacote.

Figura 6 - Diagrama de pacotes.

Dentro do pacote org.freedom.modulos.crm, podemos destacar o subpacote

org.freedom.modulos.crm.view.frame.utility, onde se encontra a classe

classe é responsável pelo o serviço de envio de email de marketing. Esse

mostra as classes contidas nesse pacote.

38

, podemos destacar o subpacote

, onde se encontra a classe FEnviaMail. Essa

sse serviço será migrado

Page 39: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

Figura 7 –

A classe FEnviaMail

envio de email de marketing

Figura 8

O módulo CRM do sistema Freedom também possui um serviço de agendamento de

tarefas. Esse serviço também será migrado para

verificam as pendências abertas pelos clientes. O serviço de agendamento de tarefas se

encontra no subsistema freedom

componentes do sistema FREEDOM onde podemos ver o su

mostra o diagrama de pacotes das classes que fornecem suporte ao módulo CRM.

Classes do pacote org.freedom.modulos.crm.view.frame.utility

FEnviaMail, possui vários métodos que são responsáveis pelo serviço de

marketing. A figura 8 mostra os principais métodos.

Figura 8 – Principais métodos da classe FEnviaMail.

O módulo CRM do sistema Freedom também possui um serviço de agendamento de

Esse serviço também será migrado para as nuvens. Nesse serviço, os usuários

verificam as pendências abertas pelos clientes. O serviço de agendamento de tarefas se

freedom-fw. A figura 5 vista anteriormente, mostra o diagrama de

componentes do sistema FREEDOM onde podemos ver o subsistema feedom

mostra o diagrama de pacotes das classes que fornecem suporte ao módulo CRM.

39

org.freedom.modulos.crm.view.frame.utility.

, possui vários métodos que são responsáveis pelo serviço de

O módulo CRM do sistema Freedom também possui um serviço de agendamento de

. Nesse serviço, os usuários

verificam as pendências abertas pelos clientes. O serviço de agendamento de tarefas se

vista anteriormente, mostra o diagrama de

bsistema feedom-fw1. A figura 9

mostra o diagrama de pacotes das classes que fornecem suporte ao módulo CRM.

Page 40: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

Figura 9 – Diagrama de pacotes do modulo CRM do subsistema freedom

Baseando-se no diagrama de pacotes acima podemos f

classes do subpacote org.freedom.modulos.crm.agenda.visoes.listas

visualização das listas do agendamento (listas de eventos). Já as do pacote

org.freedom.modulos.crm.agenda.visoes

org.freedom.modulos.crm.agenda

org.freedom.crm são responsáveis por

4.3 PLATAFORMA GOOGLE

Para o ambiente de nuvens foi utilizado o

aborda brevemente no capitulo 2. Ela foi escolhida por oferecer suporte à tecnologia Java, que

é a mesma utilizada para construir o sistema FREEDOM e por

uso. Além disso, a plataforma

Google Agenda que também

serviço de agendamento de tarefas do sistema FREEDOM.

Diagrama de pacotes do modulo CRM do subsistema freedom

se no diagrama de pacotes acima podemos fazer as seguintes

org.freedom.modulos.crm.agenda.visoes.listas são responsáveis pela

visualização das listas do agendamento (listas de eventos). Já as do pacote

org.freedom.modulos.crm.agenda.visoes constroem a interface gráfica. O pacot

org.freedom.modulos.crm.agenda lida com a lógica dos agendamentos. E a

são responsáveis por algumas configurações do módulo CRM.

OOGLE

Para o ambiente de nuvens foi utilizado o Google App Engine. Essa

aborda brevemente no capitulo 2. Ela foi escolhida por oferecer suporte à tecnologia Java, que

ara construir o sistema FREEDOM e por fornece

a plataforma Google fornece aplicações prontas para o usu

também foi utilizado no estudo por fornecer funcionalidades similares ao

serviço de agendamento de tarefas do sistema FREEDOM.

40

Diagrama de pacotes do modulo CRM do subsistema freedom-fw1.

azer as seguintes observações: as

são responsáveis pela

visualização das listas do agendamento (listas de eventos). Já as do pacote

constroem a interface gráfica. O pacote

lida com a lógica dos agendamentos. E as classes do pacote

algumas configurações do módulo CRM.

. Essa tecnologia já foi

aborda brevemente no capitulo 2. Ela foi escolhida por oferecer suporte à tecnologia Java, que

fornecer cotas gratuitas para

s prontas para o usuário como o

funcionalidades similares ao

Page 41: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

41 4.4 IMPLEMENTAÇÃO

No nosso estudo serão analisados dois serviços do módulo CRM do sistema FREEDOM:

o Envio de Email de Marketing e o Agendamento de tarefas. Primeiramente abordaremos o

funcionamento e em seguida analisaremos como estava a implementação antes e depois da

refatoração e migração para as nuvens.

4.4.1 Envio de email de Marketing

Atualmente, quando o usuário necessita informar aos seus clientes de um novo

produto ou serviço, ele inicia uma nova “campanha”, que consiste de fornecer ao sistema

informações sobre o que ele pretende enviar para seus clientes e então “solicita” ao sistema o

envio do email da campanha. O sistema então recupera os emails dos clientes, que estão

previamente cadastrados em sua base de dados, e envia o email.

Nessa abordagem, após ser solicitado pelo o usuário para enviar o email, o sistema fica

responsável por enviar um email para cada usuário. Após a refatoração do serviço, quando o

usuário solicitar ao sistema para enviar um email, o sistema irá recuperar da base de dados o

email do cliente e então realizará uma solicitação para o serviço de envio de email de

campanha, que está nas nuvens, que envie o email para o cliente.

Do ponto de vista de codificação, antes o sistema chamava o método

mandaMail(sMail, se), no qual recebia os dados do usuário e da campanha e uma seção como

parâmetro e em seguida enviava o email. O código completo do método antes da refatoração

se encontra no apêndice I. Esse método utiliza chamada internas do próprio sistema para a

realização do serviço. Primeiro, ele adiciona os dados a serem enviados (linhas 5 – 9 do

apêndice I), em seguida “monta” a mensagem a ser enviada, (linhas 15-16 e 27 do apêndice I)

e por fim envia o email (linha 29 do apêndice I).

Após a refatoração, o método mandaMail faz uma chamada a um serviço que está nas

nuvens para o envio de email. Para isso ele realiza os seguintes passos:

Page 42: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

42

1. Cria uma chamada especificando o endereço do serviço:

Call call = (Call) service.createCall();

call.setTargetEndpointAddress("

http://envioemailmarketing.appspot.com/envioemailmarketing");

2. Identifica o nome do serviço:

call.setOperationName(new QName("enviarEmail"));

3. Envia os dados para o serviço:

call.invoke(new Object[] {endereçoEmail, campanha}.

Após realizar essa sequência de passos, o serviço que está hospedado nas nuvens fica

responsável por enviar o email para os clientes.

O serviço de envio de email foi hospedado em nuvem pública e utiliza a tecnologia do

Google App Engine. Foi feito uma aplicação que fornecesse o mesmo serviço de envio de

email que o anterior, que ficava internamente ao sistema. No apêndice II encontra-se a

codificação do método enviarEmail. Esse método realiza a mesma funcionalidade de envio

de email, adiciona (linhas 10-12 do apêndice II), “monta” (linhas 16-17 do apêndice II) e

envia (linha 18 do apêndice II) as informações. A diferença é que esse método se encontra nas

nuvens.

4.4.2 Agendamento de Tarefas

O serviço de agendamento de tarefas fornece aos usuários do sistema uma visão das

listas de pendências e seus respectivos responsáveis. No serviço atual, para saber se há novas

pendências, o usuário precisa acessar o sistema localmente e verificar se existem novas

requisições. Caso o usuário esteja em uma atividade externa e surgir outra tarefa, o mesmo

não será informado adequadamente. O mesmo acontece para o administrador que fica

responsável pela a abertura das tarefas. Caso ele necessite iniciar um novo chamado não

poderá realizar de forma eficiente.

Page 43: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

A lógica responsável pelo o provimento desse serviço foi divida entre as diversas

classes do pacote org.freedom.crm

análise dos códigos do sistema FREEDOM)

Figura 10 – Classes do pacote org.freedom.crm do subsistema freedom

No processo de refato

uma aplicação equivalente para prover a funcionalidade nas nuvens:

Google Agenda é uma ferramenta que faz parte do

tarefas e agendas (GOOGLE, 2011

Google Calendar Data API

desenvolvedores, várias interfaces para a interação de aplicações de terceiros com os serviços

do Google, além de pacotes clientes conhecidos como

Para que o sistema pudesse ter sua funcionalidade de tarefas levadas para as nuvens e

seus clientes pudessem acessá

implementando as principais funcionalidades do serviço,

visualização de tarefas. Dessa forma, o usuário poderá acessar suas tarefas através da

interface do sistema, quando estiver internamente na empresa, ou através da Google Agenda

em qualquer dispositivo, quando estiver em atendimento externo.

Em termos de codificação, para acessar os serviços o cliente deve manter uma instância

da classe CalendarService. Essa classe é responsável por fazer toda a interação entre o cliente

A lógica responsável pelo o provimento desse serviço foi divida entre as diversas

org.freedom.crm do subsistema freedom-fw1. A figura 1

análise dos códigos do sistema FREEDOM) mostra as classes desse pacote.

Classes do pacote org.freedom.crm do subsistema freedom

No processo de refatoração do serviço (agendamento de tarefas), foi possível utilizar

uma aplicação equivalente para prover a funcionalidade nas nuvens:

é uma ferramenta que faz parte do Google Apps, e fornece funcionalidades de

(GOOGLE, 2011). Para fazer o acesso aos seus serviços utilizamos o

Google Calendar Data API (API de Dados do Google Agenda). Essa API fornece aos

desenvolvedores, várias interfaces para a interação de aplicações de terceiros com os serviços

m de pacotes clientes conhecidos como Java Client Library

Para que o sistema pudesse ter sua funcionalidade de tarefas levadas para as nuvens e

seus clientes pudessem acessá-las através do Google Agenda, foi criado um pacote

as principais funcionalidades do serviço, criação, atualização

de tarefas. Dessa forma, o usuário poderá acessar suas tarefas através da

interface do sistema, quando estiver internamente na empresa, ou através da Google Agenda

ualquer dispositivo, quando estiver em atendimento externo.

Em termos de codificação, para acessar os serviços o cliente deve manter uma instância

. Essa classe é responsável por fazer toda a interação entre o cliente

43

A lógica responsável pelo o provimento desse serviço foi divida entre as diversas

. A figura 10 (elaborada a partir

mostra as classes desse pacote.

Classes do pacote org.freedom.crm do subsistema freedom-fw1.

ração do serviço (agendamento de tarefas), foi possível utilizar

uma aplicação equivalente para prover a funcionalidade nas nuvens: Google Agenda. O

, e fornece funcionalidades de

). Para fazer o acesso aos seus serviços utilizamos o

(API de Dados do Google Agenda). Essa API fornece aos

desenvolvedores, várias interfaces para a interação de aplicações de terceiros com os serviços

Library (GOOGLE, 2011).

Para que o sistema pudesse ter sua funcionalidade de tarefas levadas para as nuvens e

las através do Google Agenda, foi criado um pacote

atualização, exclusão e

de tarefas. Dessa forma, o usuário poderá acessar suas tarefas através da

interface do sistema, quando estiver internamente na empresa, ou através da Google Agenda

Em termos de codificação, para acessar os serviços o cliente deve manter uma instância

. Essa classe é responsável por fazer toda a interação entre o cliente

Page 44: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

e os serviços do Google Agenda. Já para a manipulação do evento contamos com a classe

CalendarEventEnty. A tabela

Método

CalendarService.insert()

CalendarService.query()

CalendarEventEnty.delete()

CalendarEventEnty.update()

Tabela 2 - Métodos para acessar o Google Agenda.

A seguir comentaremos a implementação das funcionalidades de criação e modificação

de tarefas (chamadas também de eventos).

refatoração. As outras funcionalidades

No pacote org.freedom.crm

pelas as funcionalidades do agendamento. Na figura 1

do sistema FREEDOM) podemos observar alguns de seus métodos.

O método novoAgd

método utilitário insertAgd

mostram a implementação dos método

novoAgd realiza algumas validações

válida (linha 10 do apêndice III

e os serviços do Google Agenda. Já para a manipulação do evento contamos com a classe

tabela 2 mostra alguns de seus métodos.

Função

Cria um novo evento.

Realiza consultas.

Remove um evento.

.update() Atualiza os dados do evento.

Métodos para acessar o Google Agenda.

A seguir comentaremos a implementação das funcionalidades de criação e modificação

de tarefas (chamadas também de eventos). Abordaremos como era o antes e o depois da

funcionalidades possuem implementação semelhante

reedom.crm do subsistema freedom-fw1a classe FAgenda

pelas as funcionalidades do agendamento. Na figura 11 (elaborada a partir análise dos códigos

podemos observar alguns de seus métodos.

Figura 11 – Classe FAgenda.

cria uma nova tarefa. Ele obtém os dados do usuário e utiliza o

insertAgd para persistir as informações no banco.

mostram a implementação dos métodos novoAgd e insertAgd respectivamente.

gd realiza algumas validações, como verificar se o período de execução é uma data

10 do apêndice III), antes de invocar o método insertAgd (linha 31

44

e os serviços do Google Agenda. Já para a manipulação do evento contamos com a classe

Cria um novo evento.

Realiza consultas.

Remove um evento.

Atualiza os dados do evento.

A seguir comentaremos a implementação das funcionalidades de criação e modificação

como era o antes e o depois da

ossuem implementação semelhante.

FAgenda é responsável

(elaborada a partir análise dos códigos

cria uma nova tarefa. Ele obtém os dados do usuário e utiliza o

nformações no banco. O apêndice III e IV

novoAgd e insertAgd respectivamente. O método

como verificar se o período de execução é uma data

antes de invocar o método insertAgd (linha 31 do apêndice

Page 45: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

45 III) para persistir as informações. Outras chamadas ao método insertAgd podem ser realizadas

ao longo da lógica do método novoAgd (linhas 50, 61, 74, 87, 98, 109, 120 do apêndice III).

Após receber as informações, o método insertAgd prepara o sql (linhas 8-9 do apêndice IV),

monta a persistência (linhas 14-32 do apêndice IV) e persiste os dados (linha 43 do apêndice

IV).

Depois da refatoração a mesma funcionalidade é feita com o método criarEvento (O

apêndice V mostra sua implementação). Primeiro ele identifica o serviço de calendário que

está nas nuvens (linhas 6-8 do apêndice V), monta um objeto como as informações (linhas 9-

10 do apêndice V) e em seguida realiza a criação da tarefa com uma chamada ao método

insert(postUrl, entry) (linha 11 do apêndice V) da classe CalendarService, da API do Google

Agenda. Nessa chamada o argumento postUrl identifica o calendário do evento e o entry

representa um objeto da classe CalendarEventEntry, que encapsula as informações de um

evento.

Para alterar um evento o sistema utiliza o método editaAgd. O apêndice VI mostra a

implementação deste método. Primeiro ele monta o SQL (linhas 72-73 do apêndice VI),

depois adiciona os dados (linhas 75-105 do apêndice VI) e em seguida persiste os dados

(linha 107 do apêndice VI). Depois da refatoração a mesma funcionalidade é feita com o

método editarEvento (Apêndice VII). Primeiro ele obtém o objeto que contém as

informações para atualizar (linhas 6-7 do apêndice VII) e em seguida chama o método update

da classe CalendarEventEntry (linha 8 do apêndice VII).

4.5 ANÁLISE DOS RESULTADOS

Na seção 4.4 mostramos a refatoração de partes de um sistema, para que seus serviços

fossem hospedados nas nuvens. Nela abordamos o código de vários métodos que em conjunto,

proveem os serviços de envio de email de marketing e agendamento de tarefas.

Destacamos as principais partes da implementação dos métodos, mostrando como eles

forneciam o serviço antes, internamente ao sistema, e depois, com o os serviços já hospedados

nas nuvens.

Page 46: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

46

Para refatorar o serviço de envio de email de marketing, foi criado um aplicativo para

enviar email equivalente ao que funcionava dentro do sistema. Esse aplicativo foi hospedado

nas nuvens e internamente o sistema foi modificado para acessá-lo como serviço.

Já para o agendamento de tarefas a abordagem foi diferente. Como o serviço era

semelhante ao aplicativo Google Agenda, que faz parte dos serviços de nuvens do Google

Apps, foi criado um cliente para que os usuários usem o serviço de agendamento, podendo

acessá-lo normalmente. Dessa forma, o usuário passou a utilizar o Google Agenda como

serviço de agendamento de tarefa, através da interface do sistema quando estiver dentro da

empresa, ou através de qualquer cliente quando estiver em atendimento externo.

A abordagem de refatorar os serviços para poder aproveitar os recursos das nuvens

oferece muitas vantagens. A seguir destacaremos alguns benefícios:

• Redução da infraestrutura, pois o sistema terá partes de suas funcionalidades

hospedadas nas nuvens, com isso, diminui a quantidade de recursos utilizados

para fornecer essas funcionalidades.

• Aumento da disponibilidade dos serviços. Como eles estão hospedados nas

nuvens, as informações estão sempre disponíveis para serem acessados de

diferentes formas por diversos clientes.

• Redução da quantidade de erros. Os serviços refatorados estão utilizando

recursos e plataformas das nuvens. Essas plataformas já foram testadas e

homologadas antes de tornarem-se disponíveis.

• Redução da quantidade de manutenção. A equipe de desenvolvimento precisa

preocupar-se apenas com o acesso ao serviço.

• Redução de código proprietário. Como os serviços foram refatorados e

migrados para as nuvens, a quantidade de código para realizar a mesma

funcionalidade, dentro do sistema, diminuiu consideravelmente.

Baseando-se nessa última observação, a tabela 3 mostra alguns dados

referentes ao processo de refatoração.

Page 47: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

47

Critério Antes Depois Resultado

Quantidade total de

linhas de código do

módulo CRM.

10515 2635

Redução de 75%

da quantidade de

linhas de código.

Quantidade de Classes

do módulo CRM. 87 82

Redução de 6% da

quantidade de

classes.

Tabela 3 – Números da refatoração.

Podemos ver que houve uma grande redução da quantidade de código. Isso ocorreu

principalmente por dois motivos: o primeiro foi por conta da utilização do serviço Google

Agenda. Com isso, algumas classes responsáveis pelas interfaces gráficas deixaram de existir.

Isso mostra que utilizar aplicações disponíveis na plataforma das nuvens pode diminuir a

complexidade do sistema e sua posterior manutenção. O segundo foi pela a construção de

métodos mais concisos. Como a lógica responsável pela criação, edição, recuperação e

atualização está toda dentro da API do Google Agenda, foi necessário apenas criar métodos

que realizassem chamadas para os serviços.

4.6 VANTAGENS E DESVANTAGENS

De uma forma mais geral, o processo de migração de sistemas para as nuvens fornece

muitos benefícios para as empresas e usuários. A seguir algumas vantagens de utilizar as

nuvens:

� Redução dos custos. Como a empresa vai pagar apenas pelos os recursos

utilizados, o valor gasto para manter aplicações e serviços é bem vantajoso

comparado ao de manter uma infraestrutura interna. Além disso, o

Page 48: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

48

investimento para montar uma infraestrutura inicial é pequeno e o tempo para

iniciar seu funcionamento é rápido.

� Recursos ilimitados. Com sua capacidade de alocação dinâmica de recursos, as

nuvens podem fornecer recursos “ilimitados”. Assim o usuário não precisa se

preocupar com o desempenho da sua aplicação, pois à medida que necessitar

de mais capacidade de processamento, armazenamento, etc., os recursos

podem aumentar “infinitamente”.

� Flexibilidade. O usuário não precisa se preocupar se o sua aplicação vai

funcionar ou não. Como ela está hospedada nas nuvens ela é independente de

plataforma. O usuário também pode escolher em qual plataforma de nuvens

deseja armazenar suas aplicações e arquivos.

� Compartilhamento. As nuvens fornecem grandes capacidades de

compartilhamento de arquivos e aplicativos. Como os recursos estão

hospedados nas nuvens e não na infraestrutura interna ou computador pessoal,

para ter acesso a esses recursos, precisa-se ter apenas acesso as nuvens.

� Variedade de Aplicações. Os usuários possuem acesso a um grande número de

aplicações, podendo escolher rapidamente uma aplicação para suprir alguma

necessidade. Além disso, ele pode testar a aplicação antes de adquirir, podendo

elaborar uma estratégia melhor para a resolução do seu problema.

Mesmo com todas as vantagens, existem alguns pontos contrários que precisam ser vistos

para utilizar e/ou migrar para as nuvens. A seguir comentaremos alguns.

� Segurança. Um aspecto importante das nuvens é com relação à segurança.

Como seus dados e aplicações estão fora da empresa, eles podem sofrer

acessos indevidos ao mesmo tempo em que, são pessoas externas ao ambiente

da empresa que serão responsáveis por elas.

� Indisponibilidade de acesso. Para acessar os recursos que estão nas nuvens, o

usuário precisa fazer o uso da rede. Caso o usuário não tenha algum cliente

Page 49: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

49

para acessar a rede ou a mesma esteja indisponível, não será possível fazer o

uso das nuvens.

� Provedor de recursos. Como a maioria das nuvens é um serviço adquirido, há

o risco de o provedor deixar de fornecer os recursos ou deixar de cumprir o

contrato, deixando os usuários sem acesso aos arquivos e aplicativos.

� Portabilidade. A capacidade de migrar um aplicativo de uma nuvem para outra

também é um fator negativo. Isso muitas vezes não acontece de uma forma

simples, pois, precisam de implementação extra para funcionar adequadamente.

Page 50: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

5 CONCLUSÃO

Conforme mostrado neste trabalho, a Computação nas Nuvens é um conceito inovador

que combina diversas tecnologias para prover serviços e recursos através da rede. Ela possui

muitas características importantes, tais como self-service de recursos, elasticidade,

escalabilidade, dentre outros. Combinando as características com suas camadas de arquitetura

(Hardware, Infraestrutura, Plataforma e Aplicação), as nuvens fornecem camadas de serviços

(Software (SaaS), Plataforma (PaaS) e Infraestrutura (IaaS)).

O conceito de Computação nas Nuvens pode ser implantada internamente em

empresas, como Nuvens Privadas, contratadas de provedores externos, como Nuvem Pública,

ou ainda pode se utilizar uma combinação dos dois tipos, Nuvens Híbridas. Apesar de seus

recursos, o uso das nuvens requer cuidados. Questões como segurança, gerenciamento de

dados, escalabilidade, disponibilidade, desempenho e questões legais devem ser avaliados.

Já no processo de migração de software para as nuvens, podem-se utilizar

alguns métodos e técnicas, tais como, reestruturação de códigos e revisão de aplicações, para

auxiliar a avaliação dos sistemas. Além disso, é preciso verificar alguns requisitos como

desempenho, disponibilidade, comunicação entre aplicações, etc.

No estudo realizado, podemos avaliar que refatorar sistemas e/ou serviços e

migrá-los para as nuvens pode ser vantajoso, ou seja, utilizar o ambiente das nuvens para

hospedar os serviços fornece muitos benefícios, tais como: redução de infraestrutura, aumento

da disponibilidade, redução de erros, manutenção e redução de código utilizado.

Page 51: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

51 5.1 CONTRIBUIÇÃO E TRABALHOS FUTUROS

O presente trabalho mostrou alguns aspectos da tecnologia da Computação nas

Nuvens. Mostramos algumas de suas tecnologias, características, plataformas, modelos de

serviços e modelos de implantação. Falamos também de algumas plataformas que fornecem

recursos de nuvens, além de apontar alguns “desafios” para as nuvens.

Também mostramos como refatorar uma aplicação para que ela seja migrada

para as nuvens. Analisamos alguns métodos e requisitos importantes desse processo. E

também mostramos os benefícios dessa abordagem.

Muitos pontos podem ser explorados com a Computação nas Nuvens. Em trabalhos

posteriores, podemos estender o processo de migração para outras plataformas, avaliando a

metodologia de implantar uma mesma funcionalidade em diferentes nuvens. Além disso,

critérios de segurança, desempenho e de acesso podem ser avaliados.

Page 52: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

6 REFERÊNCIAS BIBLIOGRÁFICAS

ALUR, Sandeep J. Integração corporativa e computação distribuída: fenômeno onipresente. 2008. Disponível em: <http://msdn.microsoft.com/pt-br/library/ff394091.aspx>. Acesso em: 15/05/2012. AMAZON. Amazon Web Services. 2011. Disponível em: < http://aws.amazon.com/>. Acesso em: 12/05/2011. AMAZON. Amazon CloudFront. 2011. Disponível em: < http://aws.amazon.com/cloudfront/>. Acesso em: 12/05/2011. AMAZON. Amazon Elastic Compute Cloud (Amazon EC2). 2011. Disponível em: < http://aws.amazon.com/ec2/>. Acesso em: 12/05/2011. AMAZON. Relational Database Service (Amazon RDS). 2011. Disponível em: < http://aws.amazon.com/rds/>. Acesso em: 12/05/2011. AMAZON. Amazon SimpleDB. 2011. Disponível em: < http://aws.amazon.com/simpledb/>. Acesso em: 12/05/2011. AMAZON. Amazon Simple Queue Sevice. 2011. Disponível em: < http://aws.amazon.com/sqs/>. Acesso em: 12/05/2011. AMAZON. Amazon Simple Storage Service (Amazon S3). 2011. Disponível em: < http://aws.amazon.com/s3/>. Acesso em: 12/05/2011. AMAZON. Amazon Virtual Private Cloud (Amazon VPC). 2011. Disponível em: < http://aws.amazon.com/vpc/ >. Acesso em: 12/05/2011. ARMBRUST, Michael; FOX, Armando; GRIFFITH, Rean; JOSEPH, Anthony D.; KATZ, Randy H.; KONWINSKI, Andrew; LEE, Gunho; PATTERSON, David A.; RAVKIN, Ariel; STOICA, Ion; ZAHARIA, Matei. Above the Clouds: A Berkeley View of Cloud Computing. 2009. Disponível em: <http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-28.pdf>. Acesso em: 10/05/2011.

Page 53: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

53 BARBOSA, Fernando P.; CHARÃO, Andrea S. Grid Computing e Cloud Computing – Uma Relação de Diferenças, Semelhanças, Aplicabilidade e Possibilidades de Cooperação entre os dois Paradigmas. 2009. Disponível em: <http://www-usr.inf.ufsm.br/~andrea/elc888/artigos/artigo4.doc>. Acesso em: 16/05/2011. BOLSONI, Evandro Paulo; CARDOSO, Carla; SOUZA, Carlos Henrique Medeiros de. Computação Ubíqua, Cloud Computing e PLC para Continuidade Comunicacional diante de Desastres. 2009. Disponível em: <http://www.defesacivil.uff.br/defencil_5/Artigo_Anais_Eletronicos_Defencil_14.pdf>. Acesso em: 15/03/2011. BOMBONATO, Fábio. Computação em GRID: Uma Introdução. 2002. Disponível em: <http://www.lsi.usp.br/~paiva/sd/grid_computing.pdf>. Acesso em: 16/05/2011. BUNKER, Guy; THOMSON, Darren. Delivering Utility Computing: Business-driven IT Optimization. 2006. Disponível em: <http://ebookee.org/Delivering-Utility-Computing-Business-driven-IT-Optimization_1564.html>. Acesso em: 16/05/2011. CEARLEY, David W. Cloud Computing, Key Initiative Overview. Gartner Fellow. 2010. Disponível em: <http://www.gartner.com/it/initiatives/pdf/KeyInitiativeOverview_CloudComputing.pdf>. Acesso em: 12/03/11. CHAGANTI, Prabhakar. Serviços em nuvem para sua infraestrutura virtual, Parte 1: Infrastructure-as-a-Service (IaaS) e Eucalyptus. IBM. 2010. Disponível em: <http://www.ibm.com/developerworks/br/library/os-cloud-virtual1/>. Acesso: 15/03/11. CHANG, Fay; DEAN, Jeffrey; GHEMAWT, Sanjay; HSIEH, Wilson C.; WALLCH, Deborah A.; BURROWS, Mike; CHANDRA, Tushar; FIKES, Andrew; GUBER, Robert E. Bigtable: A Distributed Storage System for Structured Data. 2006. Disponível em: <http://static.googleusercontent.com/external_content/untrusted_dlcp/labs.google.com/pt-BR//papers/bigtable-osdi06.pdf >. Acesso: 11/05/11. CV, Convergência Digital. Quem precisa da computação nas nuvens? Disponível em: <http://convergenciadigital.uol.com.br/cgi/cgilua.exe/sys/start.htm?infoid=30588&sid=97 >. Acesso: 30/05/12. DEB, Brijesh. Avalie aplicativos corporativos para migração para a nuvem. IBM. 2010. Disponível em: <http://www.ibm.com/developerworks/br/cloud/library/cl-assessport/>. Acesso: 04/05/12. FOWLER, Martin. Refatoração: Aperfeiçoando o Projeto de Código Existente. Porto Alegre: Bookman, 2004. FREEDOM. Freedom-ERP. 2012. Disponível em: < https://sites.google.com/a/stpinf.com/freedom-erp/Home>. Acesso em: 11/05/2011. GOOGLE. Google Apps. 2011. Disponível em: <http://www.google.com/apps/intl/pt-BR/business/index.html>. Acesso em: 11/05/2011.

Page 54: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

54 GOOGLE. Google App Engine. 2011. Disponível em: <http://code.google.com/appengine>. Acesso em: 11/05/2011. GOOGLE. Google Calendar API. 2012. Disponível em: <http://code.google.com/apis/calendar>. Acesso em: 15/05/2012. GHEMAWAT, Sanjay; GOBIOFF, Howard; LEUNG, Shun-Tak. The Google File System. 2003. Disponível em: < http://static.googleusercontent.com/external_content/untrusted_dlcp/labs.google.com/pt-BR//papers/gfs-sosp2003.pdf >. Acesso em: 11/05/11. GREENWOOD, David; KHAJEJ-HOSSEINI, Ali; James Smith, SOMMERVILE, Ian; The Cloud Adoption Toolkit: Addressing the Challenges of Cloud Adoption in Enterprise. 2010. Disponível em: <http://arxiv.org/ftp/arxiv/papers/1003/1003.3866.pdf>. Acesso em: 15/03/11. HESS, Kenneth; NEWMAN, Amy. Practical Virtualization Solutions: Virtualization from the trenches. Boston: Pearson Education, 2009. (Negus software solutions series). Disponível em: <http://www.amazon.com/Practical-Virtualization-Solutions-Trenches/dp/0137142978/ref=sr_1_2?s=books&ie=UTF8&qid=1305662008&sr=1-2#reader_0137142978>. Acesso em: 17/05/2011. HOGAN, Mike. Cloud Computing & Databases: How databases can meet the demands of cloud computing. 2008. Disponível em: < http://www.scaledb.com/pdfs/CloudComputingDaaS.pdf>. Acesso em: 09/05/2011. HP. Testing as a Service (TaaS). 2011. Disponível em: <https://h10078.www1.hp.com/cda/hpms/display/main/hpms_content.jsp?zn=bto&cp=1-23^42007_4000_100__>. Acesso em: 12/05/2011. IBM. Autonomic Computing Q&A v1.1. 2011. Disponível em: <http://www.research.ibm.com/autonomic/overview/faqs.html#1>. Acesso em: 17/05/2011. KHAJEH-HOSSEINI, Ali; SOMMERVILE, Ian; SRIRAM, Ilango. Research Challenges for Enterprise Cloud Computing. 2010. Disponível em: < http://arxiv.org/ftp/arxiv/papers/1001/1001.3257.pdf >. Acesso em: 27/04/2011. LENK, Alexander; KLEMS, Markus; NIMIS, Jens; TAI, Stefan; SANDHOLM, Thomas. What’s Inside the Cloud? An Architectural Map of the Cloud Landscape. 2009. Disponível em: <http://portal.acm.org/citation.cfm?id=1564625>. Acesso em: 05/05/2011. MELL, Peter; GRANCE, Timothy. The NIST Definition of Cloud Computing (Draft) . 2011. NIST (National Institute of Standards and Technology). Disponível em: <http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf>. Acesso em: 14/03/11. MENS, Tom; TOURWÉ, Tom. A Survey of Software Refactoring. 2004. Disponível em: < http://ieeexplore.ieee.org/Xplore/login.jsp?url=http%3A%2F%2Fieeexplore.ieee.org%2Fiel5%2F32%2F28308%2F01265817.pdf%3Farnumber%3D1265817&authDecision=-203>. Acesso em: 14/05/11.

Page 55: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

55 MURPHY-HILL, Emerson. Improving Usability of Refactoring Tools. 2006. Disponível em: < http://portal.acm.org/citation.cfm?id=1176705 >. Acesso em: 14/05/11. NAGAPRASAD. S.; VINAYABABU, A.; MADHUKAR, K; VERGHESE, D. Marlene G.; MALLAIAH, V.; SREELATHA, A. REVIEWING SOME PLATFORMS IN CLOUD COMPUTING . 2010. Disponível em: <http://www.enggjournals.com/ijet/docs/IJET10-02-05-31.pdf>. 17/05/2011. RAMOS, Robson da Silva; ESES, Nicholas Istenes. O Impacto do Cloud Computing no Processo de Perícia Digital. 2010. Disponível em: < http://foren6.files.wordpress.com/2010/04/o-impacto-do-cloud-computing-no-processo-de-pericia-digital.pdf >. Acesso em: 15/03/2011. REIS, António D.; ROCHA, José F.; GAMEIRO, Atilio S.; CARVALHO, José P. Sistemas de Comunicação Síncrona e Assíncrona de Dados. 2006. Disponível em: <http://www2.fis.ua.pt/fisica2006_CD/pdf/FAP28%20-%20SISTEMAS%20DE%20COMUNICA%C3%87%C3%83O%20S%C3%8DNCRONA%20E%20ASS%C3%8DNCRONA%20DE.pdf>. Acesso em: 28/04/2012. SOUSA, Flávio R. C.; MOREIRA, Leonardo O.; MACHADO, Javam C. Computação em Nuvem: Conceitos, Tecnologias, Aplicações e Desafios. 2009. Disponível em: <http://www.es.ufc.br/~flavio/files/Computacao_Nuvem.pdf>. Acesso em: 15/03/2011. VAQUERO, Luis M.; RODERO-MERINO, Luis; CACERES, Juan; LINDNER, Maik. A Break in the Clouds: Towards a Cloud Definition. 2009. Disponível em: <http://ccr.sigcomm.org/drupal/files/p50-v39n1l-vaqueroA.pdf>. Acesso em: 28/04/2011. VERDI, Fábio Luciano; ROTHENBERG, Christian; MAGALHÃES, Rafael Pasquini e Maurício F. Novas Arquiteturas de Data Center para Cloud Computing. 2010. Disponível em: < http://www.dca.fee.unicamp.br/~chesteve/pubs/MC-DATA-CENTER-NETWORKS-SBRC2010.pdf>. Acesso em: 15/03/2011. SOMMERVILLE, Ian. Engenharia de Software. 8. ed. São Paulo: Pearson Education do Brasil, 2005. TAURION, Cezar. Cloud Computing: Computação em Nuvem: Transformando o mundo da Tecnologia da Informação. Rio de Janeiro: Brasport, 2009. UNIPRESS. Estratégias para migrar aplicações para a nuvem. 2011. Disponível em: <http://uni.com.br/knowledge_base/?p=1017>. Acesso: 16/04/12. XU, Dong; LIU, Hui. Reviewing some Cloud Computing Platforms. 2010. Disponível em: <http://www.academypublisher.com/proc/isnns10/papers/isnns10p161.pdf>. Acesso em: 05/05/2011. WANG, Lizhe; VON LASZEWSKI , KUNZE, Gregor Marcel; TAO, Jie; Cloud Computing: a Perspective Study. 2008. Disponível em: <https://ritdml.rit.edu/bitstream/handle/1850/7821/LWangConfProc11-16-2008.pdf?sequence=1>. Acesso em: 05/05/2011.

Page 56: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

56 WINDOWS AZURE. What is the Windows Azure platform?. 2011. Disponível em: <http://www.microsoft.com/windowsazure/>. Acesso em: 13/05/2011. YOSHIDA, Takahiko. Desempenho de aplicações na nuvem. 2011. Disponível em: <http://informationweek.itweb.com.br/5331/desempenho-de-aplicacoes-na-nuvem/>. Acesso: 16/04/12.

ZHANG, Qi; CHENG, Lu; BOUTABA, Raouf. Cloud computing: state-of-the-art and

research challenges. 2010. Disponível em: <http://cloud.pubs.dbs.uni-

leipzig.de/sites/cloud.pubs.dbs.uni-leipzig.de/files/fulltext.pdf >. Acesso em: 28/04/2011.

Page 57: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

57

APÊNDICE

Apêndice I – Código em Java do Método mandaMail

Apêndice II – Código em Java do Método enviarEmail

Apêndice III – Código em Java do Método novoAgd

Apêndice IV – Código em Java do Método insertAgd

Apêndice V – Código em Java do Método criarEvento

Apêndice VI – Código em Java do Método editaAgd

Apêndice VII – Código em Java do Método editarEvento

Page 58: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

58

I – Código em Java do Método mandaMail

1 private void mandaMail( String sTo, Session se ) { 2 3 state( "Preparando envio para: '" + sTo + "'" ); 4 try { 5 MimeMessage mes = new MimeMessage( se ); 6 mes.setFrom( new InternetAddress( txtDe.getVlrString() ) ); 7 mes.setSubject( txtAssunto.getVlrString() ); 8 mes.setSentDate( new Date() ); 9 mes.addRecipient( RecipientType.TO, new InternetAddress( sTo ) ); 10 11 BodyPart parte = new MimeBodyPart(); 12 13 parte.setText( txaMen.getVlrString() ); 14 15 Multipart multipart = new MimeMultipart(); 16 multipart.addBodyPart( parte ); 17 18 if ( fArq != null ) { 19 parte = new MimeBodyPart(); 20 FileDataSource orig = new FileDataSource( fArq ); 21 parte.setDataHandler( new DataHandler( orig ) ); 22 parte.setFileName( fArq.getName() ); 23 parte.setDisposition( rgTipo.getVlrStrin g().equals( "A" ) ? 24 Part.ATTACHMENT : Part.INLINE ); 25 multipart.addBodyPart( parte ); 26 } 27 mes.setContent( multipart ); 28 state( "Enviando dados..." ); 29 Transport.send( mes ); 30 state( "Envio OK..." ); 31 } catch ( MessagingException err ) { 32 Funcoes.mensagemErro( this , "Erro ao enviar mensagem para: " + 33 sTo + " \n" + err.getMessage() ); 34 err.getStackTrace(); 35 state( "Aguardando reenvio." ); 36 } 37 }

Page 59: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

59

II – Código em Java do Método enviarEmail

1 public void enviarEmail(List<String> emailAdressList, String a ssunto, 2 String campanha) 3 { 4 Properties props = new Properties(); 5 Session session = Session.getDefaultInstance (props, null ); 6 7 try { 8 Message msg = new MimeMessage(session); 9 10 msg.setFrom( new InternetAddress( "[email protected]" , "FREEDOM")); 11 msg.setSubject(assunto); 12 msg.setText(campanha); 13 14 for (String email: emailAdressList) 15 { 16 msg.addRecipient(Message.RecipientTy pe.TO, 17 new InternetAddress(email)); 18 Transport.send(msg); 19 } 20 21 } catch (AddressException e) { 22 // ... 23 } catch (MessagingException e) { 24 // ... 25 } catch (UnsupportedEncodingException e) { 26 // TODO Auto-generated catch block 27 e.printStackTrace(); 28 } 29 }

Page 60: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

60

III – Código em Java do Método novoAgd

1 private void novoAgd(Date dtini, Date dtfim) { 2 3 HashMap<?, ?> periodicidade = null ; 4 5 if (txtIdUsu.getVlrString().equals( "" ) || iCodAge == 0) { 6 Funcoes.mensagemInforma( this , 7 "O usuário ou o agente não foi identificado!" ); 8 return ; } 9 10 if (dtini == null && dtfim == null ) { 11 if (calendarpanel.getValue() == null ) { 12 Funcoes.mensagemInforma( this , 13 "Selecione uma data no painel!" ); 14 return ; 15 } 16 dtini = ( Date ) calendarpanel.getV alue(); 17 } 18 String sRets[]; 19 DLNovoAgen dl = new DLNovoAgen(txtIdUsu.getVlrString(), 20 txtIdUsu.getVlrString(), dtini, dtf im, this , true ); 21 dl.setConexao(con); 22 dl.setVisible( true ); 23 24 if (dl.OK) { 25 sRets = dl.getValores(); 26 periodicidade = dl.getPeriodicidade(); 27 String tipo = ( String ) periodicidade. get( "TIPO" ); 28 29 try { 30 if ( "NR" .equals(tipo)) { 31 insertAgd(sRets[1]+ ":00" ,sRets[3]+ ":00" , sRets[4],sRets[5], 32 sRets[6], sRets[7], sRets[8], sRets [9],sRets[10], 33 iCodFilialAge, iCodAge, sTipoAge, s Rets[11],sRets[12], 34 sRets[13],Funcoes.strDateToSqlDate( sRets[0]), 35 Funcoes.strDateToSqlDate(sRets[2]), false ,0, null ,sRets[14]); 36 } else { 37 Integer codagdar = null ; 38 Date dtlimite = ( Date ) periodicid ade.get( "LIMITE" ); 39 40 Calendar clrepete = new GregorianCalendar(); 41 clrepete.setTime(Funcoes.strDateToD ate(sRets[0])); 42 43 long numdias = Funcoes.getNumDias(clrepete.getTime(), d tlimite); 44 45 int cont = 0; 46 47 while (numdias > 0) { 48 numdias = Funcoes.getNumDias(clrepe te.getTime(), dtlimite); 49 if ( "TD" .equals(tipo)) { 50 codagdar= insertAgd(sRets[1]+ ":00" ,sRets[3]+ ":00" ,sRets[4], 51 sRets[5], sRets[6], sRets[7], sRets[8] , sRets[9], sRets[10], 52 iCodFilialAge,iCodAge,sTipoAge,sRets[1 1],sRets[12],sRets[13], 53 Funcoes.dateToSQLDate(clrepete.getTime ()), 54 Funcoes.dateToSQLDate(clrepete.getTime ()), true , cont,codagdar, 55 sRets[14]); 56 clrepete.add(Calendar.DAY_OF_MO NTH, 57 ( Integer ) periodicida de.get( "INTERVALO" )); 58 } 59 else if ( "TS" .equals(tipo)){

Page 61: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

61

60 if (clrepete.get(Calendar.DAY_OF_WEEK) < Calendar.SATU RDAY) { 61 codagdar = insertAgd(sRets[1] + ":00" , sRets[3] + ":00" , 62 sRets[4], sRets[5], sRets[6], sRet s[7],sRets[8], sRets[9], 63 sRets[10],iCodFilialAge,iCodAge,sT ipoAge,sRets[11], 64 sRets[12],sRets[13],Funcoes.dateToSQLD ate(clrepete.getTime()), 65 Funcoes.dateToSQLDate(clrepete.getTime ()), true ,cont,codagdar, 66 sRets[14]); 67 } 68 clrepete.add(Calendar.DAY_OF_MO NTH, 1); 69 } 70 else if ( "T1" .equals(tipo)){ 71 if ((clrepete.get(Calendar.DAY_OF_WEEK) == Calendar.M ONDAY) || 72 (clrepete.get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY)|| 73 ( clrepete.get(Calendar.DAY_OF_WEEK ) == Calendar.FRIDAY )){ 74 codagdar = insertAgd(sRets[1] + ":00" ,sRets[3] + ":00" , 75 sRets[4], sRets[5],sRets[6],sRe ts[7],sRets[8],sRets[9], 76 sRets[10], iCodFilialAge, i CodAge, sTipoAge, 77 sRets[11], sRets[12], sRets [13], 78 Funcoes.dateToSQLDate(clrepe te.getTime()), 79 Funcoes.dateToSQLDate(clrepe te.getTime()), true ,cont, 80 codagdar, sRets[14]); 81 } 82 clrepete.add(Calendar.DAY_OF_MO NTH, 1); 83 } 84 else if ( "T2" .equals(tipo)) { 85 if( (clrepete.get(Calendar.DAY_OF_WEEK)==Calendar.TUESD AY) || 86 (clrepete.get(Calendar.DAY_OF_WEEK )== Calendar.THURSDAY)){ 87 codagdar = insertAgd(sRets[1 ]+ ":00" ,sRets[3]+ ":00" , 88 sRets[4],sRets[5],sRets[ 6],sRets[7],sRets[8], 89 Rets[9],sRets[10],iCodFil ialAge,iCodAge,sTipoAge, 90 sRets[11], sRets[12], sR ets[13], 91 Funcoes.dateToSQLDate(cl repete.getTime()), 92 Funcoes.dateToSQLDate(clrepet e.getTime()), true , cont, 93 codagdar, sRets[14]); 94 } 95 clrepete.add(Calendar.DAY_OF_MO NTH, 1); 96 } 97 else if ( "SE" .equals(tipo)) { 98 codagdar = insertAgd(sRets[1]+ ":00" ,sRets[3]+ ":00" ,sRets[4], 99 sRets[5], sRets[6], sRets [7], sRets[8], sRets[9], 100 sRets[10], iCodFilialAge, iCodAge, sTipoAge, 101 sRets[11], sRets[12], sRe ts[13], 102 Funcoes.dateToSQLDate(clr epete.getTime()), 103 Funcoes.dateToSQLDate(clrepete .getTime()), true , cont, 104 codagdar, sRets[14]); 105 clrepete.add(Calendar.WEEK_OF_Y EAR, ( Integer ) 106 periodicidade.get( "INTERVALO" )); 107 } 108 else if ( "ME" .equals(tipo)){ 109 codagdar = insertAgd(sRets[1]+ ":00" ,sRets[3]+ ":00" ,sRets[4], 110 sRets[5], sRets[6], sRets [7], sRets[8], sRets[9], 111 sRets[10],iCodFilialAge,iCod Age, sTipoAge,sRets[11], 112 sRets[12], sRets[13], 113 Funcoes.dateToSQLDate(c lrepete.getTime()), 114 Funcoes.dateToSQLDate(clrepet e.getTime()), true , cont, 115 codagdar, sRets[14]); 116 clrepete.add(Calendar.M ONTH, ( Integer ) 117 periodicidade.g et( "INTERVALO" )); 118 } 119 else if ( "AN" .equals(tipo)) { 120 codagdar = insertAgd(sRets[1] + ":00" , sRets[3] + ":00" ,

Page 62: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

62

121 sRets[4], sRets[5], sRets [6], sRets[7], sRets[8], 122 sRets[9], sRets[10], iCodFilia lAge, iCodAge, sTipoAge, 123 sRets[11], sRets[12], s Rets[13], 124 Funcoes.dateToSQLDate(clr epete.getTime()), 125 Funcoes.dateToSQLDate(clrepete .getTime()), true , cont, 126 codagdar, sRets[14]); 127 clrepete.add(Calendar.YEAR, ( I nteger ) 128 periodicidade.get( "INTERVALO" )); 129 } 130 cont++; 131 } 132 } 133 134 if ( "S" .equals(sRets[15])) { // Enviar email 135 enviarEmail(sRets[9], sRets[10], sR ets[4], // Assunto 136 sRets[5], // Descrição do atendimento 137 sRets[0], // Data Inicial 138 sRets[2], // Data Final 139 sRets[1], // Hora Inicial 140 sRets[3] // Hora Final 141 ); 142 } 143 144 con.commit(); 145 146 } 147 catch (SQLException err) { 148 Funcoes.mensagemErro( this , "Erro ao salvar o agendamento! \n" + 149 err.getMessage(), true , con, err); 150 err.printStackTrace(); 151 } 152 153 setaPeriodo(rgPeriodo.getVlrString()); 154 } 155 dl.dispose(); 156 }

Page 63: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

63

IV – Código em Java do Método insertAgd

1 private Integer insertAgd(String hini, String hfim, String assunto, 2 String descricao, String codfilialagd,String ti poagd,String prioridade, 3 String codagente, String tipoagente,Inte ger codfilialagt, 4 Integer codagentee, String tipoagentee, String controleacesso, 5 String status, String motivo, Date dtini, Dat e dtfim, boolean repete, 6 int cont, Integer codagdar,String diatodo) { 7 8 String sql = "SELECT IRET FROM " 9 + "SGSETAGENDASP(0,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?, ?,?,?)" ; 10 ResultSet rs = null ; 11 Integer ret = codagdar; 12 try { 13 14 PreparedStatement ps = con.prepareSt atement(sql); 15 ps.setInt(1, Aplicativo.iCodEmp); 16 ps.setDate(2, Funcoes.dateToSQLDate( dtini)); 17 ps.setString(3, hini); 18 ps.setDate(4, Funcoes.dateToSQLDate( dtfim)); 19 ps.setString(5, hfim); 20 ps.setString(6, assunto); 21 ps.setString(7, descricao); 22 ps.setString(8, codfilialagd); 23 ps.setString(9, tipoagd); 24 ps.setString(10, prioridade); 25 ps.setString(11, codagente); 26 ps.setString(12, tipoagente); 27 ps.setInt(13, codfilialagt); 28 ps.setInt(14, codagentee); 29 ps.setString(15, tipoagente); 30 ps.setString(16, controleacesso); 31 ps.setString(17, status); 32 ps.setString(18, motivo); 33 34 if (repete && cont > 0 && codagdar != null ) { 35 ps.setInt(19, codagdar); 36 } 37 else { 38 ps.setNull(19, Types.INTEGER ); 39 } 40 41 ps.setString(20, diatodo); // indica se é de dia todo. 42 43 rs = ps.executeQuery(); 44 45 if (rs.next() && cont == 0) { 46 ret = rs.getInt( "IRET" ); 47 } 48 49 ps.close(); 50 } 51 catch (Exception e) { 52 e.printStackTrace(); 53 } 54 return ret; 55 }

Page 64: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

64

V – Código em Java do Método criarEvento

1 public Evento criarEvento(Evento evento, Calendario calen dario) 2 { 3 Evento result = evento; 4 try 5 { 6 String urlString = EVENTS_FEED_BASE_URL.re placeAll( "#CalendarId#" , 7 getShortCalendarId(calendario.ge tId())); 8 URL postUrl = new URL(urlString); 9 CalendarEventEntry entry = new CalendarEventEntry(); 10 buildEventEntry(entry, evento); 11 entry = CalendarService.insert(postUrl, entry); 12 evento = parseEvent(entry); 13 } 14 catch (Exception e) 15 { 16 e.printStackTrace(); 17 } 18 return result; 19 }

Page 65: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

65

VI – Código em Java do Método editaAgd

1 public void editaAgd(String codagd, int codageemit, String tipoageemit, 2 DbConnection con, Component cOrig) { 3 try { 4 String sSQL = "SELECT A.DTAINIAGD, A.HRINIAGD, A.DTAFIMAGD,A.HRFI MAGD," 5 + "A.ASSUNTOAGD, A.DESCAGD, A.CAAGD, A.PRIORAGD, " 6 + "A.CODTIPOAGD, A.CODAGE, A.RESOLUCAOMOTIVO," 7 + "U1.IDUSU IDUSUEMIT,A.SITAGD, U2.IDUSU, A.CODAGEEMI T, " 8 + "A.DIATODO FROM SGAGENDA A, SGUSUARIO U1, SGUSUARIO U2 " 9 + "WHERE A.CODEMP=? AND A.CODFILIAL=? AND A.CODAGD=? " 10 + "AND U1.CODEMPAE=A.CODEMPAE AND " 11 + "U1.CODFILIALAE=A.CODFILIALAE " 12 + "AND U1.CODAGE=A.CODAGEEMIT AND U1.TIPOAGE=A.TIPOAGEEMIT " 13 + "AND U2.CODEMPAE=A.CODEMP AND U2.CODFILIALAE=A.CODFILIAL" 14 + "AND U2.CODAGE=A.CODAGE AND U2.TIPOAGE=A.TIPOAGE " ; 15 16 PreparedStatement ps = con.prepareState ment(sSQL); 17 ps.setInt(1, Aplicativo.iCodEmp); 18 ps.setInt(2, ListaCampos.getMasterFilia l( "SGAGENDA")); 19 ps.setInt(3, Integer.parseInt(codagd)); 20 21 ResultSet rs = ps.executeQuery(); 22 23 if (rs.next()) { 24 Calendar calIni = new GregorianCalendar(); 25 Calendar calFim = new GregorianCalendar(); 26 27 DLNovoAgen dl = new DLNovoAgen(rs.getString( "IDUSUEMIT" ), 28 rs.getString( "IDUSU" ), rs.getDate( "DTAINIAGD" ), 29 rs.getDate( "DTAFIMAGD"), cOrig, false ); 30 dl.setConexao(con); 31 32 calIni.setTime(rs.getTime( "HRINIAGD" )); 33 calFim.setTime(rs.getTime( "HRFIMAGD")); 34 35 String codage = rs.getString( "CODAGE"); 36 String dtainiagd = 37 StringFunctions.sqlDateToStrDate(rs .getDate( "DTAINIAGD" )); 38 String hiniagd = 39 StringFunctions.strZero( "" + 40 alIni.get(java.util.Calendar. HOUR_OF_DAY), 2) + ":" + 41 StringFunctions.strZero( "" + 42 calIni.get(java.util.Calend ar.MINUTE), 2); 43 String dtafimagd = 44 StringFunctions.sqlDateToStrDate(rs .getDate( "DTAFIMAGD")); 45 String hfimagd = StringFunctions.st rZero( "" + 46 calFim.get(java.util.Calendar. HOUR_OF_DAY), 2) + ":" + 47 StringFunctions.strZero( "" + 48 calFim.get(java.util.Calend ar.MINUTE), 2); 49 String assuntoagd = rs.getString( "ASSUNTOAGD"); 50 String descagd = rs.getString( "DESCAGD"); 51 String caagd = rs.getString( "CAAGD"); 52 String prioragd = rs.getString( "PRIORAGD"); 53 String codtipoagd = rs.getString( "CODTIPOAGD"); 54 String sitagd = rs.getString( "SITAGD" ); 55 String motivoagd = rs.getString( "RESOLUCAOMOTIVO"); 56 int codageemitagd = rs.getInt( "CODAGEEMIT"); 57 String diatodo = rs.getString( "DIATODO" ); 58 59 dl.setValores( new String[]{codage,dtainiagd,hiniagd, dtafimagd,

Page 66: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

66

60 hfimagd, assuntoagd, descagd, caagd , prioragd, codtipoagd, 61 sitagd, motivoagd, diatodo }); 62 63 dl.setVisible( true ); 64 65 if (dl.OK) { 66 String[] sRets = dl.getValores( ); 67 68 if (Integer.parseInt(codage) == iCodAge || 69 codageemit == codageemitagd) { 70 71 try { 72 sSQL = "EXECUTE PROCEDURE SGSETAGENDASP" 73 + "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" ; 74 PreparedStatement ps2 = con. prepareStatement(sSQL); 75 ps2.setInt(1, Integer.parseI nt(( String ) codagd)); 76 ps2.setInt(2, Aplicativ o.iCodEmp); // código da 77 // empresa 78 ps2.setDate(3, Funcoes.strDa teToSqlDate(sRets[0])); 79 // inicial 80 ps2.setString(4, sRets[1] + ":00" ); // hora inicial 81 ps2.setDate(5, Funcoes.strDa teToSqlDate(sRets[2])); 82 // final 83 ps2.setString(6, sRets[3] + ":00" ); // hora final 84 ps2.setString(7, sRets[4]); // assunto 85 ps2.setString(8, sRets[5]); // descrição 86 ps2.setString(9, sRets[6]); // filial do tipo de 87 // agendamento 88 ps2.setString(10, sRets[7]); // tipo 89 ps2.setString(11, sRets[8]); // prioridade 90 ps2.setString(12, sRets[9]); // código do agente 91 ps2.setString(13, sRets[10]) ; // tipo do agente 92 ps2.setInt(14, 93 ListaCampos.getMasterFilial( "SGAGENTE")); 94 // do 95 // agente 96 // emitente 97 ps2.setInt(15, codageemit); // código do agente 98 // emitente 99 ps2.setString(16, tipoageemi t); // tipo 100 // emitente 101 ps2.setString(17, sRets[11]) ; // controle acesso 102 ps2.setString(18, sRets[12]) ; // status 103 ps2.setString(19, sRets[13]) ; // status 104 ps2.setNull(20, Types.INTEGE R); 105 ps2.setString(21, sRets[14]) ; // status 106 107 ps2.execute(); 108 ps2.close(); 109 110 con.commit(); 111 } 112 catch (SQLException err) { 113 Funcoes.mensagemErro( null , 114 "Erro ao salvar o agendamento! \n" + 115 err.getMessage( ), true , con, err); 116 } 117 } 118 } 119 dl.dispose(); 120 }

Page 67: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

67

121 rs.close(); 122 ps.close(); 123 124 con.commit(); 125 } 126 catch (SQLException err) { 127 Funcoes.mensagemErro( null , "Erro ao buscar informações! \n" + 128 err.getMessage(), true , con, err); 129 err.printStackTrace(); 130 } 131 }

Page 68: COMPUTAÇÃO NAS NUVENS: ESTUDO DE CASO DE …cdn.ffb.edu.br/sites/default/files/tcc_-_2012_1_-_sergio_carvalho... · Monografia apresentada para obtenção dos ... sistemas, sempre

68

VII – Código em Java do Método editarEvento

1 public Evento editarEvento(Evento evento) 2 { 3 Evento result = evento; 4 try 5 { 6 CalendarEventEntry entry = getUpdatedEnt ry(evento); 7 buildEventEntry(entry, evento); 8 entry = entry.update(); 9 evento = parseEvent(entry); 10 } 11 catch (Exception e) 12 { 13 e.printStackTrace(); 14 } 15 return result; 16 }