Existem muitas definições de cloud computing na Internet hoje. Sugere-se que a computação em nuvem é simplesmente outro nome para o Software como Serviço (SaaS), modelo que tem sido a vanguarda do movimento web 2.0. Outros dizem que a cloud computing nada mais é do que um novo nome para algumas tecnologias antigas, como virtualização e computação em grade. Na verdade, a computação em nuvem tem um âmbito mais amplo que esses dois conceitos, que são muito específicos. Ela inclui, frequentemente, estas tecnologias (e outras), mas é a estratégia abrangente que define cloud computing.
Acredita-se que no futuro ninguém mais precisará instalar nenhum software em seu computador para desempenhar qualquer tipo de tarefa, pois todos os programas serão acessados através da Internet e essa é a idéia básica da computação em nuvem.
Clusters e grades computacionais
Um aspecto característico da computação de cluster é sua homogeneidade. Na maioria dos casos, os computadores que compõem um cluster são, em grande parte, homogêneos. Isto é, todos tem o mesmo sistema operacional e todos estão conectados à mesma rede. Por comparação, sistemas de computação em grade têm alto grau de heterogeneidade, ou seja, nenhuma premissa é adotada em relação a hardware, sistemas operacionais, redes, domínios administrativos, políticas de segurança e assim por diante.
Grades computacionais são, basicamente, uma coleção distribuída entre diferentes organizações de computadores e recursos de armazenamento mantidos para suprir as necessidades de uma comunidade ou de uma organização virtual. Seus principais componentes são computadores, redes de interligação, sistemas finais específicos, aplicações e servidores.
SaaS (Software as a Service)
Com o surgimento da computação em nuvem e da web 2.0, o software como conhecíamos até hoje, normalmente feito para rodar em determinadas plataformas, com licença de uso, contratos, instalação e manutenção, sofreu algumas modificações e passou a ser chamado de software como um serviço.
Esta visão de software como serviço tornou-se viável com o avanço da Internet, pois tudo passa a ser mais interativo e a comunicação entre o usuário e o software passa a ser mais ampla. Através da computação em nuvem, os desenvolvedores de aplicativos não precisam se preocupar com a distribuição do software, o planejamento e a manutenção dos servidores, o upgrade de hardware, nem mesmo é necessário possuir um servidor próprio, pois os serviços são fornecidos utilizando a estrutura da nuvem. Isso significa que, através da nuvem e utilizando a arquitetura de multiusuários, os desenvolvedores fornecem através da Internet um aplicativo para milhares de clientes, reduzindo os custos para manter o aplicativo.
Para os usuários finais as vantagens também são muitas, como poder utilizar um software sem precisar instalá-lo, sem se preocupar com atualizações, poder utilizar o software em qualquer lugar e hora independente da arquitetura e sistema operacional que o computador possui. Isso também implica em nenhum investimento inicial em servidores ou de licenciamento de software para todas as máquinas.
Hardware as a Service
Não é apenas o software que se torna serviço na nuvem, o hardware também. Para manter os softwares na nuvem é necessária uma boa infra-estrutura, porém manter um servidor não é uma tarefa fácil e, por isso, surgiu o modelo de hardware como um serviço. Esse termo nada mais é do que criar um sistema de “aluguel de máquinas”. Esse mecanismo é impulsionado e amplamente utilizado em empresas onde o foco principal não é T.I., pois consideram que o investimento em servidores é um custo e não um investimento. Estudos também mostram que, na média, a utilização desses servidores gira em torno de 20% e, por isso, alugar ao invés de possuir equipamentos é uma vantagem.
O Hardware também é implementado quase que imediatamente, conforme as necessidades da empresa, seu uso é medido de forma constante e é tudo refletido em uma cota mensal por uso para a empresa. Ou seja, para as empresas utilizarem o HaaS significa aumentar ou diminuir a capacidade computacional em tempo real conforme a necessidade e pagar apenas o que foi utilizado por elas.
Pay as you go
Através dos serviços disponibilizados na nuvem, tanto hardware quanto software, uma empresa pode pagar apenas pelo tempo que utilizar um serviço. Isso implica em uma redução de custo para as empresas, pois não é necessário dispender recursos com sistemas de energia e de resfriamento de equipamentos, nem com manutenção dos servidores e dos softwares, podendo a empresa aplicar seu capital em outras áreas.
Através dos serviços disponibilizados na nuvem, tanto hardware quanto software, uma empresa pode pagar apenas pelo tempo que utilizar um serviço. Isso implica em uma redução de custo para as empresas, pois não é necessário dispender recursos com sistemas de energia e de resfriamento de equipamentos, nem com manutenção dos servidores e dos softwares, podendo a empresa aplicar seu capital em outras áreas.
Virtualização
Virtualização é a capacidade de criação de instâncias de sistemas operacionais virtualmente (máquinas virtuais), ou seja, com pelo menos uma única máquina podemos ter vários sistemas operacionais rodando ao mesmo tempo, simulando vários servidores. Para a computação em nuvem esse é um conceito extremamente importante, sendo para muitos estudiosos da área uma das bases da cloud computing. A virtualização nos leva inexoravelmente em direção à flexibilização e à cloud computing. Há várias coisas que a virtulização faz para abrir a porta da computação em nuvem e empurrar as organizações para dentro dela. Isso é perceptível, já que são inúmeros os benefícios da virtualização, como a diminuição nos custos de manutenção, devido ao número de máquinas reduzido e a melhora no desempenho das máquinas, pois se a empresa possuir três máquinas que ficam muito tempo ociosas ela pode substituir essas três máquinas por apenas uma.
Funcionamento e anatomia
Seu funcionamento pode parecer abstrato, mas alguns serviços que usamos no dia-a-dia ajudam a exemplificar o que significa este modelo. O e-mail é um deles, pois suas mensagens ficam armazenadas em um servidor alheio, servidor do seu provedor de email, por exemplo, e você pode acessar sua conta com todas as suas mensagens de qualquer lugar por meio da Internet.
Seu funcionamento pode parecer abstrato, mas alguns serviços que usamos no dia-a-dia ajudam a exemplificar o que significa este modelo. O e-mail é um deles, pois suas mensagens ficam armazenadas em um servidor alheio, servidor do seu provedor de email, por exemplo, e você pode acessar sua conta com todas as suas mensagens de qualquer lugar por meio da Internet.
Em um sistema de computação em nuvem há uma redução significativa da carga de trabalho nos computadores locais já que eles não precisam mais rodar as aplicações. Em vez disso, a rede de computadores é que faz com que as aplicações funcionem. A demanda por hardware e software no lado do usuário também é diminuida, e a única coisa da qual a máquina do usuário deve ser capaz é rodar o software que proporciona a interface do sistema. Seu funcionamento ocorre de forma que os serviços sejam entregues aos clientes e eles não precisem saber como funciona o mecanismo para entrega desses serviços ou a localidade em que estes serviços estejam fisicamente. Isto é, o funcionamento é transparente aos usuários. Esse funcionamento é análogo ao funcionamento de um cluster ou de um grid.
A nuvem pode ser dividida em camadas que reflitam com precisão as proporções de T.I. em massa no que se refere ao custo, aos requisitos de espaço físico, à manutenção, à administração, à supervisão da gestão e à obsolescência. Essas camadas representam a anatomia geral da nuvem.
Essas camadas são:
- Applications services – esta é a camada mais familiar para os usuários da nuvem. A função da camada de serviço é hospedar aplicações, que se encaixem no modelo SaaS, que rodam na nuvem e são fornecidos para os usuários conforme as aplicações são solicitadas. Muitas vezes, os serviços oferecidos por essa camada são gratuitos e amplamente utilizados na Internet, como Gmail, Yahoo Mail, Google Calendar, Google Docs, e muitos outros. Porém, também existem muitas aplicações na camada de serviço de aplicativos que são pagos e utilizados, na maioria das vezes, por empresas como IBM Lotus Sametime Unyte, Sugar CRM e WebEX. Em todos estes casos, os pedidos são entregues aos usuários de forma transparente e utilizando o modelo SaaS, ou seja, aliviando os usuários de instalação e manutenção de software;
- Platform services – nessa camada podemos encontrar a infraestrutura que auxilia a camada superior. Isto inclui serviços como middleware, troca de mensagens, informação, conectividade, e muitos outros, ou seja, os serviços que dão suporte ao funcionamento dos aplicativos. Para que esses serviços sejam altamente escaláveis, a maioria dos serviços oferecidos nessa camada são virtualizados. Como exemplo de serviços nesse setor temos o Amazon Web Services e o Google App Engine. A plataforma de serviços garante aos consumidores que as aplicações da camada superior sejam atendidas de forma a satisfazer as necessidades dos usuários e fornecendo uma infraestrutura de aplicação baseada na demanda;
- Infrastructure services – na camada mais inferior da nuvem é onde se situam os dispositivos físicos como os servidores, os dispositivos de rede e os discos de armazenamento, que são oferecidos aos consumidores. Tal como acontece na camada acima, a virtualização é um método frequentemente utilizado para fornecer o racionamento na demanda dos recursos. Exemplos de serviço de infra-estrutura incluem o Amazon EC2, Microsoft Azure Plataform, Bluehouse IBM e muitos outros. Nessa camada também conseguimos resolver problemas, como o de equipar de maneira adequada os centros de dados, assegurando o poder de computação quando necessário. Também conseguimos reduzir os custos, já que as técnicas de virtualização são amplamente utilizadas nessa camada e, com isso, os recursos são utilizados de forma mais eficiente.