• Nenhum resultado encontrado

Integração de aplicações empresariais no contexto da computação em nuvem

N/A
N/A
Protected

Academic year: 2021

Share "Integração de aplicações empresariais no contexto da computação em nuvem"

Copied!
61
0
0

Texto

(1)

Universidade Regional do Noroeste do

Estado do Rio Grande do Sul – UNIJUI

Grupo de Pesquisa em Computação Aplicada (GCA)

Igor Gamste Haugg

Integração de Aplicações Empresariais no

Contexto da Computação em Nuvem

Ijuí, RS, Brasil

2014

(2)

Igor Gamste Haugg

Integração de Aplicações Empresariais no Contexto da

Computação em Nuvem

Trabalho de Conclusão de Curso do curso de Ciência da Computação da Universidade Re-gional do Noroeste do Estado do Rio Grande do Sul.

Orientador: Dr. Rafael Z. Frantz

Ijuí, RS, Brasil

2014

(3)

Igor Gamste Haugg

Integração de Aplicações Empresariais no Contexto da

Computação em Nuvem

Trabalho de Conclusão de Curso do curso de Ciência da Computação da Universidade Re-gional do Noroeste do Estado do Rio Grande do Sul.

Dr. Rafael Z. Frantz

Orientador

Dra. Fabricia Roos-Frantz

Convidado

Ijuí, RS, Brasil

2014

(4)

Agradecimentos

Agradeço ao CNPq pela concessão de uma bolsa de Iniciação em Desenvolvimento Tecnológico e Inovação (PIBITI) que permitiu a realização da pesquisa, a qual foi utilizada para o desenvolvimento deste trabalho de conclusão de curso.

Agradeço também a todos os professores do grupo de pesquisa GCA. Em especial ao orientador deste trabalho, o professor Rafael Z. Frantz pelo auxílio no desenvolvimento do trabalho.

(5)

Resumo

Atualmente existe uma grande quantidade de empresas que necessitam realizar integra-ção entre suas aplicações. Essa necessidade ocorre porque as aplicações utilizadas são normalmente desenvolvidas por diferentes empresas e seguindo diferentes tecnologias. Integrar aplicações é fazer com que diferentes aplicações que não foram desenvolvidas com o objetivo de integração, possam colaborar e dar suporte a novos processos de negócio. Na computação em nuvem empresas oferecem a um baixo custo recursos como armazenamento e processamento por meio da Internet. Os provedores disponibilizam e cobram por estes recursos em função das características dos serviços contratados por seus clientes. Estas características podem ser representadas utilizando modelos ortogonais de variabilidade. Uma integração de aplicações empresarias pode ser implantada em servidores de compu-tação em nuvem, porém esta é uma tarefa complicada porque atualmente existem uma grande quantidade de provedores e cada um possui diferentes planos de serviço. Desta forma, é necessário conhecer as características destes provedores e seus planos de serviço. Neste trabalho é proposto um framework para comparação de provedores de computação em nuvem e uma comparação entre os provedores Amazon, Google e Microsoft. Também será apresentada uma modelagem dos tipos de serviço de um dos provedores comparados, utilizando a linguagem OVM. A partir do estudo de comparação dos provedores, observa-se que o provedor Amazon é o mais adequado para implantação de soluções de integração, pois este provedor disponibiliza maior quantidade de planos de serviço para contratação. Possui maior variedade de tipos de instancias. Também existem mais recursos de segurança disponíveis, por exemplo, detecção de intrusos, tolerância a falhas e criptografia.

Palavras-chaves: Integração de aplicações empresariais, Computação em nuvem, Tipos

(6)

Abstract

Currently there is a lot of companies that need to make integration between their ap-plications. This need is because the applications used are usually developed by different companies and following different technologies. Integrating applications is to make different applications that were not developed with the goal of integration, can collaborate and support new business processes. In cloud computing companies offer a low-cost resources such as storage and processing through the Internet. Providers make available and charge for these resources according to the characteristics of the services contracted by their clients. These characteristics can be represented using orthogonal variability models. Integration of enterprise applications can be deployed to cloud computing servers, but this is a difficult task because there are currently a large number of providers and each one has different service plans. Thus, it is necessary to know the characteristics of these providers and their service plans. This work proposes a framework for comparison of cloud computing providers and makes a comparison of Amazon, Google and Microsoft providers.

Key-words: Enterprise application integration, cloud computing, service types, orthogonal

(7)

Resumen

Actualmente hay una gran cantidad de empresas que necesitan hacer la integración entre sus aplicaciones. Esta necesidad se debe a que las aplicaciones que se utilizan suelen ser desarrollados por distintas empresas y siguien diferentes tecnologías. Integrar aplicaciones es hacer que diferentes aplicaciones no desarrolladas con el objetivo de la integración, puedan colaborar y apoyar a los nuevos procesos de negocio. En la computación en nube compañías ofrecen recursos de bajo coste, tales como el almacenamiento y el procesamiento por medio de la Internet. Los proveedores ofrecen y cobran por estos recursos según las características de los servicios contratados por sus clientes. Estas características se pueden representar mediante modelos de variabilidad ortogonales. La integración de aplicaciones empresariales se puede implementar en servidores de computación en nube, pero esto es una tarea complicada, pues en la actualidad hay un gran número de proveedores y cada uno tiene diferentes planes de servicio. Por lo tanto, es necesario conocer las características de estos proveedores y sus planes de servicio. En este trabajo se propone un framework para la comparación de los proveedores de computación en nube y también se hace una comparación entre los proveedores de Amazon, Google y Microsoft.

Palabras-claves: Integración de aplicaciones, computación en nube, tipos de servicios,

(8)

Lista de ilustrações

Figura 1 – Exemplo de solução de integração de aplicações empresariais. . . 17

Figura 2 – Exemplo de compartilhamento de dados. . . 18

Figura 3 – Exemplo de chamada de procedimento remoto. . . 21

Figura 4 – Exemplo de sistema baseado em mensagens. . . 22

Figura 5 – Arquitetura dos serviços da computação em nuvem. . . 23

Figura 6 – Exemplo de uma solução de integração na nuvem. . . 29

Figura 7 – Construtores OVM.. . . 32

Figura 8 – Exemplo de OVM (ROOS-FRANTZ, 2011). . . 32

Figura 9 – Modelo das características gerais. . . 43

Figura 10 – Modelo IaaS. . . 44

Figura 11 – Modelo PaaS. . . 44

(9)

Lista de tabelas

Tabela 1 – Técnicas de compartilhamento de dados . . . 20

Tabela 2 – Técnicas de compartilhamento de funcionalidades . . . 22

Tabela 3 – Propriedades Gerais . . . 38

Tabela 4 – Propriedades de Infraestrutura como Serviço. . . 39

Tabela 5 – Instancias de Propósito Geral . . . 40

Tabela 6 – Instancias de Intensa Utilização de Processamento . . . 40

Tabela 7 – Instancias de Intensa Utilização de Memória . . . 41

Tabela 8 – Propriedades de Plataforma como Serviço. . . 41

(10)

Sumário

1 INTRODUÇÃO . . . 11 1.1 Motivação . . . 12 1.2 Objetivos . . . 13 1.2.1 Geral . . . 13 1.2.2 Específicos . . . 13 1.3 Metodologia . . . 14 1.4 Contribuições . . . 14 1.5 Estrutura do documento. . . 14 2 REFERENCIAL TEÓRICO . . . 15

2.1 Integração de Aplicações Empresariais . . . 15

2.1.1 Compartilhamento de Dados . . . 18 2.1.2 Compartilhamento de Funcionalidades . . . 19 2.2 Computação em Nuvem . . . 22 2.2.1 Serviços . . . 24 2.2.2 Tipos de Nuvem . . . 26 2.2.3 Tecnologias Relacionadas . . . 27

2.2.4 Integração de Aplicações na Nuvem . . . 28

2.3 Linha de Produtos de Software . . . 29

2.3.1 Modelos de Variabilidade . . . 30

2.3.2 Modelo de Características . . . 30

2.3.3 Modelo Ortogonal de Variabilidade . . . 31

2.4 Resumo do Capítulo . . . 33

3 FRAMEWORK DE COMPARAÇÃO . . . 34

3.1 Propriedades Gerais . . . 34

3.2 Propriedades de Infraestrutura como um Serviço . . . 35

3.3 Propriedades de Plataforma como um Serviço . . . 36

3.4 Propriedades de Software como um Serviço . . . 37

