Cloud Computing
Introdução
Cloud Computing chegou ao conhecimento de muitas pessoas no ano de 2008, mas tudo indica que ouviremos esse termo ainda por um bom tempo. É conhecido no Brasil como computação nas nuvens ou computação em nuvem, cloud computing se refere, essencialmente, a ideia de utilizarmos, em qualquer lugar e independente da plataforma, as mais variadas aplicações por meio da internet com a mesma facilidade de telas instaladas em nossos próprios computadores. Com o passar dos anos e com a evolução tecnológica surgiram diversas necessidades para quem faz uso de tecnologia, entre estas estão: mobilidade, comodidade, compartilhamento de informações, grande capacidade de armazenamento de dados e diminuição de custos com hardware e software. A necessidade de tornar os dados mais acessíveis de forma compartilhada e auxiliando na redução de custos isso computação em nuvem tem por objetivo. De acordo com o conceito de computação em nuvem essas necessidades serão atendidas com sua utilização, pois o arquivo poderá ser acessado de qualquer lugar, desde que haja Internet, com conforto e praticidade podendo acessar seus dados de um celular, notebook, PDA, desktop ou qualquer outro dispositivo com acesso a Internet. O objetivo deste trabalho é compreender o funcionamento da computação em nuvem através de uma pesquisa que apresenta seus conceitos, características, modelos de aplicação e tipos de serviços. A computação na nuvem ou Cloud Computing é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer lugar e independente da plataforma, bastando para isso ter um terminal conectado à “nuvem”. A palavra nuvem sugere uma ideia de ambiente desconhecido, os quais podem ver somente seu início e fim. Por este motivo esta foi muito bem empregada na nomenclatura deste novo modelo, onde toda a infraestrutura e recursos computacionais ficam “escondidos”, tendo o usuário o acesso apenas a uma interface padrão através da qual é disponibilizado todo o conjunto de variadas aplicações e serviços. A nuvem é representada pela internet, isto é, a infraestrutura de comunicação composta por um conjunto de hardwares, softwares, interfaces, redes de telecomunicação, dispositivos de controle e de armazenamento que permitem a entrega da computação como serviço. Para tornar este modelo possível, é necessário reunir todas as aplicações e dados dos usuários em grandes centros de armazenamento, conhecidos como data centers. Uma vez reunidos, a infraestrutura e as aplicações dos usuários são distribuídos na forma de serviços disponibilizados por meio da internet. Outro ponto importante para o entendimento deste modelo de computação refere-se aos participantes da nuvem. Estes podem ser divididos em três grandes grupos: Provedor de serviço, Desenvolvedor e Usuário. O provedor é responsável pela tarefa de disponibilizar, gerenciar e monitorar toda a infraestrutura da nuvem, garantindo o nível do serviço e a segurança adequada de dados e aplicações. Já o desenvolvedor deve ser capaz de prover serviços para o usuário final, a partir da infraestrutura disponibilizada pelo provedor de serviço. Enquanto o usuário final é o consumidor que irá utilizar os recursos oferecidos pela nuvem computacional. Enfim, a computação na nuvem representa um novo modelo de serviço capaz de fornecer todo o tipo de processamento, infraestrutura e armazenamento de dados através da internet (tanto como componentes separados ou uma plataforma completa) baseada na necessidade do usuário.
Características
A convergência de uma gama de importantes tecnologias permite à computação na nuvem prover serviços de forma transparente para o usuário, dentre outras funcionalidades e particularidades. Campos de tecnologia que são de grande relevância nesta convergência são: Hardware, com a capacidade de virtualização; Tecnologias de internet, como a Web 2.0, serviços web; Gerenciamento de Sistemas, como a computação independente (autonomic computing) e a automação de gerenciamento e manutenção de Data Center; alem da computação distribuída, em especial a utility & grid computing. A seguir descrevemos as características provenientes desta convergência, as quais são essências para o bom funcionamento deste tipo de computação.
Camada de Arquitetura e Tipos de Nuvem
Os serviços de computação na nuvem são divididos em três classes, que levam em consideração o nível de abstração do recurso provido e o modelo de serviço do provedor. O nível de abstração pode ser visto como a camada de arquitetura onde os serviços das camadas superiores podem ser compostos pelos serviços das camadas inferiores. As três classes de serviço são nomeadas da seguinte forma: Infraestrutura como Serviço (IaaS), camada inferior; Plataforma como Serviço (PaaS), camada intermediária; e Software como Serviço (SaaS), camada superior.
Infra-estrutura como Serviço - IaaS
Nesta classe são oferecidos os serviços de infraestrutura sob demanda, isto é, oferece recursos “de hardware” virtualizados como computação, armazenamento e comunicação. Este tipo de serviço prove servidores capazes de executar softwares customizados e operar em diferentes sistemas operacionais. Possui uma aplicação que funciona como uma interface única para a administração da infraestrutura, promovendo a comunicação com hosts, switches, roteadores e o suporte para a inclusão de novos equipamentos. Por se tratar da camada inferior, esta também é responsável por prover a infraestrutura necessária para as camadas intermediária e superior.
Plataforma como Serviço - PaaS
Esta é a camada intermediária. É oferecido como serviço um ambiente no qual o desenvolvedor pode criar e implementar aplicações sem ter que se preocupar em saber quantos processadores ou o quanto de memória esta sendo usada para o executar a tarefa. Utilizando-se da camada inferior, fornece uma infraestrutura com alto nível de integração compatível com diversos sistemas operacionais, linguagens de programação e ambientes de desenvolvimentos.
Software como Serviço – SaaS
A camada mais alta da arquitetura da computação na nuvem tem a responsabilidade de disponibilizar aplicações completas ao usuário final. Este acesso é provido pelos prestadores de serviço através de portais web, sendo completamente transparente ao usuário, o que permite a execução de programas que executam na nuvem a partir de uma máquina local. Para oferecer esta transparência, o SaaS utiliza-se das duas camadas inferiores, o PaaS e o IaaS.
Modelos de Implementação
A implementação da nuvem irá depender da necessidade da aplicação a ser oferecida e do tipo de contrato de prestação de serviço. Apesar da aparência dos serviços serem disponibilidades de forma pública, onde qualquer usuário tem acesso a todo o conteúdo da nuvem, os modelos de negócios tem promovido o desenvolvimento de modelos de implementação que garantam um adequado nível de controle da informação a ser disponibilizada (tipo e conteúdo) e visibilidade da nuvem. Atualmente os tipos de modelo de implementação são Público, Privado, Comunidade e Híbrido. No modelo público a nuvem é disponibilizada para o público em geral ou para grandes grupos industriais. A nuvem é implementada por um prestador de serviço, que deve ser capaz de garantir o desempenho e a segurança da mesma. As nuvens privadas são operadas exclusivamente para uma única organização. O gerenciamento da rede pode ser feito pela própria organização ou por terceiros. No caso de ser feito por terceiros, a infraestrutura utilizada pertence ao usuário, desta maneira, o mesmo é responsável pelo controle sobre a implementação das aplicações na nuvem. O modelo comunidade é caracterizado pelo fato da infraestrutura de nuvem ser compartilhada por várias organizações e suporta uma comunidade específica que partilha as mesmas preocupações como missão, requisitos de segurança, política e considerações de conformidade. Pode ser gerenciado pelas organizações ou por terceiros e podem existir localmente ou remotamente. Na nuvem híbrida a infraestrutura é composta por dois ou mais modelos de implementação, sendo que cada nuvem permanece como uma entidade única, mas que estão unidas pelo uso de tecnologia proprietária ou padronizadas, garantindo a portabilidade de dados e aplicações. No caso da nuvem híbrida ser composta por nuvem pública e privada, a mesma é caracterizada pela possibilidade da nuvem privada ter seus recursos ampliados pela reserva de recursos em uma nuvem pública. Isto permite manter os níveis de serviço mesmo no caso de flutuações rápidas na necessidade de recursos. Outra caraterística interessante é o uso da mesma para executar tarefas periódicas que são mais facilmente implementadas em nuvens públicas.
Vantagens
Dentre as vantagens da computação em nuvem está a possibilidade de acesso aos dados e aplicações de qualquer lugar, desde que haja conexão de qualidade com a internet, trazendo assim mobilidade e flexibilidade aos usuários. O modelo de pagamento pelo uso possibilita ao usuário pagar somente o que necessita, evitando desperdício de recursos, e também graças à esta escalabilidade é possível ampliar a disponibilidade de recursos conforme o usuário verifica necessidade do mesmo. Esta flexibilidade possibilita que o riscos relacionados à infraestrutura sejam minimizados, pois a empresa não precisa comprar muitos recursos físicos e não assume responsabilidade sobre a infraestrutura da contratada. Outras flexibilidades consistem na facilidade de utilização dos serviços e compartilhamento de recursos, além da confiabilidade dos serviços uma vez que a empresas que oferecem os serviços são avaliadas por sua reputação, principalmente pela capacidade manter os dados seguros através de cópias de segurança, criptografia e controle de acesso rigoroso.
Desvantagens
As maiores desvantagens da computação em nuvem são pontos chave para a evolução e adoção da mesma, dentre elas estão: segurança, escalabilidade, interoperabilidade, confiabilidade e disponibilidade. A segurança é o desafio mais visível a ser enfrentado, pois a informação que antes era armazenada localmente irá localizar-se na nuvem em local físico que não se tem precisão onde é e nem que tipos de dados estão sendo armazenados junto a ela. A privacidade e integridade das informações são então itens de suma importância, pois especialmente em nuvens públicas existe uma grande exposição a ataques. Dentre as capacidades requeridas para evitar a violação das informações está: a criptografia dos dados, o controle de acesso rigoroso e sistema eficaz de gerenciamento de cópias de segurança. A escalabilidade é uma característica fundamental na computação em nuvem, pois as aplicações para uma nuvem precisam ser escaláveis (ou “elásticas”). Desta forma os recursos utilizados podem ser alterados conforme a demanda. Para que isso seja possível, as aplicações e seus dados devem ser flexíveis o suficiente. Esta tarefa pode não ser simples e normalmente depende da implementação. A interoperabilidade é o fator que consiste na capacidade dos usuários de executar seus programas e seus dados e nuvens diferentes, permitindo assim que eles não fiquem restritos somente a uma nuvem. Essa é uma característica amplamente desejável no ambiente de computação em nuvem. Embora muitas aplicações tenham tentado levar em consideração esse fator, existe a necessidade de implementação de padrões e interfaces para que essa portabilidade seja possível. A confiabilidade esta relacionada à frequência com que o sistema falha e qual o impacto de suas falhas (perda ou não dados). As aplicações desenvolvidas para computação em nuvem devem ser confiáveis, ou seja, elas devem possuir uma arquitetura que permita que os dados permaneçam intactos mesmo que haja falhas ou erros em um ou mais servidores ou máquinas virtuais sobre os quais essas aplicações estão executando. Essa característica está relacionada à política e gerenciamento das cópias de backup. A disponibilidade é uma grande preocupação, pois mesmo sistemas da Google, como o Gmail, ficaram fora do ar, e por mais que o sistema esteja sempre on-line o usuário sempre necessita do funcionamento da internet que também é um serviço que não possui disponibilidade ao nível de uma rede local. Uma alternativa é ter mais de um prestador e, assim, mais de uma nuvem, oque permitiria aos usuários executar seu programas em outra nuvem enquanto outra esta fora do ar. No entanto, esta alternativa não é tão simples pois requer que haja interoperabilidade entre as nuvens.
Conclusão
Cada vez mais a computação na nuvem esta presente em nosso cotidiano, não só para usuário doméstico, mas como na área empresarial, na área comercial e na área acadêmica. A utilização da computação em nuvem está em tarefas comuns como: publicar uma foto na internet, um comentário em site de rede social, desenvolver um trabalho com um colega usando ferramentas de edição de texto disponibilizadas através de um site (como estou fazendo neste momento) ou simplesmente enviar uma mensagem por correio eletrônico. A nuvem representa uma camada conceitual que abstrai toda infraestrutura da plataforma computacional, deixando os serviços transparentes ao usuário que é atendido como se os dados e programas estivessem em sua máquina local. Os benefícios obtidos com esta tecnologia tem sido expressivos, tanto para grandes corporações, com um grande apelo econômico além da flexibilidade e dinamicidade proporcionada, quanto para o usuário comum, que usufrui principalmente da mobilidade, integração e inteligência das aplicações. A atual estrutura das nuvens tem se mostrado robusta e confiável no sentido de garantir ao usuário uma boa qualidade e quantidade de aplicações e serviços. No entanto é importante que ocorra um amadurecimento de pontos chave, superando os atuais desafios que computação em nuvem enfrenta, com atenção especial à segurança de dados, padronização e modelos de negócios que possam assegurar um comércio justo e seguro para todas as partes envolvidas. Na verdade, qualquer tentativa de definir o que é cloud computing pode não ser 100% precisa. Isso porque as ideias por trás da noção de computação nas nuvens são muito novas e as opiniões de especialistas em computação ainda divergem. Mas a noção básica é a que foi explicada neste artigo.
É claro que ainda há muita coisa por fazer. Por exemplo, a simples ideia de determinadas informações ficarem armazenadas em computadores de terceiros (no caso, os fornecedores de serviço), mesmo com documentos garantindo a privacidade e o sigilo, preocupam pessoas e, principalmente, empresas, motivo pelo qual este ponto precisa ser melhor estudado. Além disso, há outras questões, como o problema da dependência de acesso à internet: o que fazer quando a conexão cair? Algumas companhias já trabalham em formas de sincronizar aplicações off-line com on-line, mas tecnologias para isso ainda precisam evoluir bastante. De qualquer forma, o futuro aponta para esse caminho. Além das mencionadas empresas neste artigo, companhias como Dell, Intel, Oracle e Microsoft já estão trabalhando nas mais variadas soluções para cloud computing. Esta última, por exemplo, já até anunciou o Azure, uma plataforma própria para a execução de aplicações nas "nuvens".