O National Institute of Standards and Technology (NIST [1]) disponibilizou no início de Junho o primeiro rascunho de uma definição para Cloud Computing (Computação em Nuvem). Trata-se de um documento de duas páginas com as primeiras linhas do que futuramente deve se tornar uma definição formal desse paradigma de computação na visão do instituto.
O texto é muito acessível e basicamente define cinco características essenciais que definem computação em nuvem, três modelos de entrega dos serviços e quatro modelos de instalação e configuração da infraestrutura necessária para criação das nuvens.
O texto completo está disponível publicamente no site do instituto [2]. Neste artigo gostaria apenas de fornecer a descrição dos três modelos de entrega de serviço definidas neste trabalho, pois através desses conceitos é possível entender melhor os serviços de computação em nuvem oferecidos atualmente:
- Software as a Service (SaaS): Esse é o já conhecido pela maioria dos profissionais da área de software, trata-se de entregar produtos de software para os consumidores finais através de dispositivos e aplicações clientes "leves", como dispositivos móveis (p.ex. celulares e netbooks), e de uma forma mais geral através de navegadores de Internet padrão (browsers). O cliente final não gerencia ou controla a infraestrutura necessária para o funcionamento do serviço, como rede, armazenamento, sistema operacional, nem tão pouco as funcionalidades oferecidas. Nessa categoria estão produtos como Gmail, Google Docs, Twitter, Flickr, Picasa, Facebook, entre muitos outros.
- Plataform as a Service (PaaS): Nessa categoria o provedor fornece uma infraestrutura na nuvem para a instalação e disponibilização de aplicações desenvolvidas pelo o usuário, utilizando ferramentas e ambientes de execução fornecidas pelo provedor do serviço. O usuário não gerencia ou controla os recursos de infraestrutura do ambiente de execução, como sistema operacional, rede, plataforma de execução, banco de dados e etc. Esses recursos são oferecidos de forma transparente através de APIs fornecidos pelo provedor. Mas nesse caso o cliente tem total controle da aplicação em si e geralmente de parâmetros de configuração do ambiente de execução. O Google App Engine [3] é talvés o mais famoso exemplo desse modelo.
- Infrastructure as a Service (IaaS): Neste modelo os serviços oferecidos aos clientes são processamento, armazenamento, rede e outros recursos computacionais fundamentais através dos quais os usuários podem executar quaisquer tipos de aplicações. Nesse caso o cliente tem total controle sobre o ambiente de execução, desde o sistema operacional até a plataforma de execução das aplicações. Porém, o usuário não gerencia ou controla a infraestrutura da nuvem em si, como por exemplo em qual hardware real suas "máquinas" estarão rodando. O Amazon Web Services (AWS [4]) sem dúvida é o melhor representante deste modelo atualmente.
Como diz a primeira nota da versão atual da definição do NIST [2], o paradigma de computação em nuvem está em pleno desenvolvimento e suas definições e características evoluirão com o tempo.
[1] http://www.nist.gov/index.html
[2] http://csrc.nist.gov/groups/SNS/cloud-computing/index.html
[3] http://code.google.com/appengine/
[4] http://aws.amazon.com/