3.5 Resumo do Capítulo . . . 37

4 COMPARAÇÃO DOS PROVEDORES ESTUDADOS . . . 38

4.1 Propriedades Gerais . . . 38

4.2 Propriedades de Infraestrutura como um Serviço . . . 39

4.3 Propriedades de Plataforma como um Serviço . . . 41

(11)

4.5 Resumo do Capítulo . . . 42

5 MODELAGEM DOS PLANOS DE SERVIÇO . . . 43

5.1 Características Gerais . . . 43

5.2 Características de Infraestrutura como um Serviço . . . 44

5.3 Características de Plataforma como um Serviço . . . 44

5.4 Características de Software como um Serviço . . . 44

5.5 Resumo do Capítulo . . . 45

Conclusão. . . 46

Referências . . . 47

(12)

11

1 Introdução

Frequentemente as empresas precisam integrar as aplicações existentes em seus ecossistemas de software. A integração é necessária para dar suporte aos novos processos de negócios, reutilizando funcionalidades presentes nas suas aplicações atuais ou para sincronizar duas ou mais aplicações dentro de seus ecossistemas de software. Normalmente essas empresas possuem aplicações que foram desenvolvidas de forma independente, personalizadas ou adquiridas de terceiros, sem que tenham sido projetadas pensando em ser reutilizadas. Integrar aplicações empresariais é fazer com que diferentes aplicações que não foram concebidas tendo em mente sua integração, possam colaborar e dar suporte a processos de negócio (HOHPE; WOOLF,2004).

A computação em nuvem representa um novo paradigma no qual recursos como armazenamento e processamento podem ser acessados através da internet e consumidos sob demanda, reduzindo enormemente o custo das empresas em infraestrutura de TI de alta capacidade (ZHANG; CHENG; BOUTABA, 2010). Seus principais tipos de serviço são: Infraestrutura como um serviço (IaaS), Plataforma como um serviço (PaaS) e Software como um serviço (SaaS). IaaS é definida como a contratação de recursos computacionais como um serviço, tais como: servidores, roteadores, ou sistemas de armazenamento ( GIB-SON et al., 2012). PaaS consiste em disponibilizar plataformas de desenvolvimento de software utilizando os recursos da infraestrutura da computação em nuvem, como por exemplo, frameworks e linguagens de programação (JADEJA; MODI, 2012). SaaS busca disponibilizar softwares pelos quais os usuários pagam por seu uso e não por sua licença e que estão disponíveis para serem acessados através de um navegador web (GONG et al., 2010).

Implantar soluções de integração em servidores de computação em nuvem é uma tarefa complicada, pois atualmente existem diversos provedores e cada um possui diferentes planos de serviço, tornando difícil a escolha de qual plano melhor se ajusta às necessidades de uma solução de integração e que seja economicamente mais vantajoso. Portanto, é essencial conhecer as características destes provedores e seus planos de serviço. A pesquisa desenvolvida neste trabalho buscou identificar um conjunto de propriedades, que foram classificadas em quatro categorias. A partir destas propriedades buscou-se construir um framework de comparação de provedores de computação em nuvem, desde uma perspectiva de integração de aplicações. A primeira categoria agrupa propriedades comuns entre os tipos de serviço, ou seja, estão presentes nos serviços de IaaS, PaaS e SaaS. A segunda categoria agrupa as propriedades relacionadas com o serviço de infraestrutura. A terceira categoria agrupa as propriedades relacionadas com o serviço de plataforma. A quarta categoria agrupa as propriedades relacionadas com o serviço de software. Com o objetivo

(13)

Capítulo 1. Introdução 12

de validar o framework, foram comparados três provedores de computação em nuvem com ampla utilização em escala global, sendo eles: Amazon, Google e Microsoft.

1.1

Motivação

Atualmente existem diversos provedores de computação em nuvem, cada provedor possui diferentes planos que possibilitam implantar soluções de integração. Para ser possível a escolha de um provedor ou plano de serviço de forma automática é necessário conhecer o modelo que representa estes planos. Estes modelos não estão disponíveis e, portanto, precisam ser inferidos.

Os assuntos abordados neste trabalho, também foram abordados em diversos trabalhos, como por exemplo, em (PENG et al.,2009) são comparadas as características de diferentes plataformas de computação em nuvem, expondo as características através de tabelas com dados referentes a cada provedor analisado. Foram comparadas as plataformas: AbiCloud, Eucalyptus, Nimbus e OpenNebula. A diferença com o presente trabalho está em que os autores focam na análise de plataformas de computação e apresentam as características por meio de tabelas. No trabalho de (QUINTON et al.,2013) é realizado uma modelagem através de Feature Models para representar a variabilidade no gerenciamento e na criação de configurações de computação em nuvem. Também são utilizadas ontologias para modelar as variadas semânticas de sistemas em nuvem. A abordagem realizada neste trabalho leva em consideração requisitos técnicos e requisitos não funcionais para fornecer um conjunto de configurações de multi-nuvem, sendo realizada através do framework Saloon. Sua principal diferença com o presente trabalho está no foco da modelagem e na linguagem utilizada.

O artigo de (IOSUP; YIGITBASI; EPEMA,2011) aborda o tema computação em nuvem, que é um paradigma que promete eliminar a necessidade das empresas manter um alto custo com hardware. Para que este potencial se torne realidade, em seu trabalho o autor realizou uma análise da dependência dos serviços de nuvem. Foram analisados os traços de performance de web services da Amazon, e Google App Engine, buscando avaliar o impacto da variabilidade de performance em larga escala. Nesta pesquisa os autores descobriram que metade dos serviços da nuvem exibiam padrões anuais e diários, mas também a maioria dos serviços tinham períodos de performance estável. Ao realizar uma simulação baseada foi avaliado o impacto da variabilidade, a qual foi observada por estudantes de computação em nuvem. A partir da simulação realizada foi concluído que o impacto da performance da variabilidade depende da aplicação, evidenciando que a variabilidade de performance pode ser um fator importante na seleção do provedor de computação em nuvem. O nosso trabalho tem como principal diferença o foco nas características dos tipos de serviço de computação em nuvem, buscando apresentar os

(14)

Capítulo 1. Introdução 13

aspectos comuns e variáveis, bem como uma proposta de framework para comparação de provedores de computação em nuvem.

No trabalho de (AOYAMA; KURONO, 2013), os autores realizaram um estudo sobre a arquitetura orientada a metadados para serviços em nuvem "vários inquili-nos"(multitenant), a qual permite variabilidade dinâmica de serviços em uma única instância, com o objetivo de englobar requisitos de diversos inquilinos sem requisitar o desenvolvimento de aplicações, apenas gerando aplicações em tempo de execução de acordo com as exigências do inquilino individual. A variabilidade entre os requisitos faz com que a concepção de serviço multitenant se torne complicada. Por isso, no artigo é proposto uma modelagem utilizando OVM estendido para modelar a variabilidade e dependências dos serviços multitenant em dois níveis: meta nível e nível de base. A variabilidade é realizada através de um estudo de caso do desenvolvimento de uma aplicação na Salesforce.com e Force.com. Este trabalho se diferencia do nosso, porque nele é realizado uma modelagem dos serviços multitenant enquanto que o nosso trabalho tem como objetivo comparar as características dos tipos de serviço.

1.2

Objetivos

A seguir são descritos o objetivo geral e os específicos que buscamos atingir com esta pesquisa.

1.2.1

Geral

Contribuir com a redução dos custos da implantação de soluções de integração de aplicações empresariais em infraestrutura de computação em nuvem.

1.2.2

Específicos

• Revisar a bibliografia sobre integração de aplicações empresariais e computação em nuvem.

• Elaborar um framework de comparação de alguns provedores.

• Identificar os planos de serviço de computação em nuvem existentes. • Realizar uma análise das características dos planos de serviço.

• Inferir o modelo que represente as características comuns e variáveis de um provedor de computação em nuvem.

(15)

Capítulo 1. Introdução 14

1.3

Metodologia

A realização deste trabalho está dividida em quatro etapas. A primeira etapa consiste em uma revisão da literatura sobre integração de aplicações empresariais e computação em nuvem, a partir de bases bibliográficas de artigos científicos e livros especializados nos temas da pesquisa. A segunda etapa abrange um estudo detalhado dos sites dos principais provedores de computação em nuvem, com o objetivo de extrair informações a serem utilizadas no desenvolvimento do framework de comparação e também na comparação entre os provedores. A terceira etapa centra-se na elaboração do framework de comparação e na sua validação a fim de obter dados de provedores de computação em nuvem e analisá-los. A quarta etapa envolve a criação de um modelo para representação da variabilidade dos planos de serviço de computação em nuvem.

