Cloud Computing

8 out, 2010

Realidades da computação em nuvem de software livre – Parte 01

Publicidade

Seu CTO quer saber qual é sua estratégia de computação em nuvem e quer
saber amanhã. Há diversas opções, com muitas diferenças e semelhanças.
Este artigo explora algumas das opções para uma organização que deseja
usar o poder e a promessa de computação em nuvem, com foco em
tecnologias de software livre.

Aprenda sobre diversos fornecedores,
como
Amazon, Microsoft, Google, IBM, Aptana, Heroku, Mosso,
Ning e
Salesforce. Revise os pontos fortes e os fracos relativos
de cada plataforma e quais os tipos de tecnologias de software livre e
proprietária são suportadas em cada plataforma. Aprenda como selecionar
a plataforma que se ajusta às suas necessidades.

Sobre esta Série

Nesta série “Realidades da Computação em Nuvem de Software Livre”
em três partes, aprenda como determinar se a computação em nuvem pode
ajudá-lo e como planejar sua estratégia de computação em nuvem. Na
primeira parte, aprenda os benefícios de computação em nuvem, tipos de
nuvens e opções de alto nível em plataformas de computação em nuvem.
Artigos futuros explorarão o design e o desenvolvimento para a nuvem e
como gerenciar um aplicativo na nuvem.

Computação em nuvem: mais do que publicidade de marketing?

Caso trabalhe em tecnologia há algum tempo, pode estar pensando: “Já não ouvimos tudo isso antes?
A computação em nuvem é apenas mais uma tecnologia com muita publicidade?”
a bala de prata mais recente que deve solucionar todos os seus problemas?
Ou há mais do que isso?

A resposta é “Sim” e “Sim”.
Não há como negar a publicidade em torno da computação em nuvem.
Este artigo discute diversas opções disponíveis de computação em nuvem, mas essa lista está longe de se exaustiva.
Muitos fornecedores estão tentando lucrar com a publicidade.
Ainda assim, há muitos benefícios reais e tangíveis para a computação em nuvem
com ou sem publicidade.

Há alguns aspectos de computação em nuvem com os quais se deve tomar cuidado antes de entrar na nuvem.
Neste artigo, aprenda sobre os benefícios e desafios da computação em nuvem.

Sobre computação em nuvem

  • Tipos de Nuvens

A Wikipedia define a computação em nuvem como
“desenvolvimento e uso de tecnologia de computador baseada na Internet”.
É uma descrição ampla e muitos tipos de ofertas podem ser classificados
como computação em nuvem.

Um grande grupo de ofertas de nuvem são variações de Software as a
Service (SaaS).
Exemplos de SaaS são: aplicativos da Web como Zoho (processamento de
texto, planilha), Salesforce (CRM), SlideRocket (apresentações) ou
serviços da Web como Google Search, Yahoo! Weather ou PayPal. Esses são
todos excelentes exemplos de computação em nuvem, mas, provavelmente,
não são úteis para uma empresa que busca usar computação em nuvem.
Podem, no entanto, ser complementares de outros tipos de computação em
nuvem.

O tipo de computação em nuvem que você pode estar
buscando é um tipo de infraestrutura que, possivelmente, é conhecido
como Platform as a Service
(PaaS). Alguns dos exemplos mais comuns de PaaS são
diversos tipos de armazenamento de dados em nuvem, como os dados não
estruturados com
Simple Storage Service (S3) da Amazon ou Scale out File
Service (SOFS) da IBM.

Ambos são sistemas de arquivos distribuídos.
S3 pode ser acessado através de uma interface de serviços da Web,
enquanto que SOFS pode ser acessado através de protocolos de arquivos,
como NFS e FTP.
A Amazon também oferece armazenamento de dados estruturados com seu
serviço SimpleDB.
SimpleDB permite que dados estruturados sejam salvos e consultados
através de uma interface de serviços da Web.

Computação com certeza é mais do que simplesmente armazenamento e é aí que entram as plataformas de computação em nuvem.
As plataformas fornecem uma maneira de pegar o código e executá-lo em uma plataforma em nuvem.

