Introdução à Cloud Computing e o Java
Este artigo explora a origem, conceitos, características e atributos que envolvem o Cloud Computing, com o objetivo principal de prover informações de base que possam servir de auxílio na definição da arquitetura de soluções de tecnologia. E dentro dessa tendência, será analisado qual o impacto e movimentação em curso na plataforma Java.
Conhecer os fundamentos envoltos na nuvem, mantendo uma visão imparcial quanto a soluções de mercado e ferramentas disponíveis, é uma forma mais eficiente de aplicar a tecnologia Cloud Computing. Conhecer ferramentas antes dos princípios e conceitos relacionados a ela pode não ser a forma mais eficiente de aplicar suas habilidades. Para um raciocínio mais claro e de maior amplitude, é importante ter ciência da origem, alicerces e o propósito da tecnologia que moldou as ferramentas e desenhos de soluções apresentadas pelos provedores deste tipo de serviço.
Neste artigo abordamos a origem e os princípios que modelam as soluções de Cloud Computing. Explicamos cada uma das principais características relacionadas a este tipo de solução, quais são os modelos de serviço de nuvem existentes, qual a movimentação em curso na plataforma Java para se adequar a essa tendência, listamos opções para trabalhar na nuvem com Java e abordamos algumas das vantagens e desvantagens de se optar por este modelo de solução.
O termo Cloud (nuvem) surgiu motivado pelos antigos desenhos de projetos de telefonia, onde se representava a rede telefônica com o desenho de uma nuvem, e essa analogia simbólica foi posteriormente copiada para representar a internet em diagramas de redes de computadores. Ao mesmo tempo, servia para definir a separação de responsabilidade, pois a partir daquele desenho de nuvem, a responsabilidade de garantir que tudo funcione e de que o serviço seja fornecido pertenceria a um terceiro.
Esta nuvem hoje se refere ao conjunto de recursos que, por meio da combinação de hardware, rede, armazenamento e funcionalidades, fornece funções de computação na forma de serviços. Este modelo de provimento de computação como serviços, ao invés de produtos, é o que caracteriza o Cloud Computing. Estes recursos não são providos de forma estática, como em soluções de computação Client/Server, mas sim dinâmica, são realizados sob a necessidade do contratante do serviço. Dentre os serviços fornecidos pela nuvem estão incluídos: software, infraestrutura e armazenamento, todos através da comunicação por internet e sob a demanda do usuário.
Apesar de o Utility Computing e o Grid Computing serem mencionados como precursores do Cloud Computing, atualmente são considerados subconjuntos deste. O Utility Computing se originou do processo de transformação da oferta de infraestrutura e de recursos de TI na forma de serviços mensuráveis, similar a como se fornece os serviços de utilidade pública, tal como eletricidade. E o Grid Computing pode ser visto como um super "computador virtual", composto de vários nós de computadores ligados em rede, com um baixo nível de acoplamento, atuando em conjunto para a execução de grandes tarefas. As características dos dois conceitos se fazem presentes no Cloud Computing, com a diferença de que este não está restrito a uma rede especifica, mas sim para a maior rede de todas, a Internet.
Uma metáfora muito utilizada para se compreender a natureza e o impacto que o Cloud Computing pode produzir em TI é a comparação com o modelo de serviço que fornece energia elétrica. Se este serviço fosse igual à forma como TI funciona, teríamos cada instituição possuindo seu próprio gerador de eletricidade, onde a própria instituição deveria se preocupar com todo o trabalho de construção e manutenção para que o provimento de eletricidade seja o suficiente e que nunca cesse. É assim que o serviço de TI funciona na sua vasta maioria. Porém, com o amadurecimento do Cloud Computing, havendo o aumento da confiança com relação à segurança, privacidade e disponibilidade, os serviços de TI podem funcionar de modo semelhante a como são fornecidos os serviços de eletricidade atualmente. Assim, cada instituição não precisaria se ocupar com os detalhes de manutenção e fornecimento dos serviços de TI, e teria disponível um modelo do tipo: "utilize conforme o necessário e pague somente pelo o que utilizou".
Uma empresa que desempenhou um papel importante na definição e consolidação do Cloud Computing foi a Amazon. Mesmo preparada para uma grande capacidade de processamento, na maior parte do tempo utiliza aproximadamente apenas 10% de sua total capacidade, deixando o excesso para eventuais picos (Natal, Dia das Mães). Analisando este cenário, a empresa decidiu inovar, e modernizou sua plataforma de TI para oferecer como serviço estes recursos não utilizados. Partiu então para o desenvolvimento de um novo produto, oferecendo serviços de Cloud Computing para clientes externos, e com isso, em 2006, nascia a Amazon Web Service (AWS), estrutura baseada em um modelo conhecido como computação utilitária, onde armazenamento, processamento e outros serviços são empacotados como recursos computacionais a serem fornecidos. Atualmente, é uma das opções mais famosas que provê serviços na nuvem.
Alguns dos motivadores que ajudaram o crescimento do Cloud Computing foi o aumento da capacidade das redes, o baixo custo do hardware e de dispositivos de armazenamento, e a maior adoção da virtualização de hardware e do SOA. Isto fica claro de se notar quando se elimina, principalmente, onerações físicas de se compor uma solução local, tais como: disponibilidade de espaço físico para instalação do hardware, seu custo de aquisição e de manutenção. Com isso, já se pode observar um dos grandes motivadores da decisão de se utilizar serviços de Cloud Computing: o custo relativamente mais baixo. Outro fator que ajuda o provedor de serviços de nuvem a conseguir um custo mais baixo é o compartilhamento desta mesma plataforma com muitos clientes. As soluções podem estar isoladas entre estes clientes em um determinado nível lógico (software), mas podem compartilhar fisicamente as instalações de hardware. Estas, e outras, são características do Cloud Computing, e estão descritas na ...