Componentes

Os principais componentes sobre os quais a computação em nuvem se baseia não são idéias ou conceitos novos, mas sim tendências que já haviam sido previamente estabelecidas. Portanto, com base nesses componentes, a computação em nuvem não é algo novo. Porém, por outro lado, ela é inovadora no sentido de reunir todos esses componentes em uma infraestrutura maior com características singulares [SUN 2009a].

Os principais componentes são apresentados a seguir.

Virtualização

Um dos componentes chave da computação em nuvem é a virtualização. A virtualização diz respeito à criação de ambientes virtuais, conhecidos como máquinas virtuais, a fim de abstrair as características físicas do hardware. As máquinas virtuais, por exemplo, podem ser usadas para emular diversos sistemas operacionais em uma única plataforma computacional. Assim, forma-se uma camada de abstração dos recursos dessa plataforma, alocando-se um hardware virtual para cada sistema.

Na computação em nuvem, os data centers provêem uma rede de serviços que são utilizados à medida que são requeridos. Logo, a distribuição desses serviços entre os usuários pode ser rapidamente alterada, o que exige um suporte para tal dinamismo. A virtualização é o componente responsável pela característica dinâmica dos data centers. Ou seja, ela permite que os ambientes virtuais de cada usuário possam ser ampliados ou reduzidos dinamicamente de maneira a atender aos recursos solicitados. A escalabilidade está diretamente relacionada a essa característica: os recursos são facilmente escaláveis graças a esse dinamismo. É importante verificar que, com a virtualização, as aplicações e os serviços podem ser desenvolvidos e implantados sem que haja a preocupação em relação à camada física dos servidores. As máquinas virtuais são ditas serem as interfaces de mínimo denominador comum entre os prestadores de infraestrutura e os desenvolvedores (prestadores de serviços) [SUN 2009a].

É válido lembrar que a quantidade de data centers presentes na nuvem é muito grande. Logo, a virtualização ajuda a criar uma camada de abstração que engloba todos esses data centers, evitando que eles sejam tratados como sistemas discretos, o que impediria a alocação dinâmica dos recursos.

Em suma, podemos destacar duas principais vantagens da virtualização para a computação em nuvem. A primeira é a escalabilidade, ou seja, a capacidade de aumento e redução da quantidade de recursos utilizados. A segunda é a abstração de toda a infraestrutura para os usuários, característica muito importante para esse novo modelo de computação.

Dois tipos de virtualização devem ser suportados na computação em nuvem [SUN 2009b]: paravirtualização, que permite que um único servidor físico possa ser tratado como diversos servidores virtuais, e clustering, que permite que múltiplos servidores físicos possam ser tratados como um único servidor virtual. A Figura 2 apresenta ambos os tipos de virtualização (os servidores virtuais estão representados através das linhas pontilhadas).

(a)
(b)
Figura 2. Há dois tipos de virtualização que devem ser suportados na computação em nuvem: (a) paravirtualização e (b) clustering.

Serviços Baseados na Internet

A questão de como fornecer as aplicações e os recursos para todos os usuários conectados às nuvens é resolvida através da utilização de serviços baseados na Internet (do inglês Internet-based services), ou seja, serviços que ficam disponíveis pela Internet. Muitas organizações empresariais já utilizavam, e ainda utilizam, aplicações com interfaces na Internet direcionadas não só aos seus consumidores, como também aos seus funcionários e sócios, por exemplo. Como esses serviços podem ser acessados de qualquer lugar e a qualquer hora, dependendo somente de uma conexão de boa qualidade com a Internet, eles tornaram-se elementos fundamentais para a computação em nuvem [SUN 2009a].

Os serviços que as empresas utilizam em seu cotidiano, em geral, usam o protocolo criptografado SSL (Secure Socket Layer), em conjunto com uma autenticação forte, a fim de garantir a segurança das comunicações. Entretanto, quando se trata de computação em nuvem, o assunto deve ser analisado com um maior cuidado [SUN 2009a]. Alguns prestadores de serviços, por exemplo, não oferecem a criptografia dos dados. Além disso, quando se usa criptografia, a grande questão é quem fica responsável pelo gerenciamento das chaves. É importante lembrar que a quantidade de usuários conectados em uma nuvem é muito grande, e questões de segurança tornam-se essenciais. A seção Vantagens e Desafios apresenta o tema da segurança em computação em nuvem com maiores detalhes.

Modelo Pay-per-use

A computação em nuvem trabalha sobre o modelo pay-per-use (também conhecido como pay-as-you-go), que remove o comprometimento, por parte do usuário, de reservar por uma quantidade exata de recursos. Como o próprio nome já diz, o usuário paga por aquilo que usa, ou seja, se for necessário, ele tem a possibilidade de aumentar a quantidade de recursos reservados sem grandes esforços e de forma automática. Com isso, uma aplicação pode existir por apenas alguns minutos, como também pode existir por um tempo muito mais longo, provendo serviços aos usuários. A cobrança é baseada no consumo dos recursos, como, por exemplo, a quantidade de horas utilizadas de CPU e o volume de dados armazenados [SUN 2009a].

A virtualização é a principal responsável pela possibilidade de uso desse modelo. Graças a ela, os recursos são facilmente escaláveis – os ambientes virtuais podem ser rapidamente ampliados, reduzidos e copiados –, como já foi explicado anteriormente. Além disso, o custo desses ambientes não é grande devido ao fato de eles poderem coexistir nos mesmos servidores físicos [SUN 2009a].

Uma conseqüência muito importante do modelo pay-per-use é a redução dos riscos de subutilização e de saturação [ARMBRUST et al. 2009]. A subutilização está relacionada ao fato de usar uma quantidade menor de recursos do que a que foi reservada a priori. Isso acaba gerando recursos que não são consumidos e que, portanto, ficam ociosos. A saturação ocorre quando há um excesso de utilização sobre os recursos reservados, o que pode gerar serviços mais lentos e baixas qualidades de serviço, prejudicando os usuários. Como no modelo pay-per-use o usuário só paga por aquilo que consome, reservando, portanto, somente o necessário, esses riscos são evitados.

Software Livre

O software livre (open-source) desempenha um papel muito importante na computação em nuvem [SUN 2009a]. Ele permite que os elementos básicos, como as imagens de máquinas virtuais, sejam criados a partir de ferramentas que são facilmente acessíveis. Dessa forma, o desenvolvimento das aplicações nas nuvens fica mais simples de ser realizado e mais bem difundido. Conseqüentemente, a quantidade de componentes criados tende a aumentar, facilitando o nível sobre o qual os desenvolvedores programam nas nuvens.

Um exemplo claro dessa importância é o Hadoop, uma implementação de código aberto do MapReduce. O MapReduce é um framework desenvolvido pela Google cujo objetivo é permitir a execução de um programa em paralelo. No ambiente da computação em nuvem, havia a necessidade de se implementar um algoritmo similar ao MapReduce, a fim de haver execuções de um conjunto de dados usando paralelismo. Essa necessidade automaticamente impulsionou o desenvolvimento do Hadoop, que hoje está sendo amplamente usado nas nuvens por diversos programadores [SUN 2009a]. Ferramentas como essa ajudam e incentivam o desenvolvimento de novas ferramentas e aplicação nas nuvens.