Computação em Nuvem para a Empresa: Parte 1: Capturando a Nuvem

Entendendo a computação em nuvem e tecnologias relacionadas

Dando uma olhada em nosso passado tecnológico recente, fica claro que o movimento de computação em nuvem vem surgindo desde o tempo em que a computação distribuída e suas tecnologias relacionadas (como computação em grade e SOA) obtiveram ampla aceitação. A computação em nuvem chegou, mas muitos ainda têm dúvidas sobre essa nova tecnologia. A Parte 1 desta série de artigos discute computação em nuvem em geral, em seguida, analisa as camadas da nuvem, apresenta os diferentes tipos de nuvens, juntamente com seus benefícios e desvantagens e explica porque esse movimento é importante para desenvolvedores corporativos. Este conteúdo é parte do IBM WebSphere Developer Technical Journal.

Dustin Amrhein, Staff Software Engineer, IBM

Author photoDustin Amrhein entrou para a IBM como membro da equipe de desenvolvimento do WebSphere Application Server. Enquanto esteve nessa posição, Dustin trabalhou principalmente com infraestrutura e modelos de programação de serviços da Web. Além disso, Dustin trabalhou no desenvolvimento de uma estrutura de serviços RESTful para Java Runtime. Em sua função atual, Dustin é evangelista técnico de tecnologias emergentes no portfólio WebSphere da IBM.


nível de autor Profissional do
        developerWorks

Scott Quint, Cloud Computing Technology Evangelist, IBM

Scott Quint está na IBM desde 1996. Já foi desenvolvedor, Engenheiro Líder, Engenheiro Chefe, Líder e Designer de Garantia de Qualidade, Consultor Sênior e Gerente de Projeto. Mais recentemente, Scott foi Engenheiro Líder para o WebSphere Virtual Enterprise e agora é um Evangelista de Tecnologia de Computação em Nuvem.



08/Abr/2009

Introdução

O que é computação em nuvem?

A pergunta parece bem inocente e simples, mas as aparências enganam. Há centenas, se não milhares, de definições de computação em nuvem flutuando pela Web hoje. Para responder essa questão de forma adequada, pode ser mais fácil entender primeiro o que computação em nuvem não é, antes de tentarmos chegar a uma definição.

Alguns irão sugerir que a computação em nuvem é simplesmente outro nome para o modelo Software as a Service (SaaS) que tem estado à frente do movimento Web 2.0. Outros dizem que a computação em nuvem é uma questão de marketing que coloca uma nova cara em uma antiga tecnologia, como computação de utilitário, virtualização ou computação em grade. Esse tipo de pensamento não leva em consideração que computação em nuvem tem um escopo mais amplo do que qualquer uma dessas tecnologias específicas. Na verdade, as soluções em nuvem frequentemente incluem essas tecnologias (e outras), mas é a estratégia abrangente que difere a computação em nuvem de suas antecessoras.

Para o propósito deste artigo, considere que a computação em nuvem é uma solução completa na qual todos os recursos de computação (hardware, software, rede, armazenamento, etc.) são fornecidos rapidamente a usuários à medida que a demanda exigir . Os recursos, ou serviços, que são fornecidos são controláveis para assegurar coisas como alta disponibilidade, segurança e qualidade. O fator chave para essas soluções é que elas possuem a capacidade de serem aumentadas ou reduzidas gradualmente, de forma que usuários obtenham os recursos necessários, nem mais, nem menos.

Em resumo, as soluções de computação em nuvem possibilitam que TI seja fornecida como um serviço.

Por que computação em nuvem?

Há muitas razões porque cada vez mais empresas estão mudando para soluções de TI que incluem computação em nuvem. Primeiramente, a computação em nuvem pode reduzir custos associados ao fornecimento de serviços de TI. É possível reduzir custos de capital e operacionais obtendo recursos somente quando são necessários e pagando somente quando são usados. Além disso, ao transferir parte do peso associado ao gerenciamento de diversos recursos na empresa, seu pessoal chave pode focar mais a produção de valor e inovação para os negócios. Por fim, os modelos de computação em nuvem fornecem a agilidade dos negócios. Como toda a infraestrutura de TI pode aumentar ou reduzir gradualmente para atender àdemanda, as empresas podem atender mais facilmente as necessidades dos mercados em constantes mudanças para assegurar que sempre estejam à frente para seus consumidores.

