UNIJUI UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL DCEENG DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS - PDF
Download "UNIJUI UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL DCEENG DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS"
Mirella Carreiro de Mendonça
1 UNIJUI UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL DCEENG DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS CLOUD COMPUTING ESTUDO DE CASO: FERRAMENTAS DE ARMAZENAMENTO ROBERTO ELI SANMARTIM Ijuí Dezembro/2013
2 UNIJUI UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL DCEENG DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS CLOUD COMPUTING ESTUDO DE CASO: FERRAMENTAS DE ARMAZENAMENTO ROBERTO ELI SANMARTIM Trabalho de Conclusão de Curso apresentado ao curso de Ciência da Computação do Departamento de Ciências Exatas e Engenharias (DCEEng), da Universidade Regional do Noroeste do Estado do Rio Grande do Sul (UNIJUÍ), como requisito para obtenção do titulo Bacharel em Ciência da Computação. Orientador: Prof. Ms. Edson Luiz Padoin Ijuí Dezembro/2013
3 CLOUD COMPUTING ESTUDO DE CASO: FERRAMENTAS DE ARMAZENAMENTO ROBERTO ELI SANMARTIM Trabalho de Conclusão de Curso apresentado ao Curso de Ciência da Computação do Departamento de Ciências Exatas e Engenharias (DCEENG), da Universidade Regional do Noroeste do Estado do Rio Grande do Sul (UNIJUÍ), como requisito para obtenção do titulo Bacharel em Ciência da Computação Orientador: Prof. Ms. Edson Luiz Padoin BANCA EXAMINADORA Prof. Ms. Rogerio Samuel de Moura Martins Ijuí Dezembro/2013
4 AGRADECIMENTOS Agradeço primeiramente a Deus pela sabedoria e por sempre me iluminar e me dar forças nos momentos difíceis. Meu maior agradecimento a meus pais Clecio e Maria Izabel por sempre me encorajarem em minhas escolhas, sempre me dando força para seguir em frente em busca de meu sonho em se tornar um profissional da área da Computação. Não medindo esforços para me ajudar sempre em tudo, sempre disponível para o que precisar. A meu irmão Gabriel pelos momentos engraçados que me faziam esquecer por algum instante a tensão de finalizar meu TCC. Ao meu professor orientador Ms. Edson Luis Padoin pela sua disponibilidade, auxílio e apoio em todas as horas. Por topar ser meu orientador mesmo estando a milhares de quilômetros de distância. Aos demais professores pelos ensinamentos transmitidos, pela amizade, dedicação e paciência em todos os momentos do curso. Aos meus colegas pelos momentos de alegria e companheirismo. MUITO OBRIGADO!!!
5 RESUMO A Computação em Nuvem se tornou nos últimos anos uma ferramenta muito importante na área da tecnologia. Tarefas como obtenção, compartilhamento, manipulação e exploração de uma grande quantidade de dados são comuns nesta área. A computação em nuvem pode contribuir com este cenário à medida que pode disponibilizar recursos de processamento, memória, armazenamento para utilização imediata. A procura pelo uso da computação em nuvem hoje no mercado é muito grande. Existem muitas ferramentas de armazenamento em nuvem, algumas são mais conhecidas e outras menos. Este trabalho tem como objetivo entender o que é a computação em nuvem, quais os benefícios e risco a sua utilização, os modelos de serviço e os tipos de nuvem. Também fazer uma análise das ferramentas de armazenamento em nuvem, apontando suas principais características. Nuvem. Palavras chave: Armazenamento em Nuvem, Casos de Uso, Computação em
6 ABSTRACT Cloud computing has become in recent years a very important tool in the area of technology. Tasks such as obtaining, sharing, manipulation and exploration of a large amount of data is common in this area. Cloud computing can contribute to this scenario as it can provide processing resources, memory, storage for immediate use. The demand for the use of cloud computing in today's market is very large. There are many tools for cloud storage, some are more and others less known. This study aims to understand what is cloud computing, what benefits and risk its use, service models and cloud types. Also make an analysis of cloud storage tools, pointing out their main characteristics. Keywords: Cloud Storage. Cloud Computing. Use Cases.
7 LISTA DE ABREVIATURAS API Application Programming Interface CaaS Comunication as a Service CPU Central Processing Unit DASD Direct access storage device DBaaS Data Base as a Service DevaaS Development as a Service EaaS Everything as a Service IaaS Infra-estrutura como Serviço NIST National Institute of Standards and Technology PaaS Plataforma como Serviço PDA Personal digital assistants QoS Quality of Service SaaS Software como Serviço SGBD Sistema de Gerenciamento de Banco de Dados SLA Services Level Agreement TI Tecnologia da Informação VoIP Voz sobre IP
8 LISTA DE FIGURAS Figura 1. Cloud Computing 17 Figura 2. Segurança na nuvem 21 Figura 3. Principais camadas de aplicação 33 Figura 4. Modelo de serviço SaaS 36 Figura 5. Modelo de serviço PaaS 38 Figura 6. Modelo de serviço IaaS 40 Figura 7. Modelos de Implantação 42 Figura 8. Nuvem Híbrida 46 Figura 9. Tela inicial Dropbox 53 Figura 10. Versionamento 55 Figura 11. Tela inicial Skydrive 57 Figura 12. Histórico de versões 59 Figura 13. Tela inicial Google Drive 60 Figura 14. Gerenciar versões 62 Figura 15. Tela inicial icloud 64 Figura 16. Tela inicial Ubuntu One 67 Figura 17. Tela inicial Sugarsync 70 Figura 18. Todas as versões 71
9 LISTA DE TABELAS Tabela 1. Modelos de Serviços 40 Tabela 2. Valor Planos Dropbox 54 Tabela 3. Valor planos Skydrive 58 Tabela 4. Valor planos Google Drive 61 Tabela 5. Valor planos icloud 65 Tabela 6. Valor planos Ubuntu One 68 Tabela 7. Valor planos Sugarsync 71 Tabela 8. Comparação entre as ferramentas 75
10 SUMÁRIO 1 INTRODUÇÃO Justificativa Objetivo Geral Objetivos específicos COMPUTAÇÃO EM NUVEM Histórico Tecnologias Segurança Escalabilidade Interoperabilidade Confiabilidade Disponibilidade Auto-serviço sob demanda Pooling de Recursos Elasticidade Serviço Medido Portabilidade Alta velocidade no acesso a banda larga Recursos Compartilhados Dispositivos de acesso Dispositivos de armazenamento Pay as you go Service Level Agreement (SLA) Modelos de Serviço Software como Serviço (SaaS) Plataforma como Serviço (PaaS) Infraestrutura como Serviço (IaaS) Comparação entre os tipos de serviços Outros Modelos de Serviço Tipos de Nuvens Nuvem Pública...43
11 2.4.2 Nuvem Privada Nuvem Híbrida Comunidade Benefícios Riscos ESTUDO DE CASO: FERRAMENTAS DE ARMAZENAMENTO EM NUVEM DropBox SkyDrive Google Drive icloud Ubuntu One SugarSync Comparativos CONCLUSÃO REFERÊNCIAS BIBLIOGRÁFICAS... 79
12 12 1 INTRODUÇÃO Neste trabalho serão analisados quais os benefícios que a Cloud Computing traz aos usuários. Quais as vantagens de se usar aplicações de armazenamento em nuvem. Vivemos na era da informação, nosso ambiente é cercado de tecnologias que visam nos manter conectados com o mundo. Uma pessoa processa cerca de 34 gigabytes por dia e nos últimos três anos criou-se mais informações do que nos últimos quarenta mil anos de humanidade, toda essa evolução foi possível graças à inovação tecnológica, principalmente a criação da Internet (LIMA, 2010). Com o crescente avanço tecnológico e maior velocidade e disponibilidade de acesso a internet, muitas empresas passaram a utilizar a computação em nuvem, ou cloud computing, que consiste em colocar dados, softwares e hardwares na rede, sem precisar instalá-los localmente. Muitas das empresas estão aderindo a essa tendência devido a um custo mais acessível que esse serviço proporciona ao invés de investir em uma ampla infraestrutura de TI dentro da empresa. Apesar da vantagem de não ser preciso manter os aplicativos, os computadores e nem as bases de dados dentro da própria organização, deve-se atentar para a segurança, pois quem estará com todas as informações são as empresas que oferecem os serviços de computação em nuvem (DIAS, 2013). A evolução da computação e da internet foi relativamente rápida. Em menos de 40 anos mudamos um cenário centralizado com mainframes, em que as aplicações e os dados eram locais e distribuídos através de redes internas passando para aplicações desktops que compartilham a mesma base de dados. Depois, as aplicações passaram a ser acessadas via browser, disponibilizadas localmente pelas empresas até chegarmos ao nosso cenário atual, em que as aplicações são armazenadas em servidores públicos, com alto poder de processamento e disponibilidade, visando mantê-las sempre em funcionamento com o menor custo possível (SOUSA, MOREIRA e MACHADO, 2009). A computação em nuvens trouxe de volta uma ideia de forma remodelada, a centralização. Criam-se vários datacenters distribuídos, controlados por empresas gigantescas como Microsoft, Google e Amazon e outras. Coloca-se o hardware feito
13 13 sob demanda, centrais de energia e resfriamento de última geração e softwares de controle que provêm aos clientes uma forma rápida de somar, ou retirar, máquinas de seu pátio computacional. Isto é a computação em nuvem. Uma forma de prover serviços com pagamento sob demanda de uso. Você paga pelo que usa e pelo que necessita (COMPUTERWORLD, 2010). Este trabalho tem como objetivo demonstrar as vantagens da utilização da computação em nuvem através de um estudo das suas tecnologias, de seus riscos e benefícios e os diversos tipos de nuvem e também da analise de algumas ferramentas de armazenamento em nuvem. Será feito um estudo sobre cada uma das principais ferramentas de armazenamento em nuvem disponível no mercado. Qual ferramenta possui melhor custo/beneficio, qual delas tem uma maior preocupação quanto à segurança das informações dos usuários. O trabalho está assim organizado em cinco capítulos, sendo o primeiro a parte introdutória, onde explano sobre meus objetivos com o desenvolvimento deste trabalho. No segundo capítulo será abordada a história da computação em nuvem, as tecnologias de segurança, escalabilidade, interoperabilidade, confiabilidade e disponibilidade. Os modelos de serviços. Também será abordado sobre os tipos de computação em nuvens, os benefícios e riscos. No terceiro capítulo será abordado um estudo de caso das diversas ferramentas de armazenamento em nuvens disponíveis no mercado. As principais ferramentas abordadas serão Dropbox, Skydrive, Google Drive, icloud, Ubuntu One, SugarSync. O estudo foi feito sobre essas ferramentas por serem as que estão em maior evidência e em constante evolução. No quarto capítulo uma conclusão sobre o trabalho, o que de mais relevante foi possível abordar com este estudo. E por fim o referencial teórico, apresentando todas as referências utilizadas neste estudo.
14 Justificativa A motivação para desenvolver este trabalho, vem da grande procura do uso da computação em nuvem no mercado. Há muitas ferramentas para armazenamento em nuvem, algumas mais conhecidas e outas menos. Existem questionamentos sobre quais são os pontos positivos e negativos destas ferramentas, se os arquivos armazenados estão bem protegidos na nuvem, dentre as principais ferramentas disponíveis no mercado, quais possuem maiores facilidades para o uso no dia a dia. 1.2 Objetivo Geral Esta pesquisa tem como objetivo geral analisar quais são os pontos favoráveis à utilização de computação em nuvem, quais suas funcionalidades, benefícios e riscos. Também será feito um estudo de diversas ferramentas de armazenamento em nuvem e um comparativo entre elas. Justificando quais são mais recomendadas, usando como critérios, o custo, velocidade, segurança, Sistemas Operacionais que a aplicação suporta, tamanho máximo de cada arquivo e versionamento. 1.3 Objetivos específicos Os objetivos específicos desta pesquisa são: Entender o que é computação em nuvem; Quais os benefícios de se usar; Segurança das aplicações; Sua confiabilidade; Seus riscos; Tipos de Computação em Nuvem; Também foi feito um estudo de caso, abordando algumas das principais ferramentas de armazenamento em nuvem. Fazendo uma análise destas
15 15 ferramentas, usando como critério, o custo, velocidade, segurança, sistema operacional que a aplicação suporta e se possui versionamento e outras características de cada ferramenta.
16 16 2 COMPUTAÇÃO EM NUVEM Neste capítulo foi abordado o referencial teórico da computação em nuvem, o histórico e suas tecnologias, também foram abordados os modelos de serviço, os tipos de nuvens e os benefícios e riscos que ela traz a computação. O termo computação em nuvem, do inglês, Cloud Computing, surgiu como um novo modelo de computação baseado em uma rede massiva de servidores virtuais ou físicos. É visto por alguns especialistas como um conceito mais avançado de virtualização (TAURION, 2007). A computação em nuvem é uma revolução quanto à questão de armazenamento de dados e informações, pois nada mais é instalado e armazenado na própria maquina, tudo esta disponível na internet e pode ser acessado em qualquer lugar. O conceito de computação em nuvem significa possuir uma grande capacidade de armazenamento, processamento e compartilhamento de informações na qual o próprio cliente estabelece quais são as suas necessidades e paga pelos recursos ou tempo ao qual esta utilizando. Por isso ela é considerada como um serviço e não como um produto (FUGULIN, 2010). O conceito de computação em nuvem usa da premissa da utilização de software ou sistemas em rede e da capacidade de dispor recursos ao usuário sob demanda. Desta maneira, as informações são permanentemente armazenadas em servidores na Internet (localizados na nuvem ), sendo realizadas caches destes dados em notebooks, desktops, dispositivos móveis, entre outros computadores desktop, notebooks, dispositivos móveis, os quais estarão fazendo uso da infraestrutura em nuvem (FUGULIN, 2010). Computação em nuvem é a computação considerada como um serviço, não como um produto. O interessado adquire hardware ou software, mas aluga e paga apenas pelo que utilizar (FERNANDEZ, 2011).
17 17 Figura 1. Cloud Computing Fonte: VELTE, 2012, p.5. A figura 1 é uma ilustração de como é a prestação de serviço, a empresa que contrata não paga pelo hardware e pela manutenção. Quem fica responsável por isso é a prestadora que deve compra equipamentos e fazer a manutenção dos mesmos (VELTE, 2012). Com o Cloud Computing, o usuário não precisa investir na compra de computadores e infraestrutura de rede, pois vai utilizar os dispositivos na nuvem. Quem fica responsável por toda a infraestrutura física é o fornecedor, que possui uma rede escalável e elástica, sendo assim apenas cobra a demanda que o cliente usou de sua infraestrutura (VELTE, 2012). Em suma, o Cloud Computing pode ser definido como um modelo no qual a computação (processamento, armazenamento e software) está em algum lugar da rede e é acessada remotamente, via internet. O que realmente significa é que alguém vai assumir a responsabilidade de entregar algumas funções de TI como serviços para alguns clientes e eles não precisam saber como funciona, eles simplesmente irão usar (FEIJÓ, 2009). Há muitos motivos pelos quais as empresas estão mudando as soluções de tecnologia da informação, o que inclui computação em nuvem. Em primeiro lugar, o mercado de computação em nuvem ainda está em crescimento constante, as falhas ainda podem ser mais frequentes nesse primeiro momento, grandes empresas começarão a comprar estes conceitos que ajudarão a reduzir seus respectivos custos, pois irão obter os recursos apenas quando precisar deles e pagará apenas o
18 18 que for usar. Novas ferramentas de gerenciamento chegarão ao mercado, possibilitando o melhor uso desta nova tecnologia e consequentemente nuvens mais seguras irão surgir, isto é só uma questão de tempo (TAURION, 2009). 2.1 Histórico O Conceito de computação em nuvem surgiu na década de 1960 por J.C.R. Licklider que imaginava a computação na forma de uma rede global e quem também introduziu a ideia de uma rede de computadores intergaláctica (CHIRIGATTI, 2009) (KAUFMAN, 2009; MODAMED, 2009). Na década de 60, John McCarthy, famoso e importante pesquisador da área da informática, propôs a ideia de que a computação deveria ser organizada na forma de um serviço de utilidade pública (CHIRIGATI, 2009). A primeira vez que o termo computação em nuvem foi utilizado, foi no ano de 1997 pelo então professor de sistemas de informação da University of Southern Califórnia Ramnath Chellappa (FERNANDEZ, 2011). Outro marco importante para a computação em nuvem foi em 1999, com o surgimento da Salesforce.com, que foi a pioneira em disponibilizar aplicações empresarias através da internet. A partir de então outras empresas começaram a investir nesta área, como a Amazon, Google, IBM e Microsoft (MOHAMED, 2009) (CHIRIGATI, 2009). Um fator predominante para o grande crescimento na demanda de computação em nuvem é o crescimento gigantesco de armazenamento de dados. De acordo com projeções da CenturyLink grande empresa do ramo de comunicação de dados dos EUA até 2015, a procura para armazenamento de dados irá aumentar em quatro vezes levando em conta novos dados e também os dados replicados (CANTU, 2012).
19 Tecnologias A computação em nuvem não é somente uma nova tecnologia, mas sim a combinação de muitas tecnologias que já existiam anteriormente. Estas tecnologias têm crescimento em ritmos diferentes e em diferentes contextos e não foram desenvolvidas em um todo coerente, porém se uniram para criar o ecossistema para a computação em nuvem. Novos avanços nas tecnologias de armazenamento em disco, conexão banda larga e os servidores de baixo custo, combinaram para fazer da computação em nuvem uma solução mais convincente aos usuários (MATHER, 2009). O entusiasmo com a computação em nuvem se deve às inúmeras vantagens que ela pode oferecer tanto aos fornecedores de tecnologia quanto aos usuários (MATHER, 2009) Segurança Um dos maiores desafios a serem enfrentados pela computação em nuvem, sem nenhuma dúvida é a segurança. Nesse novo modelo de computação, o Data Center armazena informações que os usuários armazenariam em seus próprios computadores. Além disso, esses usuários não sabem onde estão armazenados seus dados nem a fonte dos dados que estão armazenados junto aos deles. Assim, a proteção da privacidade dos usuários e a integridade das informações devem ser de responsabilidade dos prestadores de infraestrutura e de serviços (DIKAIAKOS, 2009). A questão da incerteza quanto à segurança da computação em nuvem é o que mais tem causado preocupação quando se é abordado este tema (MATHER, 2009). A disponibilidade de serviços permite que o usuário possa utilizar a nuvem onde e quando quiser. Como a nuvem fica na internet podem ocorrer atrasos e sistemas indisponíveis. Os ambientes de computação em nuvem possuem alta disponibilidade, portanto, estes podem utilizar técnicas de balanceamento de carga e composição de nuvens de forma a atender às necessidades dos usuários. Por
20 20 exemplo, podem-se construir aplicações altamente disponíveis com a implantação de duas ofertas de nuvem diferentes. Se caso uma nuvem falhar, a outra nuvem continua a apoiar a disponibilidade das aplicações (SOUZA, 2009). Velte A., Velte T. e Elsenpeter (2010) destacam alguns pontos relevantes para a segurança nas nuvens. Monitoramento: maior facilidade no controle da segurança, pois o monitoramento não se da em servidores e em numerosos clientes, mas sim na nuvem; Intercâmbio Instantâneo: caso ocorram problemas com os dados armazenados, pode ser feito uma transferência instantânea para outro computador, sem compromete a integridade das informações; Construções Seguras: a rede e o software da própria empresa podem ser agrupados, gerando assim um nível maior de segurança nos dados. Melhoria da Segurança de Software: como os fornecedores não querem perder vendas, eles aplicam os melhores softwares para obter a maior segurança possível dos dados; Teste de Segurança: nos serviços SaaS, os testes de segurança que são realizados nas aplicações não são cobras dos clientes. A utilização da computação em nuvem está crescendo principalmente em empresas de pequeno e médio porte, pela necessidade de maior segurança dos dados destas organizações. Na maioria das vezes estas empresas não possuem uma ampla área de TI para assegurar a integridade dos dados. E com o uso dos serviços nas nuvens, os níveis de segurança obtidos são bem maiores, garantindo assim maior qualidade dos dados e um menor investimento inicial (DIAS, 2012). Conforme Velte (2012) p.138, para se proteger os dados, a maioria dos sistemas usa uma combinação das seguintes técnicas: Criptografia: um logaritmo complexo é usado para codificar a informação. Para decodificar os arquivos criptografados, o usuário precisa da chave de criptografia. Embora seja possível quebrar informações criptografadas, é muito difícil e a maioria dos hackers não tem acesso à quantidade de poder de processamento do computador que eles teriam de quebrar o código;
21 21 Processos de autenticação: isto requer que o usuário crie um nome e uma senha; Práticas de autorização: o cliente enumera as pessoas que estão autorizadas a ter acesso às informações armazenadas no sistema de nuvem. Muitas têm vários níveis de autorização. Por exemplo, um trabalhador de linha de frente poderia ter acesso limitado a dados armazenados na nuvem e o chefe do departamento de TI pode ter completo e livre acesso a tudo. Figura 2. Segurança na nuvem Fonte: VELTE, 2012, p.139. Mas mesmo com essas medidas em vigor, ainda existem preocupações de que os dados armazenados em um sistema remoto são vulneráveis. Há sempre a preocupação de que um hacker vai encontrar um caminho para um sistema seguro e acesso a dados. Além disso, um funcionário descontente poderá alterar ou destruir os dados usando as suas próprias credenciais de acesso (VELTE, 2012) Escalabilidade Embora as organizações possam ter centenas ou milhares de sistemas, a computação em nuvem fornece a capacidade de escala a dezenas de milhares de sistemas, bem como a capacidade de uma rede sólida, de banda e espaço de armazenamento (MATHER 2009). A computação em nuvem é composta por uma enorme rede de nós que necessita ser escalável. A escalabilidade deve ser transparente para o usuário,
22 22 podendo estes dados estar na nuvem e armazenados em qualquer lugar sem a necessidade de saber onde estão estes dados e como eles são acessados (SOUSA, 2009). A escalabilidade é uma característica fundamental na computação em nuvem. As aplicações desenvolvidas para uma nuvem precisam ser escaláveis, de forma que os recursos utilizados possam ser ampliados ou reduzidos de acordo com a demanda. Para que isso seja possível, as aplicações e os seus dados devem ser flexíveis (ou elásticos ) o suficiente. Porém, tornar as aplicações e os dados elásticos pode não ser tão simples assim, dependendo da implementação (CHIRIGATI, 2009). Além das aplicações e dos seus dados serem escaláveis, essa escalabilidade também deve ser realizada rapidamente, ou seja, a resposta das aplicações à demanda dos recursos não pode demorar. Essa particularidade é essencial, visto que, na computação em nuvem, trabalha-se com o modelo pay-per-use e, consequentemente, é importante evitar que os usuários desperdicem dinheiro (ARMBRUST, 2009). Se o usuário é surpreendido por uma demanda repentina, a computação em nuvem pode ajudá-lo a gerenciar ao invés de comprar os ciclos da CPU ou armazenamento de um terceiro. Uma vez que os custos são baseados no consumo, provavelmente não teria de pagar tanto como se fosse o caso de comprar o equipamento. Depois de ter cumprido a necessidade de equipamento adicional, basta parar de usar o prestador de serviços em nuvem e o usuário não terá que lidar com equipamentos desnecessários irá simplesmente adicionar ou subtrair com base na necessidade de sua organização (RUSCHEL, 2008) Interoperabilidade A interoperabilidade diz respeito à capacidade dos usuários de executar os seus programas e os seus dados em diferentes nuvens e plataformas. Isso permite, por exemplo, que as aplicações não fiquem restritas a somente uma nuvem. Essa é uma característica amplamente desejável no ambiente da computação em nuvem. Ultimamente, muitas aplicações têm sido desenvolvidas considerando esse fator.
23 23 Porém, ainda há a necessidade da implementação de padrões e interfaces para que essa portabilidade seja possível (DIKAIAKOS, 2009). A interoperabilidade está preocupada com a capacidade dos sistemas de se comunicar entre eles. Ela exige que a informação comunicada seja compreendida pelo sistema de recepção. No mundo da computação em nuvem, isso significa a capacidade de escrever código que trabalha com mais de um fornecedor de nuvem simultaneamente, independente das diferenças entre os prestadores de serviços (AHRONOVITZ, 2010). A ausência, em geral, dessa característica acaba prejudicando a adoção da computação em nuvem por parte de muitas organizações (ARMBRUST, 2009). Os usuários têm a preocupação de não conseguirem retirar seus dados e seus programas de uma nuvem e colocá-los em outra com relativa facilidade, havendo a sensação de que os dados ficam presos em uma determinada nuvem (CHIRIGATI, 2009). Empresas de desenvolvimento de software têm interesse que aplicações possam ser transferidas para a nuvem de forma simples. Essas empresas também esperam que exista interoperabilidade entre diferentes serviços de nuvem, por exemplo, entre serviços de armazenamento. As APIs da Amazon estão se tornando um padrão de fato para serviços sob demanda. Contudo, a quantidade de tecnologias envolvidas é muito grande, tornando-se um desafio padronizar as diversas interfaces e serviços (SOUSA, 2009) Confiabilidade Um sistema é dito como confiável se ele não falhar com frequência, e principalmente, se ele não perder os dados ao falhar. As aplicações desenvolvidas para a computação em nuvem devem ser confiáveis, ou seja, elas devem possuir uma arquitetura que permita que os dados permaneçam intactos mesmo que haja falhas ou erros em um ou mais servidores ou máquinas virtuais sobre as quais as aplicações estão rodando. Essa característica está associada à realização de cópias de segurança dos dados. O armazenamento dessas cópias deve ser feito em local
24 24 seguro para que, caso haja alguma falha nas aplicações e elas percam os dados, estes, ou pelo menos uma parte deles, possam ser recuperados (CHIRIGATI, 2009) Disponibilidade Os usuários da computação em nuvem possuem uma grande preocupação com a questão da disponibilidade dos serviços. Eles esperam que as aplicações estejam sempre disponíveis, ou seja, em execução durante todo o tempo, principalmente nos momentos necessários. Porém, há exemplos de serviços que já ficaram indisponíveis por um determinado período, como o Gmail, que, em 08/11/2008, ficou fora do ar por, aproximadamente, uma hora e meia (ARMBRUST, 2009). Portanto, uma alternativa é ter mais de um prestador de serviços e mais de uma nuvem, o que permite aos usuários executarem seus programas em uma nuvem enquanto a outra apresenta problemas técnicos. Mas essa alternativa pode não ser tão simples, no caso de uma aplicação não funcionar corretamente em outras nuvens (ARMBRUST, 2009). Dependendo do fornecedor, o usuário pode contar com alta disponibilidade, já que, se, por exemplo, um servidor para de funcionar, os demais que fazem parte da estrutura continuam a oferecer o serviço (RUSCHEL, 2008) Auto-serviço sob demanda O usuário pode adquirir unilateralmente recurso computacional como tempo de processamento no servidor ou armazenamento na rede à medida que necessite e sem precisar de interação humana com os provedores de cada serviço. O hardware e o software dentro de uma nuvem podem ser automaticamente reconfigurados, orquestrados e estas modificações são apresentadas de forma transparente para o usuário, que possuem perfis diferentes e assim podem personalizar os seus ambientes computacionais, por exemplo, instalação de software e configuração de rede para definição de determinados privilégios (SOUSA, 2009).
25 25 Os usuários provisionam a utilização de recursos, tais como sistemas complementares (capacidade de processamento, software, recursos de armazenamento) e da rede (MATHER, 2009). A computação em nuvem é um sistema autônomo gerenciado de forma transparente para os usuários. Hardware e software dentro de nuvens podem ser automaticamente reconfigurados, orquestrados e estas modificações são apresentadas ao usuário como uma imagem única. Essa autonomia é importante, pois reduz o custo de equipe de monitoramento do sistema tanto no âmbito centralizado quanto distribuído (Birman et al. 2009). Comparados com sistemas tradicionais, é possível identificar três fatores complexos: intervenção humana limitada, alta alternância na carga de processamento e uma variedade de infraestruturas compartilhadas. Na maioria dos casos, não existem administradores de sistemas para ajudar os desenvolvedores que acessam a nuvem, fazendo com que a plataforma seja automatizada ao máximo e os usuários podem variar a carga de trabalho habitual, necessitando de uma infraestrutura de virtualização eficaz. A gerência também é importante no contexto do desenvolvimento de tecnologia de auto sintonia. Assim sendo, técnicas adaptativas e online deverão ser desenvolvidas para tornar estes sistemas viáveis (SOUSA, 2009). Os usuários não são mais confrontados com a escolha entre software obsoleto e atualização de altas despesas. Quando o aplicativo é baseado na web, as atualizações acontecem automaticamente e são disponibilizados na próxima vez que o usuário ocupar a nuvem. Sempre que o usuário acessar uma aplicação baseada na web, ele está recebendo a versão mais recente, sem a necessidade de pagar ou fazer o download de uma atualização (MILLER, 2009) Pooling de Recursos Os recursos computacionais do provedor são agrupados para servir múltiplos usuários através de um modelo multi-tenant, com diferentes recursos físicos e virtuais, dinamicamente atribuídos e ajustados de acordo com a demanda dos usuários. Estes usuários não precisam ter conhecimento da localização física dos