1.4

Contribuições

A partir da elaboração deste trabalho foi possível realizar algumas publicações de resumos e artigos. A seguir são descritas as publicações.

1. HAUGG, I. G. ; FRANTZ, R. Z. ; ROOS-FRANTZ, F. . Um Estudo da Variabilidade

dos Tipos de Serviço do Provedor de Computação em Nuvem Amazon. In: XXVI

Congresso Regional de Iniciação Científica e Tecnológica em Engenharia (CRICTE), 2014, Alegrete - RS. 2014. p. 1-4.

2. HAUGG, I. G. ; FRANTZ, R. Z. . Implantação de Soluções de Integração de

Apli-cações em Provedores de Computação em Nuvem. In: XXVI Salão de Iniciação

Científica da UFRGS, 2014, Porto Alegre - RS. 2014. p. 1-2.

3. HAUGG, I. G. ; FRANTZ, R. Z. ; ROOS-FRANTZ, F. ; SAWICKI, S. . Uma

Proposta de Framework para Comparação de Provedores de Computação em Nuvem desde uma Perspectiva de Integração de Aplicações. In: IV Seminário de Inovação

e Tecnologia da UNIJUI, 2014, Ijuí - RS. 2014. p. 1-5.

1.5

Estrutura do documento

A seguir, no capítulo 2 estão descritos os principais conceitos necessários para o desenvolvimento do trabalho, os conceitos de integração de aplicações empresariais, computação em nuvem e modelos de variabilidade. No capítulo 3 será demonstrado o framework desenvolvido, com a descrição das propriedades elencadas. O capítulo 4 demonstra a comparação entre os principais provedores de computação em nuvem. O capítulo 5 contém a modelagem das características do provedor Amazon.

(16)

15

2 Referencial Teórico

Para o desenvolvimento desta pesquisa é necessário o estudo das áreas de integração de aplicações empresariais e computação em nuvem. Nas seções seguintes são introduzidos estas áreas.

2.1

Integração de Aplicações Empresariais

O desenvolvimento de uma única aplicação que execute todos os processos de uma empresa é uma tarefa complicada, mesmo as grandes aplicações geralmente não conseguem dar suporte a todos os processos de negócio que uma empresa possui. Por isso, muitas vezes é necessário integrar distintas aplicações adquiridas pela empresa. A integração também ocorre porque com o passar do tempo os processos de negócio das empresas evoluem ou então surgem novos processos, e isto demanda um novo suporte computacional. Normalmente no momento de proporcionar este suporte, as distintas funcionalidades que são necessárias já estão implementadas em outras aplicações, como por exemplo a necessidade de envio de e-mail ou um sistema de cobrança bancária.

Integração de aplicações empresariais pode ser definida como a tarefa de fazer aplicações distintas trabalharem juntas para produzir um conjunto único de funcionalidades (HOHPE; WOOLF, 2004).

Para realizar uma solução de integração de aplicações os desenvolvedores devem considerar algumas restrições. Primeiro, as aplicações que serão integradas geralmente não foram projetadas com o objetivo de fazer parte de uma solução de integração. Estas aplicações normalmente foram desenvolvidas por diferentes empresas de desenvolvimento, as quais podem utilizar diferentes linguagens de programação, modelos de dados. Em segundo lugar, vem a necessidade de manter o código fonte das aplicações integradas sem alterações, pois normalmente elas são compradas de outras empresas de desenvolvimento, assim as empresas que adquirem estas aplicações não possuem acesso ao seu código fonte e nem permissão para realizar alterações. Por fim ao integrar diferentes aplicações, os desenvolvedores não podem criar dependências entre as aplicações que serão integradas (FRANTZ; CORCHUELO, 2007).

Segundo Gregor Hohpe e Bobby Woolf (HOHPE; WOOLF, 2004), uma integração possui alguns critérios como:

• Minimizar dependências entre sistemas de forma que cada um possa evoluir sem causar problemas aos outros.

(17)

Capítulo 2. Referencial Teórico 16

• Ao integrar uma aplicação de uma empresa, os desenvolvedores devem minimizar as mudanças das aplicações e minimizar a quantidade de código de integração necessário.

• As aplicações devem concordar com o formato dos dados ou devem ter um tradutor para unificar as aplicações que tenham diferentes formatos de dados.

• A troca de informações precisa ser feita de forma frequente e rápida, diminuindo o tempo entre o momento que uma aplicação compartilha informações e o momento que as outras aplicações recebem estes dados, os dados devem ser enviados em pequenas partes.

• Aplicações integradas podem fazer compartilhamento de dados e de funcionalidades. • Pode funcionar de forma assíncrona, isto é, uma aplicação compartilha informações para outras aplicações que podem não estar em funcionamento no mesmo tempo e que vão acessar estas informações algum tempo depois.

Aplicações podem ser integradas com um alto acoplamento ou com baixo acopla-mento. O alto acoplamento significa que existe dependência entre as aplicações integradas, para que ocorra integração neste caso, todas as aplicações precisam estar em funcionamento ao mesmo tempo. Utilizando baixo acoplamento não há dependência entre as aplicações, portanto as aplicações funcionam de forma separada (HOHPE; WOOLF, 2004).

Um exemplo de solução de integração de aplicações pode ser visto na Figura 1, onde são representadas algumas aplicações pertencentes a uma pequena empresa. Esta solução de integração é composta de 4 aplicações. O Portal tem como função receber pedidos efetuados por usuários. A aplicação Controle de Estoque é onde a empresa faz o controle de seus produtos. A aplicação de Vendas realiza a emissão de nota fiscal e a concretização das vendas realizadas através do Portal. A aplicação de Bancária é utilizada para cobranças das vendas. Neste exemplo a empresa tem como principal atividade a realização de vendas, possuindo em um primeiro momento uma aplicação apenas para efetuar as vendas das mercadorias. Imaginamos que após algum tempo, esta empresa tenha um crescimento, passando a ser necessário à aquisição de uma aplicação para controle do estoque, o qual anteriormente era realizado de forma manual. Conforme a empresa cresce, surge a necessidade de realizar vendas através de um portal via internet. Assim surge a necessidade de utilizar uma aplicação bancária para realizar cobranças online. Neste momento a empresa possui quatro aplicações diferentes, portanto existe a possibilidade de realizar uma integração entre estas aplicações, tendo como objetivo reutilizar as distintas funcionalidades espalhadas por estas aplicações e que são necessárias para dar suporte à venda através da internet.

No exemplo da Figura1, a empresa irá receber pedidos através do Portal. Neste caso, a empresa definiu que serão processados apenas pedidos feitos em território nacional.

(18)

Capítulo 2. Referencial Teórico 17

Figura 1 – Exemplo de solução de integração de aplicações empresariais.

Para isto, será necessário a tarefa Message Filter, que irá fazer este filtro solicitado pelo cliente. Os pedidos que passam por esse filtro, na sequência passam pela tarefa Splitter, que tem como objetivo dividir o pedido em pequenas partes para separar as informações recebidas, para que não seja necessário enviar toda a mensagem a cada uma das aplicações de destino. Assim apenas a parte que interessa a cada aplicação será recebida por ela. Após o pedido ser dividido em pequenas partes, estas partes precisam ser direcionadas até a aplicação de destino, para realizar esta operação é necessário a tarefa Router, que encaminha os pedidos para os seus destinos. Como normalmente estas aplicações são desenvolvidos com linguagens, formatos ou tipos de dados diferentes, as aplicações de destino podem não conseguir processar os pedidos recebidos, pois os dados podem estar em um formato que elas não entendem. Para resolver este problema é necessário a utilização de um tradutor, o qual é representado pela tarefa Translator, que tem como função adaptar o formato dos dados do pedido recebido para um formato que a aplicação de destino consiga entender. Após os pedidos serem traduzidos, serão executados em cada aplicação de forma separada, neste caso as quatro aplicações diferentes trabalham de forma conjunta para resolver esta nova necessidade da empresa.