De muitas maneiras, a computação em nuvem é a realização de combinar muitas tecnologias existentes (SOA, virtualização, computação autônoma) com nova ideias para criar uma solução completa de TI.


Anatomia de uma Nuvem

Com o que esperamos que seja uma definição aceitável de computação em nuvem, vamos dar uma olhada nas camadas da nuvem. A Figura 1 é uma destilação do que a maioria concorda que sejam os três principais componentes de um modelo em nuvem. Essa figura reflete de forma precisa as proporções da massa de TI com relação a custo, requisitos de espaço físico, manutenção, administração, supervisão de gerenciamento e obsolescência. Além do mais, essas camadas representam não apenas uma anatomia de nuvem, mas representam a anatomia de TI em geral.

Figura 1. Anatomia de Nuvem
Figura 1. Anatomia de Nuvem

As camadas que formar uma nuvem incluem:

  • Serviços de aplicativos

    Essa camada é, possivelmente, a mais familiar para usuários da Web comuns. A camada de serviços de aplicativos hospeda aplicativos que se encaixam no modelo SaaS. Há aplicativos que são executados em uma nuvem e são fornecidos on demand como serviços para usuários. Às vezes, os serviços são gratuitos e os provedores geram receita a partir de anúncios na Web e outras vezes provedores de aplicativos geram receita diretamente do uso do serviço. Parece familiar? Provavelmente sim, já que praticamente todos nós usamos eles. Se alguma vez tiver feito a declaração do imposto de renda on-line usando Turbo Tax, tiver verificado seu e-mail usando o GMail ou o Yahoo Mail ou tiver registrado seus compromissos no Google Calendar, então, está familiarizado com a camada superior da nuvem. Esses são apenas alguns exemplos desses tipos de aplicativos. Há, literalmente, milhares de aplicativos SaaS e o número cresce diariamente graças às tecnologias Web 2.0.

    Possivelmente, não tão evidente para o público em geral, é que há muitos aplicativos na camada de serviços de aplicativos que são direcionados à comunidade corporativa. Há ofertas de software hospedadas disponíveis que tratam de processamento de folha de pagamento, gerenciamento de recursos humanos, colaboração, gerenciamento de relacionamento com o cliente, gerenciamento de gerenciamento de parceiro de negócios e mais. Exemplos populares dessas ofertas incluem IBM® Lotus® Live, IBM Lotus Sametime®, Unyte, Salesforce.com, Sugar CRM e WebEx.

    Em ambos os casos, os aplicativos fornecidos através do modelo SaaS beneficiam consumidores aliviando-os da instalação e manutenção de software e podem ser usados através de modelos de licenciamento que suportam pagamento para conceitos de uso.

  • Serviços de plataforma

    Essa é a camada na qual vemos a infraestrutura do aplicativo emergir como um conjunto de serviços. Isso inclui, mas não se limita a middleware como um serviço, sistema de mensagens como um serviço, integração como um serviço, informações como um serviço, conectividade como um serviço, etc. Os serviços aqui têm a intenção de suportar aplicativos. Esses aplicativos podem estar em execução no nuvem e podem estar em execução em um centro de dados corporativo mais tradicional. Para alcançar a escalabilidade necessária em uma nuvem, os diferentes serviços oferecidos aqui são frequentemente virtualizados. Exemplos de ofertas nesta parte da nuvem incluem as imagens virtuais do IBM® WebSphere® Application Server, Amazon Web Services, Boomi, Cast Iron e Google App Engine. Os serviços de plataforma possibilitam que os clientes tenham certeza de que seus aplicativos estejam equipados para atender as necessidades de usuários, fornecendo a infraestrutura do aplicativo com base on demand.

  • Serviços de infraestrutura

    A camada inferior da nuvem é a camada de serviços de infraestrutura. Aqui, vemos um conjunto de ativos físicos como servidores, dispositivos de rede e discos de armazenamento oferecidos como serviços provisionados a consumidores. Os serviços aqui suportam a infraestrutura do aplicativo -- independentemente de se essa infraestrutura está sendo fornecida através de uma nuvem -- e muitos outros consumidores. Como com os serviços de plataforma, virtualização é um método usado frequentemente para fornecer a distribuição on demand dos recursos. Exemplos de serviços de infraestrutura incluem IBM BlueHouse, VMWare, Amazon EC2, Microsoft Azure Platform, Sun ParaScale Cloud Storage e mais.

    Os serviços de infraestrutura abordam o problema de equipar de forma apropriada os datacenters, assegurando o poder de computação quando necessário. Além disso, devido ao fato das técnicas de virtualização serem comumente empregados nesse camada, economias de custos decorrentes da utilização mais eficiente de recursos podem ser percebidas.


