Introdução

Essa seção tem o objetivo de introduzir o tema da computação em nuvem, apresentando a definição do termo, sobre a qual ainda há muitas controvérsias, e uma breve história desse novo paradigma da computação. Nas seções seguintes, é realizada uma comparação entre um grid e uma nuvem, e são descritos os componentes principais, os elementos da arquitetura, as vantagens e os desafios a serem enfrentados e as pesquisas atuais da área. Ao final, o trabalho é concluído, e cinco perguntas e respostas referentes ao tema são apresentadas.

Definição

O termo computação em nuvem (do inglês cloud computing) está associado a um novo paradigma na área de computação. Basicamente, esse novo paradigma tende a deslocar a localização de toda a infraestrutura computacional para a rede. Com isso, os custos de software e principalmente de hardware podem ser consideravelmente reduzidos [VAQUERO et al. 2009].

Embora este assunto esteja sendo amplamente discutido nos dias de hoje, ainda não há uma definição completa do termo. Na literatura, podemos encontrar uma infinidade de definições que em algumas vezes podem ser semelhantes, e em outras podem apresentar conceitos diferentes. Por exemplo, alguns autores defendem que a escalabilidade e o uso otimizado dos recursos são características chave da computação em nuvem, enquanto outros discordam, afirmando que esses elementos não são características, e sim requerimentos de uma infraestrutura que suporta esse novo paradigma da computação [VAQUERO et al. 2009].

O trabalho de VAQUERO et al. 2009 tem o objetivo de encontrar uma definição geral para o termo, com vista a contemplar a maior parte das características expostas por diversos autores. A definição universal que foi elaborada considera principalmente três conceitos (esses conceitos serão mais bem explicados nas próximas seções): virtualização, ou seja, a criação de ambientes virtuais para os usuários, escondendo as características físicas da plataforma computacional; escalabilidade, que diz respeito à capacidade de aumento ou redução do tamanho dos ambientes virtuais, caso seja necessário; e, por último, modelo pay-per-use, em que o usuário só paga por aquele serviço que consome. Essa definição encontra-se a seguir.

“Computação em Nuvem, como o próprio nome sugere, engloba as chamadas nuvens, que são ambientes que possuem recursos (hardware, plataformas de desenvolvimento e/ou serviços) acessados virtualmente e de fácil utilização. Esses recursos, devido à virtualização, podem ser reconfigurados dinamicamente de modo a se ajustar a uma determinada variável, permitindo, assim, um uso otimizado dos recursos. Esses ambientes são, em geral, explorados através de um modelo pay-per-use.” [VAQUERO et al. 2009]

De modo que a infraestrutura computacional se localize na rede, os aplicativos e os dados dos computadores pessoais e portáteis são movidos para grandes centros de processamento de dados, mais conhecidos como data centers. Os sistemas de hardware e software presentes nos data centers provêem aplicações na forma de serviços na Internet [DIKAIAKOS et al. 2009]. Cria-se, assim, uma camada conceitual – uma nuvem (Figura 1) – que esconde a infraestrutura e todos os recursos, mas que apresenta uma interface padrão que disponibiliza uma infinidade de serviços. Uma vez que o usuário consiga se conectar a Internet, ele possui todos os recursos a sua disposição, sugerindo um poder e uma capacidade infinitos [VOAS e ZHANG 2009].

Figura 1. A nuvem é uma camada conceitual que engloba todos os serviços disponíveis, abstraindo toda a infraestrutura para o usuário.

Em suma, podemos destacar três principais aspectos que são novos na computação em nuvem, em relação aos modelos anteriores [ARMBRUST et al. 2009]:

  • A ilusão da disponibilidade de recursos infinitos, ilimitados: o conceito da nuvem sugere que o usuário tem em suas mãos toda a Internet e os seus serviços;
  • A eliminação de um comprometimento com antecedência por parte dos usuários: uma empresa pode começar usando poucos recursos de hardware, e, à medida que for crescendo, ou seja, à medida que for necessário, pode ir aumentando a quantidade de recursos usados, sem que haja um comprometimento anterior em relação a essa quantidade; a escalabilidade é uma das características responsáveis por esse aspecto;
  • A habilidade de pagar pelo uso dos recursos à medida que eles são utilizados: o modelo pay-per-use pode usar, por exemplo, uma métrica de processadores por hora, ou de armazenamento por dia, para cobrar pelos serviços; isso permite que os recursos sejam liberados caso não sejam utilizados, evitando um consumo desnecessário.

História

O conceito de disponibilizar serviços de software e hardware por uma rede global não é novo. Já podemos encontrar raízes desse conceito na década de 60, quando Joseph Carl Robnett Licklider, um dos responsáveis pelo desenvolvimento da ARPANET (Advanced Research Projects Agency Network), já havia introduzido a idéia de uma rede de computadores intergaláctica. A sua visão era a de que todos deveriam estar conectados entre si, acessando programas e dados de qualquer site e de qualquer lugar [KAUFMAN 2009] [MOHAMED 2009]. É válido ressaltar que grande parte das suas idéias forma o que hoje conhecemos como Internet.

Ainda na década de 60, John McCarthy, um famoso e importante pesquisador da área da informática, propôs a idéia de que a computação deveria ser organizada na forma de um serviço de utilidade pública, em que uma agência de serviços o disponibilizaria e cobraria uma taxa para seu uso [MOHAMED 2009].

Porém, um dos primeiros marcos para a computação em nuvem só apareceu em 1999, com o surgimento da Salesforce.com, a qual foi a pioneira em disponibilizar aplicações empresariais através da Internet. A partir de então, o termo “computação em nuvem” passou a ganhar mais espaço, e outras empresas também começaram a investir nessa área, como a Amazon, a Google, a IBM e a Microsoft [MOHAMED 2009]. A seção Pesquisa e Desenvolvimento apresenta mais informações referentes aos serviços dessas empresas.