A integração de aplicações empresarias pode ser realizada através de dois estilos: compartilhamento de dados e compartilhamento de funcionalidades (HOHPE; WOOLF, 2004). O compartilhamento de dados ocorre quando uma aplicação deseja compartilhar informações presentes em seu ecossistema, este compartilhamento pode acontecer através de transferência de arquivo ou utilizando um banco de dados. O compartilhamento de funcionalidades é utilizado quando existem funcionalidades presentes em uma aplicação que precisam ser acessadas pelas demais aplicações, este compartilhamento pode acontecer através de chamada de procedimento remota ou através de um sistema baseado em mensagens.

(19)

Capítulo 2. Referencial Teórico 18

2.1.1

Compartilhamento de Dados

Ocorre quando informações são trocadas entre distintas aplicações e pode ser realizado através de transferência de arquivo ou então utilizando um sistema gerenciador de banco de dados (HOHPE; WOOLF,2004), cf. Figura 2.

Figura 2 – Exemplo de compartilhamento de dados.

Na Figura2, a Aplicação 1 escreve informações para um Repositório de Dados, e a Aplicações 2 faz a leitura destes dados. O Repositório de Dados pode ser implementado como um Arquivo ou então ser um SGDB (Sistema de Gerenciamento de Banco de Dados).

O compartilhamento de dados realizado através de arquivos ocorre quando uma aplicação escreve dados em arquivos que outras aplicações precisam acessar. Como todas as aplicações precisam acessar o mesmo arquivo, é importante que elas conheçam a localização deste arquivo, por exemplo o nome, a extensão e o local onde ele estará presente. Sobre os arquivos também é importante que os desenvolvedores definam qual será o formato utilizado, podendo ser em formato de texto, XML ( Extensible Markup Language ) ou em outros formatos. Essa definição é importante porque normalmente as aplicações escrevem os dados em formatos diferentes, sendo necessário converter o formato dos dados, para que todas as aplicações possam acessar estes arquivos (HOHPE; WOOLF, 2004).

Neste compartilhamento os desenvolvedores da solução de integração não precisam ter conhecimento do código fonte das aplicações. É necessário saber apenas o conteúdo e o formato do arquivo para então realizar as alterações necessárias para que este arquivo possa ser utilizado para a troca de dados entre as aplicações. Assim, as aplicações não ficam dependentes entre si, cada aplicação pode sofrer alterações no seu código fonte sem que isto interfira nas demais aplicações (HOHPE; WOOLF, 2004).

Quando é utilizado o compartilhamento de dados através de um arquivo é preciso existir um processo que permita escrever e ler dados neste arquivo, porém este processo não é executado de forma frequente, pois exige grande esforço computacional para ser executado. Assim, ao realizar uma solução de integração é definido um período diário ou semanal para executar estes processos. Desta forma, caso ocorra alterações em uma aplicação presentes na solução de integração, as demais não receberão esta atualização no mesmo momento. Um exemplo é quando uma alteração no cadastro do endereço de um

(20)

Capítulo 2. Referencial Teórico 19

usuário em uma aplicação de uma empresa é efetuada. A atualização dos dados do usuário ocorrerá apenas na própria aplicação, ou seja, as demais aplicações não serão atualizadas, pois os dados serão atualizados somente no período definido. Por isso é possível que outra aplicação que não esteja atualizada, envie algum documento ou cobrança para o endereço errado. Neste caso os dados estão inconsistentes, ou seja, os dados presentes em uma aplicação estão diferentes dos dados das demais aplicações integradas (HOHPE; WOOLF, 2004).

Ao realizar o compartilhamento de dados utilizando SGDB, as informações são compartilhadas através de um banco de dados, onde todas as aplicações presentes vão realizar os processos de escrita, leitura e alterações no mesmo banco de dados. Para utilizar está técnica é necessário um acordo para que todas as aplicações possam acessar os dados que estão sendo compartilhados. Este acordo pode ser visto como uma regra que por exemplo é definido que se uma aplicação estiver realizando alterações em uma determinada tabela do banco de dados, as demais aplicações não poderão acessar esta tabela. Este compartilhamento pode ser considerado simples, pois normalmente são utilizados os bancos de dados relacionais. Este tipo de banco de dados é muito usado e é baseado em SQL (Structured Query Language), a qual a maioria dos desenvolvedores possui conhecimento e pode ser utilizada em praticamente todas as plataformas de desenvolvimento (HOHPE; WOOLF, 2004).

A utilização de banco de dados compartilhado traz algumas implicações, como a dificuldade de criar e manter um esquema de dados único que possa atender todas as necessidades das aplicações. Isto ocorre pois as empresas estão em constante crescimento, consequentemente agregando novas funcionalidades e realizando constantes alterações em suas aplicações. Outra implicação são os problemas de desempenho, pois como todos os processos são realizados no mesmo banco de dados, ele estará sempre em utilização, processando dados de diversas aplicações a todo instante. Por isto, pode existir perda de desempenho. Também existe a possibilidade de ocorrer deadlock. Isto ocorre quando uma aplicação está realizando alguma operação em um tabela, e a mesma pode ser bloqueada, impedindo o acesso pelas demais aplicações (HOHPE; WOOLF, 2004). Na Tabela1 são descritos os pontos positivos e negativos de cada técnica deste estilo de integração.

2.1.2

Compartilhamento de Funcionalidades

Ao compartilhar funcionalidades, as aplicações disponibilizam operações para que posteriormente outras aplicações possam utilizar estas operações. Este estilo pode ser realizado através de duas técnicas: procedimento remoto ou baseada em um sistema de mensagens (HOHPE; WOOLF, 2004).

No compartilhamento de funcionalidade utilizando chamada de procedimento remoto, as aplicações disponibilizam suas operações através de uma API, a qual pode

(21)

Capítulo 2. Referencial Teórico 20

Tabela 1 – Técnicas de compartilhamento de dados

Técnica Vantagens Desvantagens

Arquivo - Comunicação assíncrona entre as aplicações, ou seja, uma aplicação não depende da outra para executar.

- Os desenvolvedores da solução de integração não precisam ter acesso ao código fonte das aplicações.

- Pode haver dados inconsistentes por não serem realizadas

atualizações do arquivo em todas as alterações realizadas.

Banco de dados - Comunicação assíncrona entre as aplicações, ou seja, uma aplicação não depende da outra para executar.

- Os dados normalmente são consistentes, pois todas as

aplicações acessam o mesmo banco de dados, que contém informações atualizadas.

- Dificuldade para criar e manter um esquema de dados único que atenda às necessidades de todas as aplicações.

- Pode se tornar um gargalo para o desempenho.

- Possibilidade de ocorrer deadlock.

ser acessada pelas demais aplicações para que sejam executadas suas funcionalidades. Assim, quando uma aplicação necessita obter informações que estão presentes em outra aplicação, é possível realizar uma solicitação diretamente entre estas aplicações. De forma que uma aplicação envia uma solicitação para outra aplicação e recebe uma resposta desta solicitação (HOHPE; WOOLF, 2004).

O funcionamento de uma chamada de procedimento remoto é semelhante a chamada de procedimento local, a qual consiste na chamada de um procedimento dentro da própria aplicação. Esta semelhança pode ser uma vantagem, pois os desenvolvedores normalmente já estão acostumados a trabalhar com procedimentos locais. Porém, uma chamada de procedimento remota é mais lenta porque ao realizar esta chamada, é necessário acessar um procedimento que está em outra aplicação, e este procedimento pode estar sendo executado por outras aplicações, podendo ser necessário um tempo de espera para que seja executado, além disso, o processo é mais lento por ser executado através da rede, a qual normalmente é mais lenta. Também é possível que ocorram erros quando uma aplicação possui um procedimento que é executado por várias aplicações, neste caso se a aplicação recebe mais solicitações do que ela consiga executar, é possível ocorrer uma sobrecarga, ocasionando falhas na aplicação (HOHPE; WOOLF, 2004).

Como esta técnica executa operações que estão presentes em outras aplicações, ela possui alto acoplamento. Isto significa que as aplicações presentes na solução de integração dependem uma da outra para realizar as suas operações, ou seja, para que uma aplicação acesse as operações de uma outra aplicação, é preciso que ambas estejam em funcionamento no mesmo tempo. Na Figura 3 é representado um exemplo de chamada de procedimento

(22)

Capítulo 2. Referencial Teórico 21

remoto (HOHPE; WOOLF,2004).

Figura 3 – Exemplo de chamada de procedimento remoto.

