Definições de Computação em Nuvem
A evolução das tecnologias de rede permitiu a criação de aplicações inovadoras que representam soluções disruptivas. Um exemplo claro são os novos negócios na área de transporte coletivo. Muitas pessoas que moram em regiões metropolitanas têm optado por abandonar o carro próprio em favor do uso de transporte coletivo, principalmente, por meio de aplicativos de transporte. Os usuários desses aplicativos podem se beneficiar com a redução de custos e com a maior conveniência e flexibilidade para se deslocar pela cidade. Um aspecto importante nesta mudança de modelo de negócio é que o usuário deixa de comprar um produto (o carro próprio) para usar um serviço (cobrado pelo deslocamento contratado). Você já parou para analisar que isso é uma mudança de setor da economia: do setor de bens de consumo para o setor de serviços.
E no mercado de tecnologia da informação, os clientes consomem produtos ou serviços? Tradicionalmente, recursos computacionais eram ofertados como produtos. Uma empresa comprava servidores, notebooks, ou um software, por exemplo. No entanto, há alguns anos, uma grande mudança de paradigma foi introduzida a partir do conceito de computação em nuvem. Nesse novo modelo, recursos computacionais, como capacidade de processamento ou aplicações, são oferecidos com serviços, não como produtos. Isso significa que o cliente, em vez de adquirir um recurso computacional, passa a pagar pelo seu uso. Nesse contexto, a computação em nuvem pode ser entendida como um paradigma no qual recursos de TI são ofertados como serviços. Por exemplo, em vez de comprar um servidor para hospedar uma aplicação, uma empresa pode alugar um servidor de um provedor de serviços de computação em nuvem.
Veja a seguir uma das mais completas e difundidas definições de Computação em Nuvem:
Computação em nuvem é um modelo para possibilitar acesso remoto, de modo ubíquo, conveniente e sob demanda, a um conjunto compartilhado de recursos computacionais configuráveis (por exemplo, redes, servidores, armazenamento, aplicações e serviços) que podem ser rapidamente alocados e liberados com mínimo esforço gerencial ou interação com o provedor de serviços. (MELL; GRANCE, 2011, p. 2)
Observe que os recursos computacionais disponíveis na nuvem podem ser os mais diversos e a alocação ou liberação dos recursos deve ser dinâmica. Isso foi possível, principalmente, em decorrência dos avanços nas tecnologias de virtualização e de redes de comunicação de dados. O conceito de virtualização permite que, em um mesmo computador, sejam criadas uma ou mais máquinas virtuais. Uma máquina virtual é um software que emula o funcionamento de um computador, ou seja, ela é capaz de executar programas como um computador real emulando, inclusive os componentes de uma máquina física, como disco, processador, monitor e placa de rede.
A Figura 1.1 ilustra um provedor de serviços de computação em nuvem com diversas máquinas virtuais (VMs – virtual machines) instanciadas na infraestrutura de máquinas físicas. O uso de virtualização permite o compartilhamento da infraestrutura entre vários clientes e também viabiliza a alocação dinâmica. Não seria possível instanciar rapidamente um servidor físico, mas isso pode ser feito em instantes para uma máquina virtual. Os avanços nas tecnologias de rede e de serviços Web resultaram num modelo de amplo acesso aos serviços. Os clientes podem usar os recursos computacionais remotamente a qualquer momento.
Sousa, Moreira e Machado (2009) apresentam uma perspectiva interessante, que mostra a computação em nuvem como uma evolução do conceito de Utility Computing. Um serviço de utilidade é aquele distribuído amplamente ao público geral com pagamento baseado no uso, por exemplo, a distribuição de energia elétrica e outros serviços de utilidade pública. Assim, a Utility Computing é uma visão da TI como um serviço de utilidade pago de acordo com a quantidade de recursos utilizados. Nesse contexto, temos serviços de TI sob demanda com pagamento baseado no uso. Esses serviços abrangem vários níveis, desde aplicações para usuários finais, até grandes infraestruturas computacionais para empresas.
Assimile: Atente-se para o fato de que a computação em nuvem não é uma tecnologia específica, nem é uma arquitetura. Ela é, na verdade, um novo modelo de negócio no qual recursos computacionais são provisionados na forma de serviços. O cliente não compra o recurso, ele paga pelo uso do recurso sob demanda.
Em geral, os serviços em nuvem podem ser acessados e gerenciados por uma aplicação Web. No entanto, não podemos afirmar que toda aplicação disponível na Web é uma aplicação em nuvem. A seguir, você irá conhecer algumas das características essenciais de serviços de computação em nuvem, conforme explicado em (SOUSA; MOREIRA; MACHADO, 2009):
Self-service: o próprio cliente gerencia a alocação dos recursos, com mínima interação com o provedor, na verdade, a alocação e uso dos serviços pode ser automatizada.
Amplo acesso: os recursos podem ser acessados remotamente, de qualquer lugar, por meio de tecnologias baseadas em padrões abertos, consequentemente, têm soluções multiplataforma, ou seja, soluções que não dependem do tipo do dispositivo ou sistema operacional, por exemplo.
Pooling de recursos: o provedor mantém um robusto conjunto de recursos que são compartilhados entre os clientes de forma que a localização e a manutenção dos equipamentos é transparente para os clientes.
Elasticidade Rápida: os clientes podem alocar mais recursos diante de um aumento de demanda ou liberar recursos em uso no caso de diminuição da demanda; a alocação ou liberação de recursos deve ser feita rapidamente, inclusive de forma automatizada, por exemplo, por meio de um script que monitora a demanda e reage de acordo com as mudanças.
Serviço medido: o uso dos recursos pelos clientes é detalhadamente contabilizado para fins de tarifação e também para monitoramento da qualidade do serviço.
Conforme Coutinho (2013), a elasticidade é uma das principais características dos serviços disponibilizados em ambientes de computação em nuvem. Essa caraterística cria a ilusão de que os recursos na nuvem são ilimitados, uma vez que é possível aumentar ou diminuir a quantidade de recursos sob demanda.
Exemplificando
Considere uma aplicação de comércio eletrônico na Web. O número de clientes que acessa a aplicação varia muito, por exemplo, entre o horário comercial e o período da noite. Se essa aplicação está replicada em máquinas virtuais (VMs) em um provedor de computação em nuvem, a elasticidade representa a possibilidade de alocar mais VMs durante o dia para atender a uma maior demanda de clientes. Durante a noite, a maior parte das VMs pode ser desligada devido à diminuição na carga de acessos, evitando-se subutilização dos recursos.