Nuvens Públicas, Privadas e Híbridas

Agora que você tem uma ideia sobre o que é computação em nuvem e o que forma uma solução de computação em nuvem, vamos dar uma olhada em três tipos principais de nuvens. Para o propósito deste artigo, vamos dar uma olhada nos tipos como se relacionariam a um consumidor corporativo de computação em nuvem (Figura 2):

Figura 2. Tipos de Nuvens
Figura 2. Tipos de Nuvens
  • Nuvens públicas são serviços em nuvem fornecidos por terceiros (fornecedor). Elas existem além do firewall da empresa e são completamente hospedadas e gerenciadas pelo provedor da nuvem.

    As nuvens públicas tentam a fornecer aos consumidores elementos de TI sem problemas. Seja software, infraestrutura de aplicativo ou infraestrutura física, o provedor de nuvem assume as responsabilidades de instalação, gerenciamento fornecimento e manutenção. Os clientes são cobrados somente pelos recursos usados, portanto, a subutilização é eliminada.

    No entanto, isso tem um custo. Esses serviços são geralmente oferecidos com "convenção sobre configuração", o que significa que são fornecidos com a ideia de acomodar os casos de uso mais comuns. As opções de configuração são geralmente um subconjunto menor do que seriam se o recurso fosse controlado diretamente pelo consumidor. Outra coisa que deve ser lembrada é que como os consumidores têm pouco controle sobre a infraestrutura, os processos que requerem forte segurança e conformidade reguladora nem sempre são uma boa adequação para nuvens públicas.

  • Nuvens privadas são serviços em nuvem fornecidos dentro da empresa. Essas nuvens existem dentro do firewall da empresa e são gerenciadas pela empresa.

    Nuvens privadas oferecem muitos dos mesmo benefícios que as nuvens públicas com uma principal diferença: a empresa é responsável por configurar e manter a nuvem. A dificuldade e o custo de estabelecer uma nuvem interna podem, às vezes, ser proibitivos e o custo da operação contínua da nuvem pode exceder o custo de usar uma nuvem pública.

    As nuvens privadas oferecem vantagens com relação à variedade pública. O controle com granularidade mais baixa com relação a diversos recursos que formam a nuvem fornece a uma empresa todas as opções de configuração disponíveis. Além disso, as nuvens privadas são ideais quando o tipo de trabalho que está sendo realizado não é prático para a nuvem públicas, devido a preocupações com segurança e regulação.

  • Nuvens híbridas são uma combinação de nuvens públicas e privadas. Essas nuvens seriam geralmente criadas pela empresa e as responsabilidade de gerenciamento seriam divididas entre a empresa e o provedor de nuvem pública. A nuvem híbrida usa serviços que estão no espaço público e no privado.

    As nuvens híbridas são a resposta quando uma empresa precisa empregar os serviços de nuvens públicas e privadas. Nesse sentido, uma empresa pode determinar os objetivos e necessidades de serviços e obter os mesmos da nuvem pública ou privada, conforme apropriado. Uma nuvem híbrida bem construída poderia atender processos seguros críticos para a missão, como o recebimento de pagamentos de clientes, assim como aqueles secundários para os negócios, como processamento de folha de pagamento de funcionários.

    A principal desvantagem dessa nuvem é a dificuldade de criar e controlar de forma efetiva tal solução. Serviços de diferentes origens devem ser obtidos e fornecidos como se tivessem originado de um único local e interações entre componentes privados e públicos podem tornar a implementação ainda mais complicada. Como esse é um conceito arquitetônico relativamente novo em computação em nuvem, boas práticas e ferramentas sobre esse padrão continuam a surgir e pode haver uma relutância geral para adotar esse modelo até que seja mais conhecido.