A Figura3 demonstra o funcionamento de uma chamada de procedimento remoto, onde a Aplicação 2 disponibiliza uma API para acesso a algumas de suas operações, e a Aplicação 1 faz o acesso através de uma chamada de procedimento remoto e executa as operações. Observe que para a Aplicação 1 utiliza operações da Aplicação 2, é preciso que a última esteja em funcionamento.

Um compartilhamento de funcionalidades baseado em um sistema de mensagens ocorre quando as aplicações realizam a transferência de informações enviando mensagens umas para as outras. Estas mensagens são um tipo de estrutura de dados, por exemplo uma String ou um Objeto. Nesta técnica a transferência de dados e o compartilhamento de funcionalidades são possíveis, pois a transferência das mensagens é realizada de forma assíncrona e através de um canal. A transferência assíncrona significa que é possível transferir dados ou executar operações mesmo que as aplicações de destino não estejam em funcionamento. Os canais são utilizados para garantir que a mensagem enviada seja entregue a aplicação de destino, mesmo que ela não esteja em funcionamento no momento do envio. Neste caso a mensagem permanece no canal aguardando até que a aplicação de destino entre em funcionamento. Um canal pode ser implementado como filas de mensagens utilizando tecnologias como por exemplo Java Messaging (HOHPE; WOOLF, 2004).

Uma mensagem é transmitida através de cinco etapas. No início, uma aplicação cria uma mensagem contendo os dados que ela deseja enviar. Após criar a mensagem, esta aplicação envia a mensagem para o canal. O canal será responsável por transferir a mensagem da aplicação de envio para a aplicação de destino. Após receber a mensagem a aplicação de destino realiza a leitura dos dados presentes na mensagem. Por fim os dados contidos na mensagem são processados pela aplicação de destino (HOHPE; WOOLF, 2004).

Nesta técnica o remetente não precisa esperar o receptor processar a mensagem, é preciso apenas esperar a mensagem ser enviada para o canal, após este processo é possível realizar outras tarefas enquanto a mensagem é transmitida em segundo plano. Neste compartilhamento as aplicações podem enviar mensagem para todas as outras aplicações (HOHPE; WOOLF, 2004).

A Figura 4 demonstra um cenário onde a Aplicação 1 envia informações para o Sistema de Mensagens, que tem como função encaminhar estas informações para a aplicação de destino que neste caso pode ser a Aplicação 2 ou a Aplicação 3.

(23)

Capítulo 2. Referencial Teórico 22

Figura 4 – Exemplo de sistema baseado em mensagens.

Na Tabela 2 são descritos os pontos positivos e negativos de cada técnica deste estilo de integração.

Tabela 2 – Técnicas de compartilhamento de funcionalidades

Técnica Vantagens Desvantagens

Chamada de

procedimento remoto

- Possibilidade de executar operações presentes em outros sistemas.

- Alto acoplamento. - Podem ser lentas e falhar. - Aplicações podem sobrecarregar

caso recebam mais solicitações do que consigam executar.

Mensagens - Baixo acoplamento. - Possibilidade de realizar

compartilhamento de dados e funcionalidades.

- Transferência de alta velocidade e de forma frequente.

- Poucos desenvolvedores possuem experiência com este tipo de técnica.

- O canal garante a entrega das mensagens. Porém mensagens enviadas em sequência podem ficar desordenadas caso alguma delas falhe e necessite que o canal tente reenviar a mensagem.

2.2

Computação em Nuvem

Com o rápido desenvolvimento de tecnologias de armazenamento e de processamento e com o crescimento da utilização da internet, os recursos de computação estão mais acessíveis e também mais baratos. A computação em nuvem é um novo paradigma no qual empresas oferecem a um baixo custo recursos como armazenamento e processamento por meio da internet em um modelo de negócio onde os usuários pagam apenas pelo que utilizam.

A principal ideia por trás da computação em nuvem não é uma ideia nova e portanto o termo “nuvem” tem sido usado em diversos contextos. No entanto foi o CEO (Chief Executive Officer ) do Google, Eric Schmidt que usou pela primeira vez a palavra para descrever o modelo de negócio de prestação de serviços através da internet, o qual

(24)

Capítulo 2. Referencial Teórico 23

ganhou popularidade. Atualmente existem diversas definições para a computação em nuvem (ZHANG; CHENG; BOUTABA,2010).

Neste trabalho será adotada para computação em nuvem a definição dada pelo NIST (National Institute of Standards and Technology). Este instituto define computação em nuvem como sendo um modelo conveniente para permitir o acesso à rede, sob demanda a um pool compartilhado de recursos computacionais configuráveis, por exemplo, redes, servidores, armazenamento, aplicações e serviço que podem ser disponibilizadas com rapidez (ZHANG; CHENG; BOUTABA, 2010).

A arquitetura da computação em nuvem pode ser dividida em três camadas: infraestrutura, plataforma e software. A Figura 5 ilustra esta arquitetura.

Figura 5 – Arquitetura dos serviços da computação em nuvem.

A primeira camada da arquitetura da computação em nuvem é a Infraestrutura, a qual é implementada sobre hardware e é responsável por realizar virtualização dos recursos físicos. A Plataforma utiliza os recursos da infraestrutura para oferecer um ambiente de desenvolvimento para os desenvolvedores de aplicações. A camada de Software é utilizada diretamente pelos usuários e é onde estão sendo executados os aplicativos desenvolvido.

A computação em nuvem possui algumas características como: realocação dos recursos sob demanda, possibilidade de contratação de recursos sem investimento inicial, redução dos custos com equipamentos e a alta tolerância a falhas. Na sequência são descritas estas características.

• Os recursos em computação em nuvem podem ser rapidamente alocados e deslocados sob demanda. Portanto se a empresa necessitar de uma maior quantidade de recursos, o provedor de computação em nuvem irá alocar os recursos necessários. Quando a empresa precisar de poucos recursos, só serão alocados os recursos necessários. Isso proporciona redução nos gastos da empresa, pois os recursos são utilizados somente quando for necessário, não ocasionando gastos desnecessários (ZHANG; CHENG; BOUTABA,2010).

• Ao contratar um serviço de computação em nuvem, a empresa não precisa realizar investimento inicial em infraestrutura. É possível contratar os serviços e conforme a necessidade o provedor irá alocar os recursos. Assim a empresa paga conforme a utilização (ZHANG; CHENG; BOUTABA,2010).

(25)

Capítulo 2. Referencial Teórico 24

• A computação em nuvem reduz os custos com equipamentos e com suporte, pois é utilizado a terceirização dos serviços. Desta forma o usuário transfere seus riscos de negócios para os provedores, que normalmente possuem maior experiência no gerenciamento destes riscos (ZHANG; CHENG; BOUTABA, 2010).

• Possui alta tolerância a falhas. Pois os provedores normalmente executam em tempo integral e caso as falhas ocorram, existem mecanismos que realizam backup e se forem encontrados problemas, as partes com defeito são substituídas, mantendo o serviço funcionando de forma segura (GONG et al., 2010).

2.2.1

Serviços

Os sistemas de computação em nuvem são divididos em duas sessões: front-end e

back-end. O primeiro é onde está o computador do usuário que vai utilizar o sistema. O

segundo é onde existem os serviços de computação em nuvem, esses serviços podem ser divididos em infraestrutura (IaaS), plataforma (PaaS) e software como serviço (SaaS).

• Infraestrutura como um Serviço

O serviço de infraestrutura é definido como a contratação de recursos para serem utilizados como um serviço. Alguns exemplos destes recursos são servidores, roteadores, sistemas de armazenamento, os quais são disponibilizados pelos provedores. Um provedor também pode disponibilizar sistemas operacionais e tecnologias de virtualização para gerenciamento dos recursos contratados. Como estes recursos são virtualizados, quando as empresas precisarem ampliar suas tarefas não é necessário a aquisição de novos equipamentos, pois os recursos podem ser alocados conforme a necessidade. Este serviço é bastante utilizado quando a empresa possui uma grande variação na utilização dos recursos contratados, ou seja, existem momentos que para a execução dos processos da empresa é necessário a demanda de muitos recursos computacionais e outros momentos que são necessários o uso de pouca quantidade destes recursos. Como o pagamento é realizado conforme a utilização do serviço, a empresa não precisará pagar por recursos que não serão utilizados, assim tendo redução nos custos (GIBSON et al.,2012).

