Computação em Nuvem com Linux

Plataformas e Aplicativos da Computação em Nuvem

O armazenamento e a computação em nuvem convertem recursos físicos (como processadores e armazenamento) em recursos com escalabilidade e compartilháveis pela Internet (computação e armazenamento "como serviço"). Embora não seja um conceito novo, a virtualização torna isso muito mais escalável e eficaz pelo compartilhamento de sistemas físicos por meio da virtualização do servidor. A computação em nuvem dá aos usuários acesso a sólidos recursos de computação e armazenamento sem que precisem saber onde tais recursos estão ou como são configurados. Como você pode esperar, o Linux® desempenha uma função de grande importância. Descubra a computação em nuvem e saiba por que há um pinguim atrás daquela marca prateada. [E consulte os novos links de Recursos para obter o conteúdo mais recente do developerWorks sobre a computação em nuvem. -Ed]

M. Tim Jones, Consultant Engineer, Emulex Corp.

M. Tim JonesM. Tim Jones é um arquiteto de firmwares embarcados e autor de Inteligência Artificial: Sistemas de Abordagem, GNU/Linux, Programação de Aplicativos AI (atualmente em sua segunda edição), Programação de Aplicativos AI (em sua segunda edição) e BSD Sockets Programming from a Multilanguage Perspective. Sua formação em engenharia vai desde o desenvolvimento de kernels para nave espacial geossincrônica até a arquitetura de sistema embarcado e o desenvolvimento de protocolos de interligação de redes. Tim é um Engenheiro Consultor para a Emulex Corp. em Longmont, Colorado.


nível de autor Contribuidor do
        developerWorks

11/Fev/2009 (Primeira publicação 10/Set/2008)

Hoje em dia, você não lê um Web site técnico sem que se mencione a chamada computação em nuvem. Na verdade, a computação em nuvem não é nada mais do que um serviço de provisionamento de recursos de computação (computadores e armazenamento). Com isso, vem a capacidade adicional de escalar dinamicamente o serviço em computadores e efetuar armazenamento de forma simples e transparente. Tudo isso é semelhante às ideias por trás da computação de utilitário, na qual os recursos de computação eram vistos como um serviço fornecido regularmente, como no caso dos serviços tradicionais de utilidade pública (eletricidade ou água). A diferença não é o objetivo por trás dessas ideias, mas as tecnologias existentes que se uniram para realizá-las.

Uma das mais importantes ideias por trás da computação em nuvem é a escalabilidade, e a tecnologia-chave que possibilita isso é a virtualização. A virtualização permite um melhor uso de um servidor, agregando vários sistemas operacionais e aplicativos em um único computador compartilhado. A virtualização também permite a migração on-line de modo que, se um servidor fica sobrecarregado, uma instância de um sistema operacional (e seus aplicativos) pode ser migrada para um servidor novo e com menos cluster.

IBM e Amazon Web Services

A computação em nuvem fornece um modo de desenvolver aplicativos em um ambiente virtual, no qual a capacidade, a largura de banda, o armazenamento, a segurança e a confiabilidade do computador não são problema—não é necessário instalar o software em seu próprio sistema. Em um ambiente de computação virtual, é possível desenvolver, implementar e gerenciar aplicativos, pagando somente pelo tempo e pela capacidade que utiliza, enquanto dimensiona o que atenderá às suas necessidades e aos requisitos de negócios em constante mudança.

A IBM fez uma parceria com Amazon Web Services para fornecer a você acesso a produtos de softwares IBM no ambiente virtual Amazon Elastic Compute Cloud (EC2). Nossas ofertas em software do EC2 incluem:

  • DB2 Express-C 9.5
  • Informix Dynamic Server Developer Edition 11.5
  • WebSphere Portal Server e Lotus Web Content Management Standard Edition
  • WebSphere sMash

Este é um código de nível de produto, com todos os recursos e opções ativados. Obtenha informações adicionais e faça download das imagens da Amazon Machine para esses produtos no IBM developerWorks Cloud Computing Resource Center.

Para mais recursos de computação em nuvem, consulte Cloud Computing for Developers space no developerWorks.

De uma perspectiva externa, a computação em nuvem é simplesmente a migração da computação e do armazenamento, de fora de uma empresa para dentro da nuvem. O usuário define os requisitos de recurso (como necessidades de computação e rede de longa distância, ou WAN, ou de largura de banda), e o provedor de nuvem monta virtualmente esses componentes dentro de sua infraestrutura, como mostra a Figura 1.

Figura 1. A Computação em Nuvem Migra Recursos na Internet
A Computação em Nuvem Migra Recursos na Internet