Isso pode, certamente, ser combinado ao armazenamento em nuvem e aos serviços da Web em nuvem.
Há muitas plataformas disponíveis com uma ampla variedade de vantagens e desvantagens relativas.

  • Benefícios

Por que você desejaria executar seu código em uma
plataforma em nuvem em vez de em seus próprios computadores?
Há diversas razões simples e práticas.
Não é necessário comprar e configurar todos aqueles computadores.

Se
esse fosse o único aspecto de computação em nuvem, não seria nada
diferente de um serviço de hosting.
A principal vantagem da computação em nuvem é ser capaz de ativar
(“rodar”) ou desativar aplicativos rapidamente e aumentar, de forma
elástica, seu poder de computação conforme necessário.

No mínimo, qualquer plataforma de computação em nuvem pode fornecer, de
forma transparente, cada vez mais recursos de computação on demand.
Algumas plataformas também fornecem plataformas de desenvolvimento
comuns de uso geral além da computação on demand.

Resumidamente, a computações em nuvem permite que
sua organização implementar aplicativos rapidamente e fazer com que
cresçam para atenderem às necessidades de seus negócios.
Parece excelente, mas há alguns desafios associados à computação em
nuvem sobre os quais você deve estar ciente.

  • Desafios

É fácil focar inteiramente os benefícios de computação em
nuvem, mas há um lado negativo: um dos problemas mais óbvios com a
computação em nuvem é que os dados que alimentam seu aplicativo vivem na
nuvem, juntamente com seu aplicativo.

Seus dados podem ser sigilosos, como informações que identificam
pessoalmente seu cliente ou sobre seus instrumentos financeiros e
registros de transações.
Também pode-se ter dados não sigilosos que mesmo assim são extremamente
valiosos, como informações agregadas sobre seus usuários e como eles
usam seu aplicativo.
Com informações críticas sendo armazenadas na nuvem, deve-se entender se
a plataforma é segura.

Quem acessa seus dados na nuvem não é a única coisa com
que se deve estar preocupado. A integridade desses dados é tão
importante quanto.
Falha de máquina deve ser esperada, portanto, é crucial que possa ser
feito backup e restauração de seus dados em caso de falha.

Uma plataforma oferece backup e recuperação de dados ou pelo menos
possibilita isso para clientes que precisarem?
A confiabilidade de seu aplicativo é obviamente muito importante.
Quais os tipos de acordos de nível de serviço são oferecidos por uma
plataforma específica?
Essas e outras questões importantes são exploradas à medida que este
artigo examina algumas das plataformas disponíveis.

  • Plataformas

Há muitas plataformas de computação em nuvem entre as
quais escolher. A lista aqui está longe de estar completa, mas deve dar
uma ideia das opções mais populares e das diferenças fundamentais entre
elas.

Vamos prestar atenção especial às linguagens de programação e às
tecnologias de software livre suportadas em cada plataforma e como cada
plataforma aborda alguns dos problemas mais espinhosos da computação em
nuvem.
Para ajudar a navegar por lista tão extensa, elas estão classificadas
como plataformas básicas e especializadas.

Plataformas básicas são ofertas mínimas apenas hardware (virtual) e, possivelmente, um sistema operacional.
Tendem a ser mais flexíveis, pois têm menos limitações.

Plataformas especializadas fornecem algum tipo de ambiente de programação e serviços, além de uma plataforma básica.
Plataformas especializadas são geralmente mais simples e, frequentemente, fornecem alguns serviços exclusivos.

Plataformas Básicas

Se quiser maior liberdade para configurar seus sistemas na nuvem,
provavelmente, deseja uma plataforma básica.
É possível especificar algumas especificações semelhantes a hardware,
como um tipo de processador, possivelmente de uma determinada
velocidade, com uma certa quantidade de memória, etc. A partir de então,
estará livre para criar o que precisar.

É muito semelhante a um serviço de hosting, mas um que aumenta e diminui
para atender suas necessidades.
Esta seção discute quatro provedores:
Amazon, IBM, Joyente Mosso.

  • Amazon Elastic Compute Cloud

Elastic Compute Cloud (EC2) da Amazon foi uma das primeiras plataformas de computação em nuvem e ainda é uma das mais populares.
É comum se dizer: “você nunca será despedido por usar a Amazon”.
EC2 é um excelente exemplo de uma plataforma básica.