Uma das grandes preocupações nos serviços de infraestrutura é a segurança, princi-palmente porque os demais modelos de serviço de nuvem são executados a partir deste serviço. Também existe essa preocupação quando a empresa possui um ambiente compar-tilhado, neste caso uma única empresa pode estar hospedando todo o processamento e os dados de muitas outras empresas. Podendo expor todas as partes a um maior risco de incidentes relacionados com a segurança ou privacidade (GIBSON et al.,2012).

Em IaaS o gerenciamento é realizado por provedores de infraestrutura. Os quais permitem que as plataformas de computação em nuvem trabalhem no desenvolvimento de

(26)

Capítulo 2. Referencial Teórico 25

aplicações. Também são responsáveis por disponibilizar a infraestrutura necessária para a execução de softwares na nuvem. Algumas empresas que disponibilizam este serviço são: Amazon, Microsoft e Google (GIBSON et al.,2012).

• Plataforma como um Serviço

Neste serviço as empresas prestadoras de PaaS disponibilizam uma plataforma de desenvol-vimento utilizando os recursos da infraestrutura da computação em nuvem. Estes recursos são acessados pelos desenvolvedores de aplicações, que vão possuir acesso à ferramentas de auxílio, como por exemplo, APIs e linguagens de programação. Assim é possível a realização do desenvolvimento das aplicações sem a necessidade de instalação e configuração do ambiente de desenvolvimento, possibilitando redução nos custos de manutenção e também no tempo necessário para o desenvolvimento. Porém a utilização de uma plataforma de computação em nuvem pode trazer problemas de compatibilidade, pois atualmente não existe um modelo que descreva quais são as linguagens, APIs, tipos de banco de dados, ferramentas ou middleware que estejam presentes em cada provedor de plataforma. Isto traz uma grande dificuldade no momento de definir qual será o provedor escolhido para realizar o desenvolvimento (GIBSON et al.,2012).

Uma plataforma de computação em nuvem pode ser classificada como: total ou parcial. A primeira oferece aos usuários a capacidade de realizar o desenvolvimento de todo o sistema através de uma interface web. Precisando utilizar apenas um navegador para realizar o desenvolvimento sem a necessidade de instalar outras ferramentas. A segunda disponibiliza para o desenvolvimento uma série de ferramentas, com o objetivo de auxiliar no desenvolvimento das aplicações. Porém, neste caso ainda é necessário a instalação de alguns aplicativos nos computadores locais e também o desenvolvimento é realizado utilizando estes computadores (GIBSON et al.,2012).

O desenvolvimento de aplicações através destas plataformas possibilita que as empresas de desenvolvimento disponibilizem as suas aplicações através da internet, uti-lizando o tipo de serviço SaaS. Um exemplo deste serviço é a plataforma Azure que é disponibilizada pela Microsoft (GIBSON et al.,2012).

• Software como um Serviço

Neste serviço os provedores disponibilizam acesso a aplicações que estão sendo executadas em seus servidores de computação em nuvem. O acesso a essas aplicações é realizado através de um navegador web, o qual é utilizado para realizar a execução da aplicação. Assim é possível que os usuários tenham uma redução nos custos de aquisição das aplicações, pois muitas vezes o acesso a estas aplicações é de forma gratuita ou com valor de aquisição baixo. A utilização deste serviço tem como grande problema a segurança dos dados. Isto ocorre

(27)

Capítulo 2. Referencial Teórico 26

pois a perda de algum equipamento ou algum defeito de hardware pode ocasionar na perda de dados importantes. Em SaaS, se ocorrer algum destes problemas, os dados do usuário não serão perdidos, sendo possível acessar as aplicações após substituir o equipamento e recuperar os dados armazenados (GIBSON et al.,2012).

Em SaaS os usuários necessitam sempre estar conectado à internet. Isto é um fator que muitas vezes impossibilita que alguns usuários passem a utilizar este serviço, pois em algumas regiões o acesso à internet é instável. As empresas também evitam utilizar aplicações consideradas imprescindíveis, pois não podem correr o risco de o software estar indisponível para realizar as suas operações (GIBSON et al.,2012).

Este serviço é utilizado diretamente pelos usuários, podendo ser de forma gratuita, como por exemplo o Google Docs ou conforme cobrança de licença, como exemplo o Office 365 Home Premium.

2.2.2

Tipos de Nuvem

A computação em nuvem pode ser dividida em diferentes modelos de implantação. Nuvens públicas, privadas e hibridas. A seguir são explicados estes tipos de nuvem.

• Nuvem Pública

É um modelo de implementação onde recursos de computação são oferecidos por grandes empresas como um serviço. Um exemplo de empresa que disponibiliza estes serviços é a Amazon. Este tipo de nuvem possibilita a contratação do serviço sem investimento inicial em infraestrutura. A forma de pagamento é realizada conforme a utilização dos recursos. Também possibilita o compartilhamento dos recursos entre diversas empresas, onde os recursos e os custos podem ser compartilhados por empresas de todo o mundo (ZHANG; CHENG; BOUTABA, 2010).

O modelo de nuvem pública pode ser contratado por qualquer empresa e normal-mente são utilizados para implementação de servidores, armazenamento, infraestrutura de backup e desenvolvimento de aplicações. Como não é possível ter controle sobre os dados, as empresas geralmente limitam o uso a aplicações não essenciais e informações não confidenciais (ZHANG; CHENG; BOUTABA, 2010).

• Nuvem Privada

É uma implementação de serviços em nuvem, através de um ambiente seguro baseado na computação em nuvem, o qual é projetado para ser utilizado de forma exclusiva por uma única empresa. Tal tipo de nuvem proporciona um maior controle sobre o desempenho,

(28)

Capítulo 2. Referencial Teórico 27

confiabilidade e a segurança, sendo que o acesso é realizado somente por usuários da empresa, sem que seja possível ser acessado externamente (JADEJA; MODI, 2012).

Nuvens privadas são semelhantes a servidores proprietários e não fornecem benefícios para redução dos custos iniciais. Em comparação com a nuvem pública, onde os recursos e as aplicações são geridos pelo prestador do serviço, na nuvem privada os serviços podem ser gerenciados tanto por provedores de computação em nuvem como pela própria empresa (JADEJA; MODI, 2012).

• Nuvem Híbrida

Constitui-se em um serviço de nuvem integrada que utiliza nuvens privadas e públicas para desempenhar funções distintas dentro da mesma organização. Ela permite que os recursos de uma nuvem privada sejam ampliados a partir de uma reserva de recursos em uma nuvem pública. Neste modelo uma parte da infraestrutura de serviços é executada em nuvens privadas e outra parte em nuvens públicas, podendo oferecer maior controle e segurança dos dados (ZHANG; CHENG; BOUTABA, 2010).

Os serviços de computação em nuvem oferecidos por uma nuvem pública são mais eficientes e escaláveis do que em nuvens privadas. Portanto, uma empresa pode aumentar sua eficiência através da utilização de serviços de nuvem pública para todas as operações que não são essenciais ou confidenciais, executando em uma nuvem privada as operações que exigem maior confiabilidade e segurança. Porém é necessário maior cuidado ao determinar a separação entre o que será utilizado na nuvem pública e o que será utilizado na nuvem privada (ZHANG; CHENG; BOUTABA, 2010).

2.2.3

Tecnologias Relacionadas

As tecnologias de computação em grid e virtualização são consideradas a base da computação em nuvem (GONG et al., 2010).

• Computação em Grid

A computação em grid é um paradigma de computação distribuída que utiliza os recursos de diferentes computadores para resolver problemas de grande complexidade. Estes recursos podem ser por exemplo: memória, armazenamento, processamento ou banda da rede. Podem ser utilizados em ambientes geograficamente distribuídos voltados ao fornecimento de recursos em larga escala, com o objetivo de fornecer alto desempenho na execução de aplicações (FOSTER; KESSELMAN; TUECKE, 2001).

Este tipo de computação foi desenvolvido baseado em sistemas de energia elétrica, onde a eletricidade é utilizada sem que os usuários tenham conhecimento da origem da

(29)

Capítulo 2. Referencial Teórico 28

energia e da complexidade da distribuição, ou seja, ao conectarmos um equipamento eletrônico na tomada o mesmo recebe a energia para o seu funcionamento. Desta forma o grid computacional é uma rede onde o usuário se conecta para ter acesso a um grande poder computacional (CIRNE, 2003).

Computação em nuvem é semelhante à computação em grid, pois ambas utilizam recursos distribuídos. Porém, a computação em nuvem realiza compartilhamento de recursos de virtualização em diversos níveis, por exemplo: hardware, plataforma e aplicações (ZHANG; CHENG; BOUTABA,2010).