SOA e Computação em Nuvem

As predecessoras da computação em nuvem são numerosas tecnologias bem-conhecidas. Há computação de utilitário, computação de grade, virtualização, hypervisors e muitos outros. Um conceito tecnológico que nem sempre entra na conversa em nuvem (mas definitivamente deveria) é SOA. A Arquitetura Orientada a Serviços teve um papel na ativação de computação em nuvem para se tornar o que é hoje e também deve ter um papel significativo na evolução da computação em nuvem.

De muitas maneiras, a computação em nuvem pode ser vista como uma extensão dos antigos aplicativos SOA e para a infraestrutura de aplicativo e física. À medida que as empresas e os provedores de nuvem buscam fornecer soluções em nuvem, o objetivo básico será ativar a infraestrutura corporativa de TI como um serviço. As lições que foram aprendidas para integrar e fornecer aplicativos corporativos como serviços discretos também devem ser aplicadas à medida que as camadas de infra-estrutura forem organizadas e fornecidas como serviços. A infraestrutura de aplicativo e física, muito semelhantes a aplicativos em SOA, devem poder ser descobertas, gerenciáveis e controláveis. Idealmente, muito semelhante a SOA, os padrões abertos evoluirão para determinar como os serviços são descobertos, consumidos, gerenciados e controlados. Esses padrões somariam todo o ciclo de vida de uma solução em nuvem.

A Figura 3 captura a ideia da abordagem em nuvem em três camadas e mostra como cada uma dessas camadas estão essencialmente oferecendo serviços a uma SOA geral. Na maioria dos casos, os serviços nas duas camadas inferiores são apresentados como parte de uma SOA, mas a parte importante é que você reconhece a abordagem baseada em serviço para todas as camadas da nuvem.

Figura 3. Serviços em Nuvem
Figura 3. Serviços em Nuvem

Questões de Nuvem para Desenvolvimento

Se for um desenvolvedor os testador de software, pode pensar que tudo isso soa excelente, mas não tem muita certeza se isso importa para você. Na verdade, isso é para administradores, certo? Essa é uma primeira opinião comum, mas não considera alguns dos benefícios claros que a computação em nuvem pode fornecer às equipes de desenvolvimento e teste.

Por exemplo, um nos maiores inibidores em teste e desenvolvimento é a capacidade de adquirir, implementar, configurar e hospedar ambientes nos quais executar testes de unidades de desenvolvimento, criação de protótipos e testes completos de produtos. As soluções de computação em nuvem podem ser usadas para criar e hospedar rapidamente esses ambientes, removendo o peso das equipes de teste e desenvolvimento e colocando o problema na região da nuvem. Para as equipes de desenvolvimento, isso significa que coisas como integração de código e criação de protótipo contínuas podem ser alcançadas mais facilmente, já que as atualizações de produtos e o novo código podem ser testados com relativa facilidade. Para as equipes de teste, mais tempo pode ser gasto testando a qualidade de um produto e menos tempo é investido na ativação dos testes.

Além de fornecer ambientes de tempo de execução para as equipes de desenvolvimento, há outra área da nuvem destinada inteiramente para desenvolvedores. Ferramentas como um serviço, um subconjunto de SaaS, é a ideia que as ferramentas de desenvolvimento podem ser oferecidas nas nuvens. IDEs e editores de código simples tornam-se partes de software hospedadas que estão acessíveis a desenvolvedores com uma conexão com a Internet. Isso elimina a necessidade de desenvolvedores terem IDEs locais e licenças correspondentes em cada máquina que possuem. Como um desenvolvedor, provavelmente pode entender o valor em potencial derivado de ser capaz de acessar ambientes de desenvolvimento comuns de qualquer máquina por vez.

