UNIVERSIDADE FEDERAL DO CEARÁ CAMPUS QUIXADÁ BACHARELADO EM ENGENHARIA DE SOFTWARE ANTÔNIO JOSÉ AMÂNCIO DA SILVA - PDF
Download "UNIVERSIDADE FEDERAL DO CEARÁ CAMPUS QUIXADÁ BACHARELADO EM ENGENHARIA DE SOFTWARE ANTÔNIO JOSÉ AMÂNCIO DA SILVA"
Artur Imperial Salvado
1 UNIVERSIDADE FEDERAL DO CEARÁ CAMPUS QUIXADÁ BACHARELADO EM ENGENHARIA DE SOFTWARE ANTÔNIO JOSÉ AMÂNCIO DA SILVA UMA FERRAMENTA PARA AUXILIAR NA SELEÇÃO DE SERVIÇOS DE PROVEDORES EM NUVEM QUIXADÁ 2014
2 ANTÔNIO JOSÉ AMÂNCIO DA SILVA UMA FERRAMENTA PARA AUXILIAR NA SELEÇÃO DE SERVIÇOS DE PROVEDORES EM NUVEM Trabalho de Conclusão de Curso submetido à Coordenação do Curso Bacharelado em Engenharia de Software da Universidade Federal do Ceará como requisito parcial para obtenção do grau de Bacharel. Área de concentração: computação Orientador Prof. Dr. Flávio Rubens de Carvalho Sousa. QUIXADÁ 2014
3 S581f Silva, Antônio José Amâncio da Uma ferramenta para auxiliar na seleção de serviços de provedores em nuvem / Antônio José Amâncio da Silva f. : il. color., enc. ; 30 cm. Monografia (graduação) Universidade Federal do Ceará, Campus de Quixadá, Curso de Bacharelado em Engenharia de Software, Quixadá, Orientação: Prof. Dr. Flávio Rubens de Carvalho Sousa Área de concentração: Computação 1. Computação em nuvem 2. Interface de programas aplicativos (Software) 3. Interfaces de usuário (Sistemas de computação) I. Título. CDD 004.6
4 ANTÔNIO JOSÉ AMÂNCIO DA SILVA UMA FERRAMENTA PARA AUXILIAR NA SELEÇÃO DE SERVIÇOS DE PROVEDORES EM NUVEM Trabalho de Conclusão de Curso submetido à Coordenação do Curso Bacharelado em Engenharia de Software da Universidade Federal do Ceará como requisito parcial para obtenção do grau de Bacharel. Área de concentração: computação Aprovado em: / junho / BANCA EXEMINADORA Prof. Dr. Flávio Rubens de Carvalho Sousa (Orientador) Universidade Federal do Ceará-UFC Prof a. MSc. Ticiana Linhares Coelho da Silva Universidade Federal do Ceará-UFC Prof. MSc. Paulo Antonio Leal Rego Universidade Federal do Ceará-UFC
6 AGRADECIMENTOS Gostaria de agradecer primeiramente a DEUS, pelo dom da vida e da sabedoria, agradecê-lo pelas oportunidades, pela graça de poder ser, poder fazer. Aos meus pais, figuras indiscutíveis na minha vida, ele representam a força, a determinação e a conquista. A todos da minha família e a Renata, pelo apoio, compreensão e carinho. Ao Prof. Dr. Flávio Rubens de Carvalho Sousa, Mestre e amigo. Ao meu amigo e colega Bruno Furtado pela ajuda e incentivo em todo o decorrer do curso. E a todos os colegas do Curso de Engenharia de Software/ Quixadá Um sincero, Muito Obrigado.
8 RESUMO Este trabalho de conclusão de curso pretende desenvolver uma ferramenta com o objetivo de auxiliar no processo de tomada de decisão de provedores de serviços em nuvem. Para isso, foi realizado um estudo sobre computação em nuvem buscando conhecer seus principais serviços e provedores. Com o estudo foi identificado parâmetros de custo e desempenho que serão utilizados pela ferramenta. A ferramenta foi desenvolvida para web utilizando as tecnologias Java e SQL visando à disponibilidade e usabilidade. A solução propõe auxiliar a tomada de decisão para o ambiente em nuvem, a partir das características definidas pelo usuário. Para garantir o fluxo de execução foi utilizado cenário com dados reais obtidos do provedor Amazon AWS. Palavras chave: 1. Computação em nuvem 2. Interface de programas aplicativos (Software) 3. Interfaces de usuário (Sistemas de computação)
9 LISTA DE ILUSTRAÇÕES Figura 1 - Diagrama de Caso de Uso Figura 2 - Diagrama de Classe Figura 3 - Base de Dados Figura 4 - Tela Usuário Comum Figura 5 - Tela Usuário Administrador Figura 6 - Tela resultado da busca por configuração Figura 7 - Tela resultado da busca por custo Figura 8 - Tela resultado busca por configuração e custo Figura 9 - Tela resultado da busca por desempenho... 31
10 SUMÁRIO 1 INTRODUÇÃO REVISÃO BIBLIOGRÁFICA Computação em Nuvem Características Essenciais Modelos de Serviços Modelos de Implantação de Nuvem Tecnologias para Computação em Nuvem Amazon AWS Microsoft Azure Migrações de Aplicações para a Nuvem PROPOSTA DA SOLUÇÃO Metodologia Definição das características da ferramenta Definição do Provedor e forma de armazenamento das informações obtidas Desenvolvimento da ferramenta Realização de estudo de caso Descrição da solução Implementação, tecnologia Arquitetura e Implementação ESTUDO DE CASO Cenario de uso (base de dados) Fluxo de execução (telas) CONSIDERAÇÕES FINAIS REFERENCIAS... 32
11 9 1 INTRODUÇÃO Com os avanços tecnológicos, as empresas têm investido na construção ou no acesso a serviços externos de Tecnologia de Informação (TI) que permitam solucionar seus problemas. Por outro lado, para muitas empresas, é necessário compreender os riscos e as vantagens em investir tanto em uma infraestrutura de TI própria quanto na utilização de serviços de terceiros. Suleiman et al. (2011), em sua pesquisa resumiram que, empresas para investir em sua infraestrutura de TI tem um grande investimento inicial, pois planejam-se tendo como base a capacidade máxima esperada dos recursos de computação, podendo ter redução do fluxo do caixa e tempo de retorno do investimento aumentado. Portanto, se recursos computacionais podem ser flexíveis e alocados de acordo com a necessidade, então, empresas podem reduzir os custos e riscos operacionais. Nesse contexto, apresenta-se a computação em nuvem, que tem como principal objetivo dispor serviços de TI sob uma demanda desejada com pagamento baseado no que foi consumido (utilizado). Modelos anteriores à computação em nuvem tiveram algumas limitações, sejam elas por focar em recursos específicos de TI ou uma parte específica de usuários. (BUYYA et al., 2008). Computação em nuvem provê serviços para diferentes públicos-alvo, desde o usuário comum que utiliza o serviço para o simples armazenamento de seus documentos pessoais na internet até empresas que utilizam toda sua infraestrutura de TI nesse modelo. Com a computação em nuvem, todos os recursos computacionais podem ser aproveitados na nuvem, sendo entregues aos seus diversos usuários sob demanda (SOUSA; MOREIRA; MACHADO, 209). A computação em nuvem vem da evolução de alguns paradigmas que tinham como visão a Utily Computing que se caracteriza em ofertar serviços e produtos sob demanda (BUYYA et al., 2008). O modelo de computação em nuvem tem a característica de fornecer acesso fácil ao serviço, custos reduzidos, escalabilidade e disponibilidade. Segundo Sousa; Moreira; Machado (2009), Este modelo visa fornecer, basicamente, três benefícios. O primeiro benefício é reduzir o custo na aquisição e composição da infra-estrutura requerida para atender às necessidades das empresas, podendo essa infra-estrutura ser composta sob demanda e com recursos heterogêneos e de menor custo. O segundo é a flexibilidade desse modelo no que diz respeito à adição e substituição de recursos
12 10 computacionais, podendo escalar tanto recursos de hardware quanto de software para atender às necessidades das empresas e usuários. O último benefício destacado é prover uma abstração e facilidade de acesso aos usuários destes serviços. Os usuários dos serviços não precisam conhecer aspectos de localização física e de entrega dos resultados destes serviços (SOUSA; MOREIRA; MACHADO, 2009, p.4). Portanto, com todas essas vantagens da computação em nuvem, tais como custos reduzidos, flexibilidade e disponibilidade, esse modelo representa uma solução ótima para diversos problemas. De acordo com Leavitt (2009) esses benefícios têm atraído diversas organizações, que vêem na nuvem uma ótima oportunidade para reduzir os custos de TI, reduzir o custo de desenvolvimento de aplicações e tornar o processo mais escalável. A escolha do serviço de nuvem para a migração de uma aplicação é de fundamental importância para a redução dos custos operacionais das empresas e na melhoria dos serviços prestados por empresas. Entretanto o mercado atual oferece uma grande gama de ofertas de serviços baseados na computação em nuvem, o que dificulta a seleção de quais serviços são mais adequados para as necessidades de uma determinada organização que desejam terceirizar sua infraestrutura de TI (LI, 2010). O processo de tomada de decisão na seleção de serviços em nuvem é um grande desafio, visto que existem muitos provedores e cada um destes fornece uma variedade de serviços com desempenho e preços diferente. Existem alguns trabalhos que tem como abordagem este problema. Beserra, et al (2012) provê um processo para dar suporte a migração de um sistema legado para a computação em nuvem e Song, (2013) desenvolve um sistema de apoio à decisão para a migração de aplicativos para a nuvem. Estes trabalhos tratam apenas do aspecto de custo. Este trabalho propõe uma ferramenta para auxuliar o processo de tomada de decisão na seleção de serviços de provedores na nuvem, que considere aspectos não apenas de custo, mas também de desempenho. A ferramenta trata os requisitos dos usuários que desejam migrar suas aplicações para a nuvem fornecendo informações para selecionar o recurso mais adequado de cada provedor.
13 11 2 REVISÃO BIBLIOGRÁFICA 2.1 Computação em Nuvem O termo computação em nuvem está cada vez mais presente nas indústrias de TI. Esse termo denota a infraestrutura como uma nuvem que abstrai e oculta sua complexidade, assim podendo empresas e os usuários ter acesso a aplicações de qualquer lugar do mundo sob demanda de maneira rápida e fácil sem referência à infraestrutura de hospedagem subjacente. Esta infraestrutura é composta por centros de dados que são monitorados e mantidos o tempo todo por provedores de conteúdo, sendo cada parte desta infraestrutura provida como um serviço (BUYYA et al., 2008). Na nuvem, todo serviço computacional torna-se disponível. A partir de suas máquinas, um navegador e acesso à internet já é o bastante para que os usuários possam ter acesso e utilizar os diversos recursos e serviços oferecidos pela nuvem para diversos fins, podendo explorá-los ao máximo, como por exemplo, a capacidade de processamento e armazenamento, aumentando assim os recursos de hardware que é disposto sob demanda. Isso devido à virtualização, pois dentro de cada máquina física existente nessa infraestrutura existe um número variável de máquinas virtuais (VM) em execução, que pode variar de acordo com a capacidade disponível do hardware na máquina física (SOUSA; MOREIRA; MACHADO, 2009). Taurion (2009) destaca alguns benefícios associados à Computação em Nuvem, dentre eles podemos destacar: a redução de custos, uma vez que com a utilização da nuvem o investimento na aquisição de infraestrutura irá diminuir, capacidade de abstração, que elimina as tarefas burocráticas de gerenciar o parque tecnológico deslocando esse serviço para o provedor da nuvem e a utilização de uma infraestrutura flexível e escalável, com melhor utilização dos recursos computacionais, pois nesse modelo é implementado na prática o conceito de computação sob demanda, pelo qual os serviços de computação são alocados de acordo com o que é requisitado. O modelo definido como computação em nuvem é uma evolução da Utility Computing, que provê serviços e produtos de tecnologia da informação sob demanda (BRANTNER et al. 2008). O objetivo do utility computing é fornecer os ingredientes básicos tais como armazenamento, CPUs, e largura de banda de rede como uma mercadoria por prestadores de serviços públicos especializados de baixo custo unitário. Os usuários desses serviços não precisam se preocupar com a escalabilidade, pois o
14 12 armazenamento fornecido é praticamente infinito. Além disso, a utility computing provê total disponibilidade, ou seja, os usuários podem ler e gravar dados em qualquer tempo, sem nunca serem bloqueados, os tempos de resposta são (praticamente) constantes e não dependem do número de utilizadores simultâneos, o tamanho da base de dados, ou qualquer outro parâmetro do sistema. Além disso, os usuários não precisam se preocupar com backups. Se os componentes falham, é a responsabilidade do provedor de utilidade para substituí-los e fazer os dados disponíveis, utilizando réplicas no mesmo período (BRANTNER et al. 2008, p.251). Um motivo para a crescente criação de novos serviços baseados em Utilily Computing é que consumidores que utilizam esse tipo de serviço pagam apenas por aquilo que adquirem, o pagamento é feito a partir do uso. Com isso não é necessário um investimento alto em TI e o custo cresce de acordo com o crescimento e utilização do serviço. Há algumas definições para a computação em nuvem. O National Institute of Standards and Technology (NIST). Tem a seguinte definição: Computação em nuvem é 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 mínimo esforço gerencial ou interação com o provedor de serviços (MELL; GRANCE. 2011, P.2). De acordo com Taurion (2009, p.2) a computação em nuvem pode ser definida da seguinte forma, Um conjunto de recursos como capacidade de processamento, armazenamento, conectividade, plataformas, aplicações e serviços disponibilizados na Internet. A seguir, iremos descrever o modelo de computação em nuvem, que segundo o NIST é composto por cinco características essenciais, três modelos de serviço e quatro modelos de implantação Características Essenciais As características essenciais da computação em nuvem são suas principais vantagens que tem a oferecer ao consumidor que a utiliza e o conjunto dessas vantagens tende a definir esse modelo. Essas características, detalhadas a seguir, formam a base para a definição de conceito de computação em nuvem.
15 13 Self-service sob demanda A nuvem oferece vários recursos que podem ser adquiridos sob demanda. O usuário pode comprar tempo de processamento no servidor ou espaço de armazenamento, de acordo com a sua necessidade. Tudo é feito de maneira automática no prestador de serviço, e a intervenção humana não é necessária (MELL; GRANCE. 2011). Amplo acesso Recursos estão disponíveis por meio da rede acessados por meio de mecanismospadrão que promovam o uso por plataformas heterogêneas thin ou thick client (por exemplo, celulares, tablets, notebooks e estações de trabalho) (MELL; GRANCE p. 2). Pooling de recursos Os recursos computacionais do provedor são organizados para servir múltiplos usuários, os usuários podem ter acesso a recursos físicos e virtuais conforme a demanda feita de maneira dinâmica. Exemplos de recursos incluem o armazenamento, processamento, memória e largura de banda de rede (MELL; GRANCE. 2011). Elasticidade Recursos podem ser adquiridos de forma elástica, em alguns casos automaticamente, caso haja necessidade de escalar com o aumento e diminuição da demanda. Para os usuários, os recursos disponíveis para uso parecem ser ilimitados e podem ser adquiridos em qualquer quantidade e a qualquer momento (MELL; GRANCE. 2011). Serviço medido O serviço de nuvem utiliza um meio de medição para fazer o controle e otimização dos recursos. Nesse contexto, a automação se realiza por meio de abstração própria para esse tipo de serviço, estabelecendo entre outros o armazenamento, processamento, largura de banda e conta dos usuários ativas. Esse serviço por ser monitorado e controlado permite uma maior transparência para o provedor e usuário (MELL; GRANCE. 2011).
16 Modelos de Serviços Visto as inúmeras vantagens e características propostas pela computação em nuvem, foram oferecidos diversos serviços que atendem essas características, esses serviços foram divididos em diferentes modelos para atenderem a diversos requisitos e atingir diferentes objetivos de negócio. Atualmente os modelos de serviços estão disponíveis da seguinte maneira: a) Software como um Serviço(SaaS): O modelo SaaS proporciona rodar aplicativos específicos localmente através serviços de potencial interesse para usuários hospedados em sistemas em nuvem. No SaaS, o usuário não administra ou controla a infra-estrutura subjacente, exceto configurações específicas (VAQUERO et al., 2009). Exemplo: Google Docs. b) Plataforma como um Serviço(PaaS): O modelo PaaS assim como o SaaS, o usuário não controla a infraestrutura subjacente, mas controla as aplicações que fora implantadas e as configurações das aplicações hospedadas na infraestrutura. Isso é possível devido o modelo PaaS fornecer sistema operacional, linguagem de programação e ambientes de desenvolvimento, auxiliando a implementação de sistemas de software. Do ponto de vista do negócio, a PaaS permitirá aos usuários utilizarem serviços de terceiros, aumentando o uso do modelo de suporte no qual os usuários se inscrevem para solicitações de serviços de TI ou para resoluções de problemas pela Web. Com isso, pode-se melhorar o gerenciamento do trabalho e as responsabilidades das equipes de TI das empresas. (SOUSA, MOREIRA e MACHADO, 2009). Exemplo: Good App Engine. c) Infraestrutura como um Serviço (IaaS): O modelo IaaS tem como finalidade facilitar o acesso aos recursos disponíveis, nele é possível gerenciar um grande conjunto de recursos de computação, tais como armazenamento e capacidade de processamento. Pode-se escalar dinamicamente, aumentando e diminuindo os recursos conforme a demanda exigir (VAQUERO et al., 2009). Exemplo Amazon.
17 Modelos de Implantação de Nuvem Existem diversos tipos de modelos de implantação, que se diferenciam pelas restrições de acesso e disponibilidade. A disponibilidade é definida de acordo com o processo de negócio, informações disponíveis e a visibilidade definida. A seguir, é apresentada a definição dos tipos de modelo de implantação. Nuvem Privada: a infraestrutura de cloud é operada por uma organização e pode ser gerida pela própria organização ou por empresa terceira. Nuvem comunitária: a infraestrutura de cloud é compartilhada por algumas organizações e abrange uma comunidade específica que tem os mesmo valores. (missão, requisitos de segurança, políticas e considerações de conformidade). Pode ser administrada pelas organizações ou por empresa terceira. Nuvem Pública: a infraestrutura de cloud está disponível para o público geral ou um grupo de indústrias, ou é de propriedade de uma organização que vende os serviços da nuvem. Nuvem Híbrida: a infraestrutura de cloud é composição de uma ou mais nuvens (privada, comunitária ou pública) que se mantêm como entidades únicas; entretanto, são ligadas pela padronização ou propriedade tecnológica, que permite portabilidade de aplicações e de dados (MARTINS, 2010, p. 722). 2.2 Tecnologias para Computação em Nuvem Existe uma grande quantidade de conceitos e tecnologias por trás da computação em nuvem. Algumas empresas já oferecem serviços baseados nessa lógica de infraestrutura de computação em nuvem, umas das primeiras empresas a ofertar esse tipo de serviço foi a Amazon, atualmente outras empresas e corporações também disponibilizam e comercializam esse tipo de serviço, tais como, Google e Microsoft. A seguir apresentamos duas das principais plataformas de serviço de computação em nuvem (Amazon Web Services e Azure). Descreveremos suas principais características, funcionalidades e serviços ofertados Amazon AWS A Amazon oferta serviços de Computação em Nuvem através da Amazon Web Services, que tem como características sua escalabilidade, elasticidade, disponibilidade e desempenho para execução de aplicações nesse ambiente. Oferece, basicamente, quatro serviços: o EC2 (Elastic Computing Cloud); o S3; o SimpleDB e o SQS (Simple Queue Service (TAURION, 2009). O EC2 é um sistema que permite a execução e o gerenciamento de aplicações no ambiente de nuvem da Amazon. É possível instânciar sistemas através da virtualização, sendo possível definir as características de cada instância, tais como, sistema operacional, CPU, armazenamento, memória e pacotes de software. As instâncias das máquinas virtuais são
18 16 variadas e possuem características bem definidas. O EC2 é considerado elástico, pois é possível diminuir e aumentar sua capacidade de acordo com a demanda. O número de instâncias pode aumentar ou diminuir conforme demanda, minimizando os custos (SOUSA; MOREIRA; MACHADO, 2009). Outro serviço é o S3, que fornece um repositório seguro e rápido para armazenar as imagens AMI, além de armazenar e recuperar os resultados intermediários durante a execução das tarefas de processamento. As soluções EC2 armazenam arquivos como objetos no S3 e todos os metadados relacionados ao objeto no SimpleDB. O serviço SimpleDB fornece as funcionalidades de um sistema banco de dados como armazenamento, indexação e consultas em ambientes de nuvem. A arquitetura do SimpleDB é utilizada para o armazenamento e recuperação dos estados do sistema. A vantagem dessa abordagem é que em caso de falhas, um novo nó pode ser iniciado quase que imediatamente baseada nas mensagens contidas na fila do Amazon SQS e seu estado pelo SimpleDB (SOUSA; MOREIRA; MACHADO, 2009). O Amazon SQS é um sistema de comunicação confiável e escalável para enfileirar e armazenar mensagens que estão sendo trocadas entre os recursos computacionais. Estas filas armazenam as mensagens relacionadas e permitem definir opções de entrega e de controle de acesso. O SQS fornece automação de workflows trabalhando em conjunto com o EC2 (SOUSA; MOREIRA; MACHADO, 2009) Microsoft Azure A Azure oferece uma plataforma e serviços em nuvem hospedados nos seus data centers com um conjunto de serviços orientados para desenvolvedores. É composta pelo sistema operacional Windowns Azure e uma série de serviços: SQL Services,.Net Services, Share Point Services e DDynamic CRM Services (TAURION, 2009). A seguir, temos a definição de cada serviço da plataforma Azure por: Sousa; Moreira; Machado (2009), Microsoft.NET Services é um conjunto de serviços escaláveis, orientados ao desenvolvedor e que oferecem os componentes necessários para a maioria das aplicações baseadas em nuvem. O Live Services é um conjunto de componentes dentro do Azure para o tratamento de dados do usuário e recursos da aplicação. Live Services possibilita aos desenvolvedores construírem aplicações ricas que podem conectar com usuários do Windows Live. O Live Services inclui as tecnologias do Live Mesh para sincronização de dados dos usuários e possibilita a extensão de aplicações Web entre múltiplos dispositivos. O SQL Services é um serviço de armazenamento de dados e de processamento de consultas escalável, sendo construído com base na tecnologia do SQL Server. O componente SharePoint Services permite colaborar e criar
19 17 aplicações Intranet e o Dynamics CRM Services é um sistema totalmente integrado de CRM (SOUSA, MOREIRA e MACHADO, 2009, p. 16,17). 2.3 Migrações de Aplicações para a Nuvem A Computação em Nuvem esta se destacando nos últimos anos e crescendo em popularidade, devido ao seu modelo de negócio baseado na virtualização de recursos. A partir das ofertas de elasticidade de recursos, armazenamento, fácil acesso, disponibilidade e grande desempenho na execução de aplicações, atraem cada vez mais usuários para dispor desses serviços aumentando assim o interesse e o número de serviços disponíveis (LEAVITT, 2009). Dentre os benefícios que os usuários e organizações conquistaram a partir da utilização da computação em nuvem destacam-se a capacidade de poder ter controle sobre os recursos computacionais, permitindo aumentar e diminuir os recursos adquiridos de acordo com a demanda, escalabilidade, facilidade de acesso e disponibilidade. Todos esses benefícios diminuem os custos de investimento, pois só serão pagos o que foi consumido e haverá a diminuição de capital investido na infraestrutura de TI. No entanto, muitas organizações têm encontrado dificuldade na hora de migrar ou construir suas aplicações para o modelo na nuvem. Seja pelos diversos serviços oferecidos que tornam a migração mais burocrática, difícil de definir uma tomada de decisão que se adéque com os requisitos do cliente (SONG, 2013). A seguir, mostraremos possíveis tipos de migrações de acordo com Andrikopoulos et al. (2013). a) Tipo I. Substituir componente(s) com ofertas de Nuvem. Um ou mais componentes (arquitetônicos) são substituídos por serviços em nuvem. Como resultado, os dados e / ou lógica de negócios são migrados para o serviço de nuvem. Usando o Google App Engine Datastore em lugar de um banco de dados MySQL local é um exemplo deste tipo de migração. b) Tipo II. Migrar parcialmente algumas das funcionalidades do aplicativo para a nuvem.este tipo implica a migração de uma ou mais camadas de aplicação, ou um conjunto de componentes arquitetônicos de uma ou mais camadas de uma execução e funcionalidades para a nuvem. c) Tipo III. Migrar toda a pilha do aplicativo para a nuvem. Este é o exemplo clássico de migração para a nuvem, onde, por exemplo, a aplicação é encapsulada em Máquinas Virtuais e aplicadas na nuvem.
20 18 d) Tipo IV. Aplicação na nuvem. A migração completa do aplicativo. A funcionalidade da aplicação é implementada como uma composição de serviços executados na nuvem. Requer a migração de dados e lógica de negócio para a nuvem, além de todas as ações de adaptação para lidar com possíveis incompatibilidades. Para a realização desse trabalho, iremos considerar que o usuário esteja buscando efetuar a migração de toda a aplicação, onde a partir dos requisitos por ele determinados será proposto a ele ambientes com determinadas configurações de se adéquem com os requisitos pré- determinados. Tornando sua tomada de decisão mais simples e facilitando no processo de migração. 3 PROPOSTA DA SOLUÇÃO Com a computação em nuvem e seus benefícios tais como, escalabilidade, flexibilidade, disponibilidade e facilidade de acesso, tem crescido a busca pela a utilização desses serviços. Porém, muitos clientes que desejam migrar suas aplicações para desfrutar dessas vantagens encontram algumas dificuldades na busca por qual serviço utilizar, que se adéqüe com os requisitos de sua aplicação. Muitos provedores disponibilizam para o usuário instâncias de máquinas já préconfiguradas para facilitar a contratação e o uso de seus serviços como, por exemplo, o provedor de serviço Amazon Web Services que oferece os serviços do Amazon EC2 para instanciações de máquinas. Levando em consideração a existência de diversos provedores de serviços na nuvem e a dificuldade inicial dos usuários de selecionar um ambiente que melhor se adéqüe com seus requisitos, seja ele de configuração, custo ou desempenho, esse trabalho propõe um uma ferramenta para auxiliar na tomada de decisão no processo de migração de aplicações, de maneira a unir diversos provedores e suas características comuns de instanciações de máquinas pré-configuradas, como por exemplo, configuração, localização, custo e desempenho, facilitando assim a escolha do usuário por qual provedor ou instância de máquina utilizar.
21 Metodologia Definição das características da ferramenta Nessa fase do projeto foram definidas as funcionalidades da ferramenta, quais seus requisitos e como será seu funcionamento, definindo os parâmetros de entrada do usuário, do ambiente, assim como as informações de saída da ferramenta, levando em consideração o custo e desempenho. O usuário informa os campos a serem preenchidos e as restrições, tais como tipo de sistema operacional, números de núcleos de processamento, quantidade de memória e espaço de armazenamento, assim como também o tempo de uso, desempenho da CPU e o limite de custo. Para o cálculo do desempenho, o usuário deverá executar o benchmark sysbench ou unixbench, por exemplo, na sua máquina. Este mesmo benchmark será executado previamente no provedor e as informações armazenadas. O resultado final será baseado na comparação dos dados de entrada e os dados cadastrados no banco de dados que representa as informações do provedor. A saída será uma listagem das opções de máquinas que se assemelham com as restrições definidas pelo usuário Definição do Provedor e forma de armazenamento das informações obtidas Por limitações de tempo, utilizou-se apenas o provedor Amazon AWS para compor a base de dados do sistema. Contudo, a ferramenta proposta é extensível e pode-se adicionar outros provedores. O processo de armazenamento foi realizado manualmente através da verificação das informações no site da Amazon Web Services, adicionado em um banco de dados manualmente. Os dados consideram custo e desempenho, que podem ser definidos pelos diversos tipos de máquinas, onde difere a quantidade de memória, espaço de armazenamento, capacidade de processamento, custo, sistema operacional, localização geográfica e desempenho, este último obtido a partir da execução do benchmark Desenvolvimento da ferramenta A ferramenta será desenvolvida para Web, de forma a facilitar o acesso pelo usuário, utilizando a linguagem Java e o framework VRaptor, juntamente com um banco de dados relacional PostgreSQL utilizando o framework Hibernate.
22 20 No desenvolvimento do sistema foi usado um processo iterativo e incremental. Os dados do provedor usados para alimentar todo o banco de dados foram adicionados manualmente através da busca no site do provedor Amazon AWS Realização de estudo de caso A partir da realização de estudos de caso, será demonstrado as características e o funcionamento da ferramenta. Como isso, será possível verificar a conformidade da ferramenta em relação aos seus requisitos, bem como destacar cenário onde a ferramenta auxilia no processo de tomada de decisão. 3.2 Descrição da solução Para facilitar a escolha de que provedor e tipo de instância de máquina utilizar para que se adéqüem com os requisitos do cliente propomos um serviço para facilitar a tomada de decisão. Esse serviço leva em consideração algumas características que são comuns entre os provedores que ofertam instâncias de máquinas pré-configuradas, dentre as características comuns foi utilizado alguns parâmetros como, por exemplo, nome da máquina, provedor, sistema operacional, custo por hora, quantidade de memória, núcleos, espaço de armazenamento e localização. Para a utilização do sistema o usuário deverá entrar com os dados, definindo as características de instâncias que ele procura. É possível escolher quatro tipos de buscas, sendo possível abstrair informações que podem ser relevantes ou não para o usuário. A seguir descrevemos cada tipo de busca e seus parâmetros de entrada: a) Busca por Configuração: O usuário terá os seguintes parâmetros como critérios de busca: quantidade de memória, espaço de armazenamento, quantidade de núcleos, sistema operacional e localização. b) Busca por Custo: Nessa busca a aplicação obterá as instâncias que estão dentro do intervalo de custo e tempo previstos pelo usuário. Para isso o usuário terá que definir qual o custo mínimo ou máximo e o período de tempo (numero de horas, dias ou meses). c) Busca por Custo e configuração: Essa busca une todas as características das duas buscas anteriores (Busca por Configuração e Busca por Custo).