• Virtualização

A virtualização permite que em um único computador seja executado ao mesmo tempo dois ou mais sistemas operacionais. Sendo possível utilizar o melhor sistema para executar cada operação, onde cada máquina virtual é utilizada de forma separada das demais. Com isto se ocorrer vulnerabilidades em uma das máquinas virtuais, as demais não serão interferidas. Porém atualmente com o surgimento dos computadores pessoais, o interesse na virtualização não é mais somente pelo fato de permitir o uso de um mesmo sistema por vários usuários. O interesse passou a ser também em segurança, confiabilidade e disponibilidade, custo, balanceamento de carga e suporte a aplicações legadas (MATTOS, 2008).

Virtualização é uma tecnologia que abstrai os detalhes de hardware físico e fornece recursos virtualizados para aplicações de alto nível. Ela é a base da computação em nuvem, pois fornece a capacidade de reunir recursos de computação e distribuir recursos virtuais para aplicativos conforme a necessidade das aplicações (ZHANG; CHENG; BOUTABA, 2010).

2.2.4

Integração de Aplicações na Nuvem

Atualmente um dos desafios que as empresas enfrentam é integrar aplicações na nuvem. Com a intensão de atender esta necessidade, vários provedores de computação em nuvem começaram a oferecer serviços de integração conhecidos como plataforma de inte-gração como serviço (iPaaS). Uma inteinte-gração de aplicações na nuvem é uma plataforma de desenvolvimento que tem como objetivo a construção de soluções de integração, fornecendo para os usuários um conjunto de serviços e recursos para a realização desta integração. Esta plataforma pode ser vista como uma combinação de integração, governança e outras habilidades para atender as necessidades de implantação, aquisição e gerenciamento de funcionalidades. Nos serviços de governança estão incluídos o gerenciamento do ciclo de vida dos artefatos de software, os repositórios e o gerenciamento das aplicações (PEZZINI; LHEUREUX, 2011).

(30)

Capítulo 2. Referencial Teórico 29

Uma integração de aplicações na nuvem é uma plataforma de desenvolvimento que tem como objetivo a construção de soluções de integração (cf Figura 6), fornecendo para os usuários um conjunto de serviços e recursos para a realização desta integração. Esta plataforma pode ser vista como uma combinação de integração, governança e outras habilidades para atender as necessidades de implantação, aquisição e gerenciamento de funcionalidades. Nos serviços de governança estão incluídos o gerenciamento do ciclo de vida dos artefatos de software, os repositórios e o gerenciamento das aplicações (PEZZINI; LHEUREUX, 2011).

Figura 6 – Exemplo de uma solução de integração na nuvem.

A Figura6 representa uma solução de integração de aplicações empresarias execu-tando na nuvem.

Este serviço oferece uma plataforma para: modelar, executar, monitorar e gerenciar toda a solução de integração. Esta é a principal vantagem para as empresas que contratam este serviço, pois podem se concentrar em atividades como: criação de novas regras de negócio, projeção de fluxos de trabalho, dentre outras atividades. Outra vantagem é a redução nos, principalmente para empresas que planejam realizar atualização em seus equipamentos. Pois ao invés de fazer um grande investimento na aquisição de novos servidores, sistemas de armazenamento e licenças de software, é possível contratar um serviço de iPaaS e realizar o pagamento de uma taxa mensal (PEZZINI; LHEUREUX, 2011).

2.3

Linha de Produtos de Software

Uma linha de produtos de software é um conjunto de produtos que possuem características suficientemente similares. Isto permite a definição de uma infraestrutura comum dos produtos que compõe a linha de produtos e a diferença entre os mesmos. Seu principal objetivo é desenvolver produtos que compartilhem características comuns de maneira sistemática. A linha de produtos de software geralmente consiste de dois processos

(31)

Capítulo 2. Referencial Teórico 30

de desenvolvimento: engenharia de domínio e engenharia de aplicação. Na engenharia de domínio artefatos de software comuns são projetados e desenvolvidos para reutilização. Na engenharia de aplicação produtos específicos são derivados através da reutilização de um conjunto de artefatos de domínio (LINDEN; POHL, 2005 apud AHN; KANG, 2011).

A arquitetura de uma linha de produtos de software (SPL) reflete os requisitos de uma linha de produtos e possui uma representação de alto nível do sistema. Ao contrário da arquitetura de software para produtos individuais, os requisitos de uma SPL devem incluir as exigências de vários produtos que compõem a linha de produtos. Isto faz com que a arquitetura SPL tenha que representar a uniformização e a variabilidade (LINDEN; POHL, 2005 apud AHN; KANG,2011).

2.3.1

Modelos de Variabilidade

Os modelos de variabilidade foram introduzido em linha de produtos de software para permitir uma documentação eficiente do que é comum e do que é diferente nos produtos de uma linha de produtos de software. Estes modelos são importantes porque tornam fácil o gerenciamento e desenvolvimento de uma linha de produtos (BERGER et al., 2013).

Técnicas para a realização da modelagem da variabilidade fornecem uma forma de especificar as regras que limitam a combinação entre produtos. Estas restrições podem ser técnicas ou qualquer decisão de domínio em qualquer fase de desenvolvimento. Por exemplo, os engenheiros precisam definir quais os requisitos são obrigatórios e quais são opcionais. Da mesma forma, os engenheiros de projeto precisam conhecer as dependências e incompatibilidades entre os componentes de software. Portanto, modelos de variabilidade descrevem um conjunto de opções que devem ser selecionadas a fim de obter uma linha de produtos específica. Este processo é realizado através da seleção das opções desejadas (BOSCH et al.,2002 apud ROOS-FRANTZ, 2011).

Atualmente existem diferentes tipos de modelos de variabilidade, como por exemplo

Feature Model (Modelo de Características) (KANG et al., 1990) e Orthogonal Variability

Model (Modelo Ortogonal de Variabilidade) (LINDEN; POHL, 2005).

2.3.2

Modelo de Características

Os modelos de características representam as semelhanças e variabilidades entre os produtos de uma linha de produtos de software. Eles fornecem uma representação abstrata de todos os produtos da linha de produtos, que são determinados por todas as combinações possíveis de características. Estes modelos são geralmente compostos de dois elementos: as características e as relações entre elas. As características são representadas por uma estrutura em árvore (KANG et al., 1990 apud ROOS-FRANTZ, 2011).

(32)

Capítulo 2. Referencial Teórico 31

Neste modelo, as relações entre as características podem ser de duas formas: hierárquica e restrições de árvore transversal.

• Hierárquica

Este tipo de relação é definido entre um recurso pai e seus recursos filhos. Por exemplo, para um filho ser parte de um produto é preciso que uma característica pai também esteja presente no produto. Existem três tipos de relações hierárquicas.

Obrigatória: Indica que quando uma característica pai está presente no produto,

obriga-tóriamente a característica filha também deve estar presente.

Opcional: Indica que quando uma característica pai está presente no produto, a

caracte-rística filha pode ou não ser parte do produto.

Alternativa: Indica que quando uma característica pai está presente no produto, apenas

uma característica filha estará também no mesmo produto, neste tipo de relação é definindo as possíveis escolhas de características filha que poderá estar inclusa.

• Restrições de Árvore Transversal

Este tipo de restrição é dividido em dois outros tipos:

Requires: Este tipo de restrição indica que se uma determinada característica requer

outra, esta característica também deverá estar presente no produto.

Exclude: Indica que se uma característica estiver presente no produto, a característica

indicada como exclude não poderá estar presente no produto.

2.3.3

Modelo Ortogonal de Variabilidade

OVM é uma linguagem para definir a variabilidade de uma linha de produto de software de uma forma ortogonal, isto é, proporcionando uma visão em corte transversal da variabilidade em todos os artefatos da linha de produtos de software (LINDEN; POHL,2005 apud ROOS-FRANTZ, 2011). Os construtores desta linguagem podem ser visualizados na Figura 7(ROOS-FRANTZ; BENAVIDES, 2010).

Pontos de variação (VP): Documentam os aspectos que podem variar na linha de

produtos, ou seja, onde existem diferenças no produto de software final. Exemplo: os produtos podem ser diferentes em relação ao sistemas operacional que suportam ou se eles fornecem o acesso a internet ou não. Os pontos de variação podem ser obrigatórios ou opcionais.

(33)

Capítulo 2. Referencial Teórico 32