Há ainda outro impacto da computação em nuvem nos desenvolvedores. Deveria ser obrigatório para os desenvolvedores usar APIs de modelo de programação padrão sempre que possível. Todos os desenvolvedores lutam para serem cidadãos de programação de modelo, aderindo de forma rígida a padrões, mas a maioria provavelmente se desvio ocasionalmente. Possivelmente, você se desviou porque uma API proprietária forneceu algum benefício tangível como desempenho; em outro caso, talvez apenas quisesse "colocar em funcionamento". Na nuvem, qualquer desvio de APIs padrão é especialmente perigoso e a razão para isso é razoavelmente clara. Apesar de os consumidores saberem que estão obtendo um serviço que solicitaram de um provedor de nuvem, podem não estar cientes dos detalhes da implementação desse serviço.

Por exemplo, considere solicitar um serviço de servidor de aplicativos J2EE™ de um provedor de nuvem. O provedor de nuvem produz o serviço do servidor de aplicativos, mas você pode não estar ciente de qual servidor de fornecedor está recebendo, a menos que tenha negociado um contrato específico com o provedor. Qualquer aplicativo que optar por implementar no servidor fornecido deveria estar livre de código específico do fornecedor, pois você pode acabar com uma implementação do servidor de aplicativos que não estava esperando.


Ferramentas para as Nuvens

Um importante componente em computação em nuvem tocado acima é ferramentas. De muitas maneiras, pode ser o mais crítico para o sucesso de uma solução de computação em nuvem. Há tecnologia significativa presente no mercado para fornecer soluções de computação em nuvem, mas essas tecnologias são frequentemente difíceis de fornecer devido à falta de ferramentas abrangentes compreensíveis.

Considere a camada de serviços de aplicativos na nuvem. As ferramentas nessa camada poderiam fornecer um ambiente que auxilie o desenvolvimento de aplicativos em nuvem e devem fornecer os meios para empacotar e implementar o aplicativo em uma infraestrutura em nuvem. Sabemos que há muitas dessas ferramentas que se ajustam nessa descrição, mas o problemas é que quase sempre estão amarradas à infraestrutura do provedor de nuvem. Padrões abertos são chave para obter o poder e a flexibilidade máximos dessas ferramentas. Os desenvolvedores não podem suportar os custos de aprenderem novas ferramentas toda vez que mudarem as infraestruturas em nuvem; além disso, oficinas de desenvolvimento não podem incorrer nos custos de regravar aplicativos por terem mudado de infraestruturas em nuvem. Por essa razão, as ferramentas devem auxiliar o desenvolvimento, empacotamento e implementação de aplicativos de maneira que o projeto acabado tenha portabilidade em diversas infraestruturas em nuvem.

As ferramentas também têm um papel muito claro na camada de serviços de infraestrutura. Construir a infraestrutura para uma nuvem não é um processo trivial. Todos os ativos físicos para um provedor de nuvem, seja esse provedor interno ou externo, precisam ser considerados, de forma que os recursos físicos certos sejam alocados para a nuvem. As ferramentas nesse espaço devem ajudar as empresas a visualizar seus ativos de TI de forma que nenhum recurso seja desconsiderado para a nuvem. No entanto, não seria suficiente fornecer uma visualização dos ativos ao construtor da nuvem. As ferramentas nesse espaço deveria oferecer um pouco de inteligência para a criação da nuvem. No passado, administradores de TI tinham uma tarefa difícil de tentar corresponder a demanda esperada aos recursos físicos. Isso levou ao problema de subutilização de recursos e esse problema é um enorme catalisador para a nuvem. Ferramentas devem guiar usuários através da composição física da nuvem com base nas características de demanda esperadas do sistema.


Resumo

Computação em nuvem é considerada um parte significativa do segmento de mercado de tecnologia hoje e no futuro previsto. Em seu formato final, fornecerá o meio para fornecer TI a consumidores como um serviço. O número de ofertas de produtos e serviços no espaço de computação em nuvem continua a crescer e enfatiza o fato que é a direção que as coisas estão tomando. Estamos animados com as oportunidades que a computação em nuvem apresenta a nossos desenvolvedores do WebSphere e, em artigos subsequentes, vamos discutir quais são algumas dessas oportunidades e veremos algumas das soluções do WebSphere que estão deixando de ser uma ideia para se tornarem resultados finais para as empresas.

Recursos

Aprender

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=WebSphere
ArticleID=423818
ArticleTitle=Computação em Nuvem para a Empresa: Parte 1: Capturando a Nuvem
publish-date=04082009