Mas por que você abriria mão, voluntariamente, do controle sobre seus recursos, permitindo que eles existissem virtualmente na nuvem? Embora haja muitos motivos, acredito que dois deles sejam mais importantes: custo e escalabilidade. O objetivo da computação em nuvem é tornar esses recursos menos caros do que aquilo que você pode fornecer e gerenciar. Junto desta redução nos custos vêm maiores flexibilidade e escalabilidade. Um provedor de computação em nuvem pode facilmente tornar seu ambiente virtual escalável para ampliar a largura de banda ou os recursos de computação com a infraestrutura virtual do provedor.

A nova vantagem da computação em nuvem é a capacidade de virtualizar e compartilhar recursos entre diferentes aplicativos para uma melhor utilização do servidor. A Figura 2 mostra um exemplo. Aqui, existiam três plataformas independentes para aplicativos diferentes, cada uma executando em seu próprio servidor. Na nuvem, os servidores podem ser compartilhados (virtualizados) para sistemas operacionais e aplicativos para ser mais bem utilizados pelos servidores, resultando em menos servidores. Menos servidores implicam em menos espaço exigido (minimizando área de cobertura do datacenter) e em menos energia para resfriar (minimizando a emissão de carbono).

Figura 2. Uso de Recurso e Virtualização
Uso de Recurso e Virtualização

Contudo, existem trade-offs, e a computação em nuvem não está livre de defeitos. Este artigo explora alguns desses itens posteriormente. Agora, porém, vamos nos aprofundar mais e explorar a computação em nuvem.

Anatomia da Computação em Nuvem

Conforme você vislumbra o interior da nuvem, descobre que, na verdade, ele não é apenas um único serviço, e sim um conjunto de serviços, como mostra a Figura 3. Essas camadas definem o nível do serviço fornecido.

Figura 3. As Camadas da Computação em Nuvem
As Camadas da Computação em Nuvem

Vamos começar pelo nível mais baixo de serviço fornecido, ou seja, a infraestrutura (Infrastructure-as-a-Service, ou IaaS). A IaaS é o leasing de serviço de infraestrutura (recursos de computação e armazenamento). Isto significa que não somente os computadores virtualizados têm energia de processamento garantida, mas largura de banda reservada para armazenamento e acesso à Internet. Essencialmente, é a capacidade de fazer leasing de um computador ou datacenter com limitações específicas quanto à qualidade do serviço que pode executar um sistema operacional arbitrário e um software.

O Valor da Computação em Nuvem

Além de reduzir os custos de gerenciamento associados aos recursos da computação em nuvem, há outras vantagens. Por exemplo, quando você se separa de seus recursos pela Internet, não importa onde esses recursos residem. Podem estar, por exemplo, em uma condição de refrigeração (natural) no ambiente e, portanto, reduzir o uso de energia.

Avançando pela pilha, o nível de serviço seguinte é a plataforma (Platform-as-a-Service, ou PaaS). A PaaS é semelhante à IaaS, mas inclui sistemas operacionais e serviços exigidos que focam em um aplicativo específico. Por exemplo, a PaaS, além de servidores virtualizados e armazenamento, fornece um sistema operacional particular e um conjunto de aplicativos (normalmente, como uma máquina virtual, ou VM, arquivo, como o formato .vmdk de VMware) junto a um acesso a serviços necessários, como um banco de dados MySQL ou outro, especializado em recursos locais. Em outras palavras, a PaaS é uma IaaS com uma pilha de software customizada para o aplicativo em questão.

Por fim, na parte superior da Figura 3 está o serviço mais simples que pode ser fornecido: o aplicativo. Essa camada é chamada de Software-as-a-Service (SaaS), e é o modelo de software de implementação de um sistema centralizado para execução em um computador local (ou remotamente a partir da nuvem). Como um serviço fornecido regularmente, a SaaS permite o leasing de um aplicativo e pagamento somente pelo tempo utilizado.

Essa é a visão mais abrangente da computação em nuvem. Essa perspectiva ignora certos aspectos da nuvem, como data-Storage-as-a-Service (dSaaS), que fornece armazenamento como um serviço fornecido no qual o consumidor é cobrado com base na capacidade utilizada (a quantidade de armazenamento utilizada) e a utilização (requisitos de largura de banda para o armazenamento). Os serviços da nuvem também surgiram, fornecendo mecanismos internos de interoperabilidade, assim como Interfaces de Programação do Aplicativo (APIs) externas, como serviços da Web.


O Panorama da Computação em Nuvem

Nos últimos meses houve uma explosão de investimentos em computação em nuvem e na infraestrutura relacionada. Esse investimento maciço indica que há demanda para a virtualização de recursos dentro da nuvem. No ano passado surgiram novos serviços, alguns dos quais são mostrados na Figura 4.

Figura 4. Camadas da Computação em Nuvem com Ofertas
Camadas da Computação em Nuvem com Ofertas

Esta lista de ofertas não pretende ser definitiva, uma vez que sofre mudanças com bastante frequência. No entanto, ela fornece uma visão geral de algumas dessas ofertas e de suas diferenças. Há links para algumas dessas ofertas em Recursos posteriormente neste artigo.


Linux e Software Livre na Nuvem

Vamos explorar agora como o Linux e a comunidade de software livre contribuem para o mundo da computação em nuvem. Como você deve ter adivinhado, o Linux e as tecnologias de software livre desempenham um papel de destaque.

Software-as-a-Service

SaaS é a capacidade de acessar softwares pela Internet como um serviço. Uma abordagem anterior à SaaS era o Provedor de Serviços de Aplicativos (ASP). Os ASPs fornecem assinaturas ao software que é hospedado ou enviado pela Internet. O ASP envia o software e cobra tarifas com base em seu uso. Dessa maneira, você não adquire o software; simplesmente faz leasing dele, de acordo com suas necessidades.

Exemplo de SaaS

Um exemplo interessante das diferenças entre aplicativos tradicionais e SaaS é a ferramenta de gerenciamento de ciclo de vida do aplicativo, da SoftwarePlanner.com. Essa empresa oferece sua ferramenta utilizando o modelo tradicional, no qual os clientes hospedam o conjunto de aplicativos em sua empresa, ou como a SaaS, na qual os clientes hospedam o conjunto de aplicativos e o disponibilizam na Internet.

Outra perspectiva da SaaS é a utilização do software pela Internet que executa remotamente. Esse software pode se apresentar na forma de serviços utilizados por um aplicativo local (definido como serviços da Web) ou um aplicativo remoto observado por um navegador da Web. Um exemplo de serviço de aplicativo remoto é o Google Apps, que fornece vários aplicativos corporativos por meio de um navegador da Web padrão. Aplicativos que executam remotamente em geral contam com um servidor de aplicativos para revelar os serviços necessários. Um servidor de aplicativos é uma estrutura de software que expõe APIs para serviços de software (como gerenciamento de transações ou acesso ao banco de dados). Exemplos incluem o Red Hat JBoss Application Server, Apache Geronimo e o IBM® WebSphere® Application Server. Existem muitos outros servidores de aplicativos, e há uma lista abrangente em Recursos.

Outro exemplo recente da SaaS é o navegador Chrome da Google. Esse navegador é um ambiente ideal como um novo desktop, através do qual os aplicativos podem ser entregues (tanto local quanto remotamente) além de fornecer a experiência tradicional de navegação pela Web. (Para mais informações, consulte Recursos.)

Platform-as-a-Service

A PaaS pode ser descrita como uma plataforma virtualizada que inclui um ou mais servidores (virtualizados pelo conjunto de servidores físicos), sistemas operacionais e aplicativos específicos (como Apache e MySQL para aplicativos baseados na Web). Em alguns casos, essas plataformas podem ser predefinidas e selecionadas; em outros, é possível fornecer uma imagem da VM que contenha todos os aplicativos necessários específicos ao usuário.

Um exemplo interessante de PaaS é o Google App Engine. O App Engine é um serviço que permite implementar aplicativos da Web na arquitetura escalável da Google. O App Engine fornece ao usuário uma sandbox para seu aplicativo Python, que pode ser referida na Internet (e linguagens adicionais terão suporte no futuro). O App Engine fornece às APIs Python armazenamento e gerenciamento de dados persistentes (utilizando a Google Query Language, ou GQL) além de fornecer suporte para autenticação de usuários, manipulação de imagens e envio de e-mails. A sandbox na qual é executado o aplicativo da Web restringe o acesso ao sistema operacional subjacente. Embora o App Engine limite a funcionalidade disponível a seu aplicativo, ele fornece suporte à construção de serviços da Web úteis. Consulte Recursos para obter informações adicionais.

Nota: implementar aplicativos no App Engine é grátis, dentro de determinadas restrições de largura de banda e armazenamento. Para criar Web sites com App Engine, são cobradas taxas de utilização.

Outro exemplo de PaaS é o 10gen, que é ao mesmo tempo uma plataforma de nuvem e um pacote de software livre que pode ser transferido por download para a criação de suas próprias nuvens privadas. Sendo uma pilha de software semelhante ao App Engine, o 10gen fornece uma funcionalidade semelhante ao App Enginee—com algumas diferenças. Com o 10gen, é possível desenvolver aplicativos no Python, assim como linguagens de programação JavaScript e Ruby. A plataforma também utiliza o conceito de sandbox para isolar aplicativos e fornecer um ambiente confiável para um vasto número de computadores (construídos, logicamente, no Linux) utilizando seu próprio servidor de aplicativos.

Infrastructure-as-a-Service

A IaaS é um serviço de entrega da infraestrutura de um computador. Esta camada difere da PaaS no sentido de que o hardware virtual é fornecido sem uma pilha de software. Em vez disso, o consumidor fornece uma imagem de VM que é chamada em um ou mais servidores virtualizados. A IaaS é a forma mais bruta de serviço de computação (fora do acesso à infraestrutura física). O provedor comercial IaaS mais conhecido é o Amazon Elastic Compute Cloud (EC2). No EC2, é possível especificar uma VM específica (sistema operacional e conjunto de aplicativos) e, em seguida, implementar seus aplicativos nela ou fornecer sua própria imagem de VM para executar nos servidores. Em seguida, você é cobrado simplesmente pelo tempo de computação, armazenamento e largura de banda da rede.

O projeto Eucalyptus (Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems) é uma implementação de software livre do Amazon EC2 compatível com a interface do serviço comercial. Como o EC2, o Eucalyptus conta com o Linux com Xen para a virtualização do sistema operacional. O Eucalyptus foi desenvolvido na Universidade da Califórnia, em Santa Bárbara, para pesquisas de computação em nuvem. É possível fazer seu download no Web site da universidade (consulte Recursos), ou pode testá-lo por meio do Eucalyptus Public Cloud com algumas restrições.

Outro estilo EC2 da IaaS é a plataforma Enomalism de computação em nuvem. O Enomalism é um projeto de software livre que fornece uma estrutura de computação em nuvem com funcionalidade semelhante ao EC2. O Enomalism é baseado no Linux, com suporte para Xen e Kernel Virtual Machine (KVM). Mas ao contrário das outras soluções IaaS puras, o Enomalism fornece uma pilha de software baseada na estrutura de aplicativo da Web TurboGears e Python.


Outros Desenvolvimento de Nuvem

Além dos desenvolvimentos já discutidos, vários outros pacotes de software livre baseados no Linux são úteis em ambientes de nuvem. O Hadoop é uma estrutura de software livre Java™ semelhante à PaaS, mas com foco na manipulação de grandes conjuntos de dados ao longo de um conjunto de servidores em rede (inspirado no Google MapReduce, que permite um processamento paralelo de grandes conjuntos de dados). Como tal, é utilizado em pesquisas na Web e em aplicativos de publicidades—particularmente, no Yahoo! O Hadoop também fornece vários subprojetos que imitam aplicativos Google. Por exemplo, HBase fornece funcionalidade semelhante a bancos de dados do Google BigTable, e o Hadoop Distributed File System (HDFS) fornece funcionalidade semelhante ao Google File System (GFS).


Problemas e Desafios

Os problemas da computação em nuvem são nítidos—sendo privacidade e segurança dois dos mais importantes. A privacidade pode ser combatida com criptografia, mas por diligência, ela é exigida ao selecionar um serviço de computação em nuvem. Mesmo o comércio eletrônico foi visto com ceticismo quando a Internet começou a crescer. No mundo todo, ocorrem pela Internet transações comerciais na casa dos trilhões de dólares anualmente. Assim, a computação em nuvem colherá benefícios de todas as tecnologias (como Secure Sockets Layer, ou SSL) que tornam segura a Web de hoje.


Indo Além

A corrida à computação em nuvem está só começando e o mesmo acontece com o desenvolvimento de software livre no Linux, que o conduzirá. Levando em conta o investimento maciço em computação em nuvem, fica claro que está ocorrendo uma mudança, um retorno aos centros de dados centralizados. Será interessante ver as novas tecnologias e arquiteturas prestes a surgir.

Recursos

Aprender

Obter produtos e tecnologias

  • JBoss Application Server, Geronimo e WebSphere Application Server são alguns dos mais populares servidores de aplicativos que fornecem um modelo local e de serviços da Web para SaaS.
  • Veja uma introdução ao Google App Engine e pilha do software 10gen. Eles exemplificam soluções PaaS, que fornecem um sistema operacional virtualizado com pilha de software para o aplicativo do usuário.
  • A mais notável solução IaaS é Amazon EC2, mas soluções de software livre, como Eucalyptus e Enomalism, também existem. A IaaS fornece uma infraestrutura virtualizada de hardware pronta para a execução de VM.
  • Hadoop é uma pilha de software que permite processar grandes quantidades de dados de forma escalável e eficaz. Fornece uma plataforma baseada em programação, junto a um sistema de arquivos e aplicativos distribuídos.
  • Com o Software de período experimental IBM, disponível para download diretamente do developerWorks, construa seu próximo projeto de desenvolvimento em Linux.

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux
ArticleID=382606
ArticleTitle=Computação em Nuvem com Linux
publish-date=02112009