Arquitetura

Os elementos principais da arquitetura sobre a qual a computação em nuvem se baseia encontram-se mais bem explicados a seguir.

Atores

A computação em nuvem é composta por três atores principais [VAQUERO et al. 2009]: os prestadores de serviços, também conhecidos como SPs (do inglês Service Providers), os usuários dos serviços, também conhecidos como usuários das nuvens, e os prestadores de infraestrutura, também conhecidos como IPs (do inglês Infrastructure Providers). Os prestadores de serviços são aqueles que desenvolvem e deixam os serviços acessíveis aos usuários através de interfaces baseadas na Internet, como já explicado anteriormente. Esses serviços, por sua vez, necessitam de uma infraestrutura sobre a qual estarão instalados; essa infraestrutura é fornecida na forma de um serviço pelos prestadores de infraestrutura. A Figura 3 demonstra essa relação entre os atores.

Figura 3. Os prestadores de serviços possuem uma relação de desenvolvimento e gerenciamento com a interface da infraestrutura e com os serviços; os usuários, por sua vez, são aqueles que utilizam os serviços disponíveis na nuvem. [Figura baseada em VAQUERO et al. 2009]

Camadas

A arquitetura da computação em nuvem pode ser dividida em três camadas abstratas [DIKAIAKOS et al. 2009]. A camada de infraestrutura é a camada mais baixa. É através dela que os prestadores de infraestrutura disponibilizam os serviços de rede e armazenamento da nuvem. Dessa forma, fazem parte dela servidores, sistemas de armazenamento, como os data centers, e roteadores, por exemplo. A camada de plataforma possui uma abstração mais elevada e provê serviços para que as aplicações possam ser desenvolvidas, testadas, implementadas e mantidas no ambiente da nuvem pelos prestadores de serviços. Finalmente, a camada de aplicação é a de mais alto nível de abstração, e aquela que oferece diversas aplicações como serviços para os usuários (Figura 4).

Figura 4. Os principais atores que estão relacionados com as camadas de aplicação, de plataforma e de intraestrutura são, respectivamente, os usuários das nuvens, os prestadores de serviços e os prestadores de infraestrutura.

É importante lembrar que a nuvem esconde toda a infraestrutura para o usuário. O elemento Interface da Infraestrutura (Figura 3) é o responsável por fazer a ligação entre a infraestrutura e os prestadores de serviços. É através dele que tanto a infraestrutura como a plataforma são oferecidas como serviços, de modo que haja o desenvolvimento das aplicações que serão disponibilizadas aos usuários.

Cenários

Como já foi falado anteriormente, a computação em nuvem distribui os recursos na forma de serviços. Esses serviços, por sua vez, podem ser disponibilizados em qualquer uma das camadas abstratas já apresentadas. Com isso, podemos dividir a computação em nuvem em três cenários, em relação aos serviços oferecidos: IaaS, PaaS e SaaS.

Infrastructure as a Service

IaaS (do inglês Infrastructure as a Service) diz respeito aos serviços oferecidos na camada de infraestrutura [SUN 2009a]. Esses serviços incluem servidores, sistemas de armazenamento, roteadores e outros sistemas que são agrupados e padronizados a fim de serem disponibilizados pela rede. É válido ressaltar que são os prestadores de infraestrutura que, através da virtualização, oferecem esses serviços por demanda aos prestadores de serviços [VAQUERO et al. 2009].

A Computação de Alto Desempenho (em inglês, High-Performance Computing) pode se beneficiar consideravelmente com as nuvens que provêem IaaS, uma vez que esse tipo de computação exige uma grande capacidade de processamento. A paralelização dos dados, por exemplo, pode ser implementada com base na virtualização: as execuções e/ou os dados podem ser distribuídos através de múltiplas máquinas virtuais [SUN 2009a].

Platform as a Service

PaaS (do inglês Platform as a Service) encapsula uma camada de software e a disponibiliza como um serviço. Este serviço, por sua vez, serve de plataforma para que serviços de mais alto nível possam ser desenvolvidos [SUN 2009a]. O PaaS é oferecido na camada de plataforma por prestadores de serviços, e os seus usuários também são prestadores de serviços. O objetivo do PaaS é facilitar o desenvolvimento de aplicações destinadas aos usuários de uma nuvem, criando uma plataforma que agiliza esse processo [CHAPPELL 2008].

Os prestadores de serviços que produzem um PaaS, por exemplo, podem construir essa plataforma considerando a integração de um sistema operacional, de um mediador (em inglês, middleware), de softwares de aplicação e de um ambiente de desenvolvimento. Os prestadores de serviços que usarão essa plataforma vêem-na como uma Interface de Programação de Aplicativos, ou API (do inglês Application Programming Interface). Eles irão interagir com a plataforma através da API sem ter a preocupação de gerenciar e escalar os recursos, o que torna o processo de desenvolvimento de aplicações mais rápido e simples. Por outro lado, esses prestadores de serviços ficam limitados pelas capacidades que a plataforma pode oferecer [SUN 2009a].