Para começar a trabalhar com EC2, é necessário ter uma Amazon
Machine Instance (AMI). Uma AMI é uma imagem de máquina integral, com
sistema operacional, aplicativos, etc.

Há muitas AMIs comuns disponíveis
a partir da Amazon e da comunidade EC2, com o Microsoft Windows
ou Linux, mais diversos conjuntos de software livre,
como o
Apache Web server, MySQL e Python interpreter.

Caso não localize uma AMI
que atenda suas necessidades, a Amazon fornece ferramentas para criar
sua própria AMI, que pode ser mantida provada ou compartilhada com a
comunidade.

Uma AMI pode ser implementada em uma “instância” de
diversos tamanhos. Há também tamanhos mais especializados projetados para tarefas pesadas
do ponto de vista computacional.
Simplesmente selecione o tamanho necessário e implemente sua AMI.

Toda administração e controle de sua instância é realizada através de
serviços da Web.
Um grande ecossistema cresceu em torno desses serviços de Web para
facilitar o gerenciamento de instâncias EC2.
Por exemplo, há uma extensão do Firefox chamada Elasticfox que pode ser
usada para gerenciar e ativar AMIs diretamente a partir do Firefox.

EC2 é desenvolvido com o software livre de virtualização
Xen. Com EC2, é possível executar praticamente qualquer tipo de software
desejado.
Diversas opções do Linux são comumente usadas como sistema operacional
para AMIs.
Qualquer linguagem de programação está disponível: a linguagem de
programação Java, PHP, Python, etc.

É possível usar software
proprietário no EC2, mas a natureza elástica do EC2 torna o software
livre muito atraente.
Não é necessário se preocupar com licenciamento quando usar instâncias
maiores ou mais instâncias.

A Amazon fornece uma ampla gama de serviços de
infraestrutura para acompanharem o EC2, que podem ser usados para
abordar problemas como confiabilidade e backup de dados.

O serviço S3 da Amazon é uma excelente opção para fazer backup de seus
dados. É um modelo no sentido de faça você mesmo.
A administração e o acesso à nuvem da Amazon são feitos exclusivamente
através de seus serviços da Web que requerem autenticação em dois
fatores.

  • IBM Blue Cloud

Quando a Amazon entrou inicialmente no espaço de computação em nuvem,
muitas pessoas ficaram surpresas.
Quando a IBM entrou no espaço, ninguém ficou surpreso. Blue
Cloud foi anunciado no final de 2008 e promete fornecer
todo o básico da computação em nuvem.

Os clientes podem selecionar do hardware x86 mais comum até hardware de
ponta baseado em POWER. Blue Cloud usa software Tivoli da IBM para
fornecer automaticamente sistemas de diversas capacidades
(CPU/RAM/disco), o que permite que sua organização tenha um enorme poder
de computação
mas pague apenas pelo que precisar. A IBM também é pioneira em nuvens
“privadas”, levando os benefícios de computação em nuvem para
aplicativos internos dentro do firewall.

Blue Cloud da IBM é uma tecnologia emergente, portanto,
deve-se verificar as informações mais recentes sobre quais tipos de
tecnologia suporta.
A IBM é uma das empresas que mais apoia a tecnologia de software livre, o
que torna a IBM uma opção atraente para aplicativos que usam muito a
tecnologia de software livre.

  • Joyent Accelerator

Joyent pode não ser um nome tão conhecido como Amazon ou IBM, mas,
rapidamente, ganhou uma reputação impressionante como um provedor de
plataforma de computação em nuvem para inicializações baseadas na Web.

Joyent Accelerator fornece grande parte da flexibilidade dos provedores
de hosting tradicionais, mas com a chave de computação on demand para
computação em nuvem.
Com ele, é possível rodar uma instância completa com PHP, a linguagem
Java ou Ruby on Rails pré-configurados e prontos para usar.
Você seleciona quanto poder de computação é necessário.

Tudo está em execução no OpenSolaris, portanto, é possível usar todas as
ferramentas usuais para acessar e gerenciar ativos implementados nele,
como SSH e FTP.