Figura 7 – Construtores OVM.

Variantes (V): As variantes estão relacionadas com os pontos de variação e documentam

como tal ponto de variação pode variar. Exemplo: os produtos podem ter diferentes sistemas operacionais.

Dependências de relacionamento: Podem ser de três tipos: obrigatória, opcional ou

alternativa. Na dependência obrigatória a variante será escolhida sempre que o ponto de variação for utilizado. Na dependência opcional a variante pode ou não ser escolhida. A dependência alternativa constitui-se de um grupo de opções de variantes, onde o ponto de variação possui cardinalidade, a qual representa o mínimo e o máximo de escolhas possíveis.

Restrições: Podem ser de dois tipos: requires e exclude. As dependências requires indicam que um elemento necessita de outro. As dependências exclude são utilizadas para representar uma exclusão entre dois elementos. São utilizadas quando a escolha de um determinado elemento impossibilita a escolha de outro elemento (ROOS-FRANTZ; BENAVIDES,2010).

Um exemplo da utilização deste tipo de modelagem pode ser visto na Figura8.

Figura 8 – Exemplo de OVM (ROOS-FRANTZ,2011).

Neste exemplo está sendo representada a variabilidade de uma linha de produto de celulares. Esta linha possui alguns pontos de variação, o Messaging possui duas alternativas de escolha, SMS e MMS. O ponto de variação Utility functions possui duas variantes, GPS e Games. O ponto de variação Media possui uma variante obrigatória (Mp3) e uma

(34)

Capítulo 2. Referencial Teórico 33

variante opcional (Câmera). O ponto de variação Screen resolution possui três alternativas, podendo ser: Basic, Color ou High. Também há o ponto de variação Settings que possui somente a variante Java support. Além dos pontos de variação e suas variantes, este exemplo possui algumas restrições. Há uma restrição exclude entre as variantes GPS e

Basic, o que define que se o tipo de resolução de tela escolhido for básica a característica

GPS não estará presente. Entre as variantes Games e Java support há uma dependência

requires, a qual define que se houver disponível a característica Games será necessário

também que o celular possua suporte a tecnologia java.

2.4

Resumo do Capítulo

Neste capítulo foram vistos os conceitos sobre Integração de Aplicações Empresariais, analisando as técnicas para a sua realização, bem como as vantagens e desvantagens de cada técnica. Foram analisados os conceitos referentes a Computação em Nuvem, seus tipos de serviço e os tipos de nuvem disponíveis para contratação. Também foram apresentados os Modelos de Variabilidade com foco na descrição dos conceitos e dos construtores do modelo OVM.

(35)

34

3 Framework de Comparação

Neste trabalho foi desenvolvido um framework de comparação de provedores de computação em nuvem, com o objetivo de auxiliar na escolha do melhor provedor para implantar soluções de integração de aplicações empresariais. Um framework de comparação consiste em um conjunto de propriedades utilizadas para resolver um problema de um domínio específico. Ele atua onde há funcionalidades em comum a várias aplicações (neste caso, a vários provedores de computação em nuvem), porém para que seja possível a comparação entre as diferentes aplicações, elas devem conter grande quantidade de características em comum.

Na comparação realizada a análise das características dos provedores foram divididas em diferentes categorias: propriedades gerais, infraestrutura, plataforma e software.

3.1

Propriedades Gerais

Estas propriedades são comuns entre os tipos de serviço, ou seja, representam características presentes nos serviços de IaaS, PaaS e SaaS. Algumas propriedades desta categoria são mais relacionadas com um tipo de serviço específico, porém estão presentes de alguma forma em todos os tipos de serviço.

Sistema operacional. Sistema que está em funcionamento em uma máquina virtual de IaaS ou então o sistema que está permitindo a execução de aplicações de PaaS ou SaaS. Os possíveis valores que podem assumir esta propriedade são: distribuições Linux ou versões do Windows Server.

Serviço suportado. Tipos de serviço de computação em nuvem que cada provedor

dis-ponibiliza para contratação. Os possíveis valores para esta propriedade são: Infraestrutura como um Serviço (IaaS), Plataforma como um Serviço (PaaS) ou Software como um Serviço (SaaS).

Forma de pagamento. Forma com que cada provedor realiza a cobrança dos serviços

disponibilizados. Os possíveis valores para esta propriedade são: tempo de execução (paga-mento é realizado pela capacidade computacional por hora ou por minuto, sem compromisso de uso ou pagamentos prévios), reserva de recursos (pagamento baixo, único e inicial para uma instância, sendo uma reserva por um determinado período de tempo), mensalidade, (compromisso mensal podendo ser de 6 ou 12 meses), ou pacotes (possui capacidade

pré-determinada com pagamento a partir das opções de pacotes disponibilizadas).

Tempo mínimo de consumo. Tempo mínimo de cobrança por cada execução de uma

(36)

Capítulo 3. Framework de Comparação 35

minutos. Caso o tempo mínimo proposto por um provedor for de uma hora e a execução seja em menor tempo, será cobrado a hora completa, da mesma forma para o tempo de cobrança em minutos, tempos inferiores são cobrados conforme o mínimo estipulado pelo provedor.

Forma de cobrança. Forma com que cada usuário realizara o pagamento pelo tempo

que executar suas instancias. Os possíveis valores para esta propriedades são: hora ou minutos.

Escalabilidade. Permite aumentar ou diminuir automaticamente a capacidade dos recur-sos computacionais. Os possíveis valores para esta propriedades são: sim ou não.

Backup. Indica se o provedor implementa algum mecanismo para proteção dos dados do

usuário. Os possíveis valores para esta propriedades são: sim ou não.

Controle de Acesso. Capacidade de controle de acesso aos serviços de nuvem. Os

possíveis valores para esta propriedade são: sim ou não.

3.2

Propriedades de Infraestrutura como um Serviço

Estas propriedades estão relacionadas com o serviço de infraestrutura disponibili-zado pelos provedores e representam as características e recursos disponibilidisponibili-zados pelas máquinas virtuais.

Número de planos de serviço. Quantidade de configurações de planos de serviço

disponibilizados por cada provedor.

Gerenciamento de máquinas virtuais. Forma como o usuário pode gerenciar suas

máquinas virtuais localizadas em um servidor na nuvem. Esse gerenciamento é realizado a partir de imagens de sistemas operacionais. Os possíveis valores para esta propriedade são: imagens de sistemas operacionais personalizados ou imagens virtuais disponibilizadas pelos provedores.

Serviços de cache. Possibilidade de implementação, operação e dimensionamento de

um cache na nuvem. Este serviço melhora o desempenho de aplicativos e permitem a recuperação de informações na memória rapidamente. Os possíveis valores para esta propriedades são: sim ou não.

Segurança. Recursos de segurança que cada provedor disponibiliza para os usuários.

Esses recursos podem estar inclusos no custo do plano ou então serem cobrados a parte. Os possíveis valores para esta propriedade são: firewall, privacidade de dados, detecção de intrusos, tolerância a falhas ou monitoramento dos recursos.

Tipos de instâncias. Instancias são servidores virtuais que podem executar aplicativos. São criadas a partir de uma imagem de um sistema operacional e de um tipo de instância.

Referências

Documentos relacionados

O presente estudo foi realizado com o objetivo de descrever o perfil das mulheres que tiveram parto na maternidade do Hospital Universitário Polydoro Ernani de São Thiago em

Convenio para desenvolvimento de servicos assistenciais de natureza continuada, para atendimento da populacao local em situacAo de vulnerabilidade, compreendidos na area

Estratégias (Plano de Ações Prioritárias): estas estratégias estão relacionadas com o crescimento da organização. Os sócios que não estivem dispostos a investir,

No período de primeiro de janeiro a 30 de junho de 2011, foram encaminhadas, ao Comitê de Segurança do Paciente da instituição sede do estudo, 218 notificações de

One of the main strengths in this library is that the system designer has a great flexibility to specify the controller architecture that best fits the design goals, ranging from

Purpose: This thesis aims to describe dietary salt intake and to examine potential factors that could help to reduce salt intake. Thus aims to contribute to

O objetivo deste trabalho foi avaliar, in vitro, os efeitos anti-helmínticos do extrato aquoso das folhas e do extrato metanólico dos frutos de algaroba sobre cultivos de larvas de

a) Pesquisa e realização de exercícios em livros didáticos do ensino básico: combinamos que, como futuros professores, deveriam pesquisar em livros didáticos do