Um PaaS é construído utilizando-se um ou mais IaaS. A camada de infraestrutura, assim, permanece transparente aos prestadores de serviços que utilizam o PaaS. Além disso, podem ser usados também um ou mais SaaS (estes serão explicados a seguir). Os softwares de aplicação citados acima, por exemplo, seriam SaaS usados no desenvolvimento da plataforma [CHAPPELL 2008].

Software as a Service

SaaS (do inglês Software as a Service) representa os serviços de mais alto nível disponibilizados em uma nuvem. Esses serviços dizem respeito a aplicações completas que são oferecidas aos usuários. Uma única instância de cada uma dessas aplicações permanece em execução na nuvem e, através da virtualização, ela serve múltiplos usuários [SUN 2009a].

Um SaaS é disponibilizado por prestadores de serviços na camada de aplicação. Ele roda inteiramente na nuvem e pode ser considerado uma alternativa a rodar um programa em uma máquina local. Softwares de aplicação, como processadores de texto e sistemas de banco de dados, são exemplos de SaaS.

Abaixo, na Figura 5, é mostrado um exemplo simples da relação entre os três cenários apresentados. Nele, dois IaaS, um que disponibiliza um sistema de armazenamento e outro que oferece um servidor, são usados para a criação de um PaaS, que, por sua vez, é utilizado para o desenvolvimento de duas aplicações.

Figura 5. Exemplo simples da relação entre os cenários, onde dois IaaS são usados para a construção de um PaaS, que, por sua vez, é utilizado para a implementação de duas aplicações (SaaS).

Tipos de Nuvem

As nuvens podem ser classificadas em três tipos básicos: públicas, privadas e híbridas. A escolha entre elas depende das necessidades das aplicações que serão implementadas. Abaixo, esses tipos de nuvem são mais bem descritos [DIKAIAKOS et al. 2009] [SUN 2009a].

Nuvens públicas

As nuvens públicas são aquelas que são executadas por terceiros. As aplicações de diversos usuários ficam misturadas nos sistemas de armazenamento, o que pode parecer ineficiente a princípio. Porém, se a implementação de uma nuvem pública considera questões fundamentais, como desempenho e segurança, a existência de outras aplicações sendo executadas na mesma nuvem permanece transparente tanto para os prestadores de serviços como para os usuários.

Um dos benefícios das nuvens públicas é que elas podem ser muito maiores do que uma nuvem privada, por exemplo, já que elas permitem uma maior escalabilidade dos recursos. Essa característica evita a compra de equipamentos adicionais para resolver alguma necessidade temporária, deslocando os riscos de infraestrutura para os prestadores de infraestrutura da nuvem. Há ainda a possibilidade de destinar algumas porções da nuvem pública para o uso exclusivo de um único usuário, criando o chamado data center privado virtual, que provê a esse usuário uma maior visibilidade de toda a infraestrutura.

Nuvens privadas

As nuvens privadas são aquelas construídas exclusivamente para um único usuário (uma empresa, por exemplo). Diferentemente de um data center privado virtual, a infraestrutura utilizada pertence ao usuário, e, portanto, ele possui total controle sobre como as aplicações são implementadas na nuvem. Uma nuvem privada é, em geral, construída sobre um data center privado.

Caso o usuário queria aumentar os recursos utilizados em sua nuvem privada, ele deve adquirir novos equipamentos, como sistemas de armazenamento, por exemplo, já que a sua nuvem está limitada à capacidade de seu sistema físico. Em uma nuvem pública, como já foi falado anteriormente, não há essa necessidade, uma vez que, como os recursos são facilmente escaláveis, basta o usuário reservar uma quantidade maior deles. Devido a essas diferenças, diz-se que as nuvens públicas são mais adequadas para aplicações temporárias, enquanto que as nuvens privadas são um ambiente mais apropriado a aplicações permanentes que demandam níveis específicos de qualidade de serviço e de localização dos dados.

Nuvens híbridas

As nuvens híbridas combinam os modelos das nuvens públicas e privadas. Elas permitem que uma nuvem privada possa ter seus recursos ampliados a partir de uma reserva de recursos em uma nuvem pública. Essa característica possui a vantagem de manter os níveis de serviço mesmo que haja flutuações rápidas na necessidade dos recursos. A conexão entre as nuvens pública e privada pode ser usada até mesmo em tarefas periódicas que são mais facilmente implementadas nas nuvens públicas, por exemplo. O termo “computação em ondas” (em inglês, surge computing) é, em geral, utilizado quando se refere às nuvens híbridas.

É válido destacar que as nuvens híbridas introduzem a complexidade de determinar a maneira como as aplicações são distribuídas entre nuvens públicas e privadas. A relação entre os dados e os recursos de processamento, por exemplo, deve ser considerada. Se uma aplicação possui uma grande quantidade de dados, o seu processamento em uma nuvem pública pode não ser favorável, já que passar esses dados de sua nuvem privada para uma nuvem pública pode ser muito custoso.