Seção: Calendário
|
|
||
A Computação em Nuvem – ou também comumente conhecida pelo termo inglês Cloud Computing – é, em linhas gerais, um modelo de computação que permite oferecer como serviço recursos de software e/ou de hardware, de maneira transparente para os usuários, por intermédio de redes de computadores. Este modelo de computação segue a mesma ideia de serviços considerados básicos para a sociedade humana moderna. Serviços de utilidade pública como água, eletricidade, telefone e gás possuem uma infraestrutura que os permitem ser entregues em qualquer lugar e a qualquer hora, de forma que seja possível simplesmente abrir a torneira, acender a luz, realizar uma chamada ou usar o fogão sem que os usuários precisem entender como tais serviços chegam às suas casas. Além disso, o uso desses serviços é cobrado de acordo com as diferentes políticas de tarifação do usuário final.
A Computação em Nuvem é uma área em evolução e tem diferentes conotações para os profissionais de TI, dependendo de seus pontos de vista e frequentemente dos seus produtos e serviços (Sridhar, 2009). Não existe uma definição universalmente aceita entre os profissionais de TI para o termo Computação em Nuvem. Entretanto, a definição provida pelo National Institute of Standards and Technology (NIST) pode ser encontrada em diversas publicações de cunho acadêmico e também será a definição utilizada como base neste documento. Em tradução livre, o NIST apresenta a seguinte definição:
A Computação em Nuvem é um modelo que possibilita acesso, de modo conveniente e sob demanda, a um conjunto de recursos computacionais configuráveis (por exemplo, redes, servidores, armazenamento, aplicações e serviços) que podem ser rapidamente adquiridos e liberados com mínimo esforço de configuração ou interação com o provedor de serviços. (Mell & Grance, 2011, p. 2)
Outra definição que pode ser encontrada na literatura é apresentada a seguir, em tradução livre:
Em um modelo de computação tradicional, para construir ou atualizar infraestruturas de TI, os usuários têm que se preocupar com a instalação, configuração e atualização de softwares, adequação do espaço físico e de recursos humanos, além de outros gastos como com licenças de softwares. Com a Computação em Nuvem, os usuários passam a poder acessar os serviços sob demanda e independente de localização. A nuvem é uma metáfora para a Internet ou a infraestrutura de comunicação entre os componentes arquiteturais, deixando evidente uma abstração que oculta para o usuário toda a complexidade da infraestrutura e tecnologias empregadas para oferecer os serviços, como pode ser visto no exemplo apresentado na figura 1.
Para ter acesso aos serviços, os usuários necessitam ter em suas máquinas apenas um sistema operacional, um navegador e acesso a rede de dados ou Internet. Todos os recursos computacionais estão disponíveis na nuvem e os dispositivos dos usuários não precisam de altos recursos computacionais, o que leva à diminuição no custo de aquisição de equipamentos. A cobrança pela utilização dos recursos na nuvem é feita baseada na quantidade de uso. Portanto, paga-se apenas por aquilo que se consome.
![]() Figura 1: Computação em Nuvem [adaptado de (Johnston, 2009)]
Uma pesquisa realizada em 2008 com seis datacenters corporativos mostrou que a maioria dos servidores estava sendo subutilizada, apresentando uma taxa de utilização de apenas 10 a 30% da capacidade de processamento disponível, enquanto os computadores desktop apresentaram uma taxa média de utilização de menos de 5% (VMWare, 2008). Isto se deve ao modo como as corporações planejam suas infraestruturas. Comumente, as empresas são obrigadas a utilizar critérios de pico de carga ao dimensionar as suas necessidades de recursos computacionais. Com o conceito de computação em nuvem e a tecnologia de virtualização, a infraestrutura computacional de datacenter pode ser mais bem utilizada, levando a custos de aquisição e operacionais mais baixos. O gráfico da figura 2 ilustra este ponto. A linha verde representa a infraestrutura presente no datacenter e mostra como o modelo atualmente utilizado para planejamento de infraestrutura pode deixar uma organização com excesso de capacidade ou com um excesso de demanda levando a uma degradação do serviço. Já a linha roxa, seguindo de perto a curva da demanda real, mostra os benefícios da computação em nuvem, que possibilita aumentar ou diminuir a infraestrutura computacional de acordo com a demanda.
![]() Figura 2: Curva de Capacidade e Utilização de Recursos Computacionais [adaptado de (Chades, 2010)].
A computação em nuvem permite, portanto:
Características Essenciais
Algumas características são consideradas essenciais em um ambiente de computação em nuvem. Apesar de algumas delas poderem não estar presentes em uma solução específica, é o seu conjunto que guia o desenvolvimento da computação em nuvem e a difere de outros paradigmas como, por exemplo, os serviços hospedados.
Estas características estão listadas e detalhadas a seguir:
Arquitetura de Computação em Nuvem
A arquitetura de computação em nuvem é baseada em camadas, em que cada camada trata de uma particularidade na disponibilização de recursos (Buyya, Yeo, Venugopal, Broberg, & Brandic, 2009). Sousa, Moreira, & Machado (2009) definem camada como uma divisão lógica de componentes de hardware e software, em que esses recursos são agrupados e organizados para realizar uma determinada tarefa do sistema como um todo. Ainda segundo estes autores, cada camada pode ter seu gerenciamento ou monitoramento realizado de forma independente das outras camadas, melhorando a flexibilidade, reuso e escalabilidade no tocante a substituição ou adição de recursos computacionais sem afetar as outras camadas.
A figura 3 ilustra as camadas referentes à arquitetura da computação em nuvem e suas respectivas associações. É possível distinguir na figura quatro diferentes camadas que se deslocam progressivamente da perspectiva do sistema para a do usuário final.
A camada de mais baixo nível é a de infraestrutura física, que pode conter dispositivos de armazenamento, clusters, desktops e outros recursos de hardware. Esta camada fornece flexibilidade e facilidade de agregação de novos recursos à medida que se tornem necessários.
Uma camada de middleware é responsável por gerenciar a infraestrutura física e tem por objetivos prover um ambiente de execução apropriado para as aplicações e explorar de maneira eficaz os recursos físicos. Esta camada pode ser dividida em duas subcamadas: uma resposável por garantir o isolamento de processos e aplicações, qualidade de serviço, podendo utilizar tecnologias de virtualização; e outra camada responsável por prover um conjunto de serviços que auxiliam os provedores de serviços comerciais e profissionais para os usuários finais – dentre os serviços dessa camada podem ser encontrados negociação de Qualidade de Serviço (QoS), gerenciamento de SLAs, serviços de cobrança, gerenciamento de requisições, entre outros.
![]() Figura 3: Arquitetura da Computação em Nuvem [adaptado de (Vecchiola, Chu, & Buyya, 2009)]
No nível acima da camada de middleware, encontra-se a camada responsável por prover suporte para a construção de aplicações e que contém ferramentas ou ambientes de desenvolvimento. Estes ambientes possuem interfaces Web 2.0, mashups, componentes, recursos de programação concorrente e distribuída, suporte a workflows, bibliotecas de programação e linguagens de programação. Esta camada de desenvolvimento não é utilizada pelos usuários finais, e sim, pelos usuários mais experientes, aqueles que desenvolvem as soluções para computação em nuvem. Esta camada middleware no nível de usuário constitui o ponto de acesso das aplicações à infraestrutura da nuvem.
Por fim, encontra-se a camada das aplicações de computação em nuvem. Esta camada é de interesse do usuário, pois é por meio dela que eles utilizam os aplicativos. As camadas abaixo desta são responsáveis pelas características de escalabilidade, disponibilidade, ilusão de recursos infinitos e alto desempenho.
Virtualização
Um dos conceitos mais presentes na literatura de Computação em Nuvem é o conceito de Virtualização. A virtualização de recursos está no coração da maioria das arquiteturas de nuvem (Baun, Kunze, Nimis, & Tai, 2011). O conceito de virtualização traz uma visão abstrata dos recursos físicos, o que inclui servidores, dispositivos de armazenamento de dados, redes e aplicações. A ideia básica é partilhar recursos físicos e gerenciá-los como um todo. Na figura 4, destaca-se a virtualização de plataforma que é o tipo de virtualização que acelerou a adoção da computação em nuvem (Sridhar, 2009).
Virtualização de plataforma é uma técnica para abstrair os recursos de um computador de tal maneira que o sistema operacional se separa dos recursos físicos do computador. Ao invés de utilizar diretamente os recursos de hardware, o sistema operacional passa a interagir com uma nova camada de software, conhecida como hypervisor. Esta nova camada acessa o hardware e apresenta ao sistema operacional um conjunto virtual de recursos de hardware. Isto possibilita que várias Máquinas Virtuais (VMs) possam ser executadas sobre um único servidor físico e novas instâncias podem ser geradas e executadas sob demanda, criando a base para a elasticidade de recursos computacionais (Baun, Kunze, Nimis, & Tai, 2011).
![]() Figura 4: Virtualização de plataforma (VMWare, 2007)
Virtualização não é um conceito novo – foi inventado e popularizado pela IBM nos anos 60 com o objetivo de executar múltiplos contextos de software em seus mainframes. Na última década, o conceito voltou a ganhar popularidade em datacenters devido às preocupações com a utilização média dos servidores (VMWare, 2008).
Um hypervisor pode ser implementado em um servidor, seja executando diretamente sobre o hardware (hypervisor Tipo 1) ou executando sobre um sistema operacional (hypervisor Tipo 2) (Sridhar, 2009). O hypervisor permite executar múltiplas VMs e é responsável por escalonar o acesso dessas VMs aos recursos de hardware, provendo um acesso consistente a CPU, memória e dispositivos de Entrada e Saída (E/S). Uma VM tipicamente executa um sistema operacional e aplicações. As aplicações não são informadas de que estão sendo executadas em um ambiente virtualizado, e dessa maneira não precisam sofrer alterações para serem executadas apropriadamente.
A virtualização traz alguns benefícios para a computação em nuvem. Dentre estes benefícios, tem-se:
Apesar de estar presente em diversas soluções, a virtualização não é um pré-requisito para a computação em nuvem. Contudo, a virtualização provê um conjunto de ferramentas valiosas e permite uma flexibilidade significante em projetos de computação em nuvem.
|