A computação em nuvem de Joyent foi projetada com
escalabilidade em mente.
Mesmo suas ofertas mais financeiramente suportáveis são projetadas para
tratar de picos de uso.
Isso tornou Joyent muito popular para organizações criando aplicativos
Facebook que geralmente não precisam de muito poder, mas podem sofrer
picos dramáticos de uso.

Com Joyent, qualquer tecnologia compatível com
OpenSolaris é suportada. Isso inclui qualquer tecnologia LAMP e
linguagem de programação de software livre e outras linguagens de
programação, como a linguagem Java e Ruby.
Joyent permite usar quaisquer ferramentas Linux ou UNIX
disponíveis para proteger e manter seu site e dados.

  • Mosso

Mosso, uma subsidiária do conhecido provedor de hosting The
Rackspace Cloud, possui algumas ofertas diferentes em computação em
nuvem.
Cloud Sites da Mosso enquadram a linha entre uma plataforma básica e uma
especializada.

Há duas configurações básicas do Cloud
Site disponíveis. Uma é desenvolvida com software de
software livre.
É a configuração LAMP clássica. A outra configuração é um Windows Server
com o servidor da Web IIS e o banco de dados SQL
Server. Você seleciona a configuração e paga pela
largura da banda, armazenamento e ciclos da CPU, conforme necessário.

Mosso anunciou que também oferecerá um novo produto chamado
Cloud Servers, que serão sistemas Linux, mas que permitirão flexibilidade completa em sua configuração.

Cloud Sites da Mosso são populares, já que fornecem blocos de construção básicos necessários para muitos aplicativos.
Poderiam ser descritos como uma plataforma especializada básica.
Com isso em mente, a próxima seção verifica as plataformas mais especializadas que estão disponíveis.

Plataformas Especializadas

O termo “especializada” é, obviamente, um tanto quanto subjetivo. O que
exatamente torna uma plataforma de computação em nuvem especializada?

As plataformas desta seção oferecem recursos extras além das plataformas
básicas descritas acima.
Às vezes, os recursos são ambientes de desenvolvimento exclusivos; às
vezes, são serviços extras que são integrados à plataforma e, às vezes,
são recursos de conveniência.
Esta seção explora as seguintes plataformas especializadas: Microsoft
Azure, Google App Engine, Aptana Cloud, Heroku, Ning e Salesforce.

  • Microsoft Azure

A plataforma Azure foi anunciada pela Microsoft no quarto trimestre
de 2008. A plataforma é ligada a seu sistema operacional, que é uma
opção especializada do Windows. Inclui um “hypervisor” para provisionar
instâncias da máquina dinamicamente.
Foi projetada para executar qualquer aplicativo .NET.

É claro que aplicativos .NET baseados em servidor seriam a seleção
natural a ser movida para essa nuvem.
A Microsoft começou a oferecer muitos de seus produtos baseados em
servidor, como o Exchange, em execução na nuvem no Azure. No entanto, Azure não é simplesmente uma plataforma
Wundows e .NET.

A plataforma Azure também oferece diversos outros serviços, incluindo
Serviços SQL, que é um banco de dados de servidor SQL altamente
escalável, e Live
Services, que são serviços da Web em muitos aplicativos
populares da Microsoft, para procura, compartilhamento de fotos, sistema
de mensagens instantâneas, etc. Azure também oferece uma integração
forte com o IDE da Microsoft, o Visual Studio, facilitando executar,
testar e implementar aplicativos na plataforma Azure.

Azure é uma das plataformas em nuvem mais proprietárias
disponível, mas possui algumas atrações óbvias, caso já esteja usando
tecnologias proprietárias da Microsoft.
Você está limitado a tecnologias proprietárias da Microsoft, como as
linguagens .NET e um banco de dados baseado em servidor SQL. É possível
usar muitas tecnologias Windows para proteger acesso e gerenciar
quaisquer aplicativos em execução no Azure.

  • Google App Engine

O App Engine é bem
diferente de muitas das outras plataformas em nuvem.
Não há nenhuma provisão de hardware nele; você simplesmente implementa
seu aplicativo nele
isso pode ser feito gratuitamente.

No entanto, o uso do App Engine é
limitado e é possível comprar uso de CPU, armazenamento e largura da
banda adicionais conforme necessário, de forma semelhante a outras
plataformas em nuvem.
Há alguns recursos de conveniência para o Google App Engine, mas isso é
apenas o começo de seu conjunto de recursos especializados.

O Google App Engine fornece um ambiente de
desenvolvimento robusto que suporta somente Python, porém fornece diversos
serviços além de Python. O gerenciamento de usuário é integrado ao
Google.

Por exemplo, as pessoas efetuam login em seu aplicativo com as
mesmas credenciais que usariam para efetuar login no Google Mail. Há uma
API de armazenamento de dados para armazenar dados estruturados.
Armazenamento e recuperação do armazém de dados são semelhantes ao uso
de um banco de dados relacional, mas são inteiramente proprietários da
Google. É baseado no sistema de arquivos distribuído proprietário da
Google, GFS.

Em suma, o Google suporta Python somente, que é software
livre, mas tudo o mais envolvido é efetivamente proprietário (apesar da
Google provavelmente estar usando muitas tecnologias de software livre
nos bastidores).
O Google App Engine não oferece nenhum tipo de solução
de backup de dados, apesar de o armazém de dados subjacente ser
projetado para ser altamente tolerante a falhas.

  • Aptana Cloud

Aptana pode ser mais conhecida por seu produto Aptana Studio, um IDE
baseado no Eclipse para trabalhar com linguagens de programação
dinâmicas, como JavaScript, PHP,
Python e Ruby.
O Aptana Cloud é na verdade um conjunto de recursos além da plataforma
de computação em nuvem da Joyent.

Com Aptana Cloud, é possível implementar facilmente
em um ambiente
Linux ou MySQL com PHP ou Jaxer, a implementação de JavaScript do lado
do servidor do Aptana, ou Ruby on Rails.

Uma implementação do Aptana
Cloud possui todas as características de qualquer implementação do
Joyent Accelerator, mas com recursos extras do Aptana.
A implementação e o gerenciamento de aplicativos em nuvem são
gerenciados diretamente através do Aptana Studio.
Tudo, de provisão de hardware para seu aplicativo até monitoramento de
arquivos de log, pode ser realizado a partir do Aptana Studio.

Com o
Aptana, é possível obter um nível sem paralelo de conveniência.
Desenvolvimento, testes, implementação e gerenciamento são todos
tratados em um local.

O Aptana herda muito suporte para tecnologias de software
livre e programação de Joyent. Também herda ferramentas de software
livre para gerenciamento e backup.
Muitos dos aspectos de gerenciamento são integrados ao Aptana Studio,
mas sistemas mais sofisticados são possíveis, também.

  • Heroku

Pode-se dizer que “O que o Google App Engine é para Python, a
inicialização Heroku de Y-Combinator
é para Ruby on Rails”. Mas isso não faria justiça ao
Heroku. Não é apenas uma plataforma em nuvem onde Ruby
on Rails está disponível.
Heroku apenas suporta Rails e, dessa forma, é altamente padronizado para
Rails.

Com Heroku, é possível simplesmente incluir uma gema Ruby em sua
configuração local e emitir comandos imediatamente para implementar e
executar seu aplicativo na nuvem
Heroku.

Como alternativa, é possível implementar a
partir de um repositório Git. É possível até mesmo acessar e editar seu
código diretamente a partir de um navegador da Web.
É possível usar qualquer gema Ruby ou plug-in Rails desejado com seu
aplicativo.

Heroku tem tudo a ver com conveniência. É executado
sobre Amazon EC2, portanto, o poder de computação pode expandir de forma
elástica.
Heroku oferece serviços gratuitos com seu Heroku Garden.
Lá, é possível implementar e testar seu aplicativo na nuvem
gratuitamente. Quando estiver pronto para aceitar mais tráfego ou
precisar de tolerância a falhas, é possível graduar seu aplicativo para a
plataforma Heroku principal.

  • Ning

As plataformas em nuvem discutidas neste artigo até o momento são, em
geral, de propósito geral. Independentemente do que seu aplicativo
será, podem tratar disso.
Algumas delas focam aplicativos da Web, mas isso ainda é uma
classificação bem geral.

Ning, o site popular, permite que usuários criem suas próprias redes
sociais.
Isso é geralmente através de configuração pura, incluindo páginas,
incluindo widgets em páginas, configurando widgets, etc. Com Ning,
também é possível fazer download do código de origem de sua rede,
modificar isso como achar melhor e executá-lo na nuvem Ning.
O código de rede é em PHP simples, portanto, isso é tudo que se precisa
saber para iniciar a criação de seu próprio aplicativo de rede de
relacionamentos.

Ning é semelhante ao Google App Engine, pois fornece uma API de armazenamento de dados em vez de um banco de dados relacional.
Também fornece muitas APIs Ning que fornecem acesso à infraestrutura de rede de relacionamentos.

É possível implementar simplesmente fazendo upload de seu código e há provisão de
hardware. Ning capitaliza sua rede com anúncios e limitando seu armazenamento e largura da banda.
É possível remover os anúncios e incluir mais capacidade de armazenamento e largura da banda por uma taxa.

Ning é obviamente uma plataforma em nuvem muito
especializada.
No entanto, se você planeja construir recursos de rede de
relacionamentos em seu aplicativo (mesmo se forem secundários aos
recursos principais) e estiver confortável em programar em PHP, Ning
pode ser uma opção muito atraente.

A plataforma é semelhante ao Google App Engine.
Obtém-se apenas uma opção de linguagem de programação (PHP) e não se
pode simplesmente instalar software adicional conforme necessário.
No entanto, é possível usar um sistema altamente escalável, mas
proprietário.

  • Salesforce

Outra plataforma de computação em nuvem muito especializada está
disponível a partir de Salesforce, mais conhecida por revolucionar
software de gerenciamento de relação com o cliente (CRM) usando um
modelo SaaS.

Com a plataforma Force.com, é possível criar seus próprios aplicativos
que são executados no mesmo tipo de infraestrutura em nuvem usada por
Salesforce para seu aplicativo CRM.
Empresas usam o AppExchange para localizar e “instalar” esses
aplicativos para disponibilizá-los para seus usuários.
Isso é semelhante a aplicativos Facebook, onde o aplicativo é executado
de forma transparente como parte dos principais aplicativos de
Salesforce.

Como alternativa, um site Force.com customizado pode ser
criado a partir de um ou mais aplicativos.
É mais semelhante ao paradigma de computação em nuvem. Com um site
Force.com, não se paga por hardware, mas, em vez disso,
paga-se pelo número de usuários.

Há também diferentes camadas de preço, dependendo de quanto
armazenamento por usuário é necessário.
Para criar um aplicativo para execução em Salesforce, seu programa em
Apex, que é uma linguagem proprietária semelhante à linguagem de
programação Java.
Essa é a mesma linguagem usada por engenheiros de Salesforce para criar
seus aplicativos CRM.

Salesforce também fornece muitos serviços específicos da
plataforma para gerenciar usuários, contas, funções e acesso de dados.
Para aplicativos de negócios, especificamente aqueles exclusivos de uma
empresa específica, um site Force.com pode ser uma opção atraente.

A plataforma é bem limitada em suas opções de tecnologia de software livre
e programação.
Mas, como Google App Engine e Ning, Salesforce fornece tecnologia
proprietária altamente escalável.

Resumo

Este artigo explorou alguns dos benefícios importantes de computação em nuvem.
Você aprendeu sobre uma ampla gama de plataformas de computação em nuvem e sobre como são semelhantes e diferentes.
As informações ajudarão a selecionar quais plataformas fazem sentido para sua organização.

Fique ligado nas duas próximas partes desta série “Realidades da Computação em Nuvem de Software Livre”, que vai mostrar um preview abrangente de como é desenvolver, implementar e gerenciar aplicativos em uma plataforma de computação em nuvem. 

Recursos

Aprender

Obter produtos e tecnologias

***

artigo publicado originalmente no developerWorks Brasil, por Michael Galpin


Michael Galpin é formado em matemática pelo California Institute of Technology. Ele é um
desenvolvedor de Java desde o final dos anos 90 e é engenheiro de software para a Vitria Technology, em Sunnyvale, CA.