Cloud Computing: O Que é e Quais são as suas Desvantagens?

Autor Convidado: Pedro Axelrud é desenvolvedor Ruby on Rails na Softa e reponsável pela infra do Mailee.me. Viciado em internet e fotógrafo nas horas vagas.

Cloud Computing é uma das grandes buzzwords dos últimos tempos. É vendido quase como a solução de todos os problemas: oferece grande potencial de escalabilidade e ao mesmo tempo é verde e preserva o meio ambiente, o pessoal do marketing ta forçando um pouco a barra.

Nos últimos tempos fizemos vários testes no mailee e optamos por parar de usar cloud computing e voltar pro bom e velho servidor dedicado (bare metal). Resolvi então fazer um post com as desvantagens do cloud já que todo mundo por aí só fala das maravilhas dele.

Antes disso vamos entender o que é e como funciona. Tecnicamente o cloud computing é o que antes era chamado de VPS ou Virtual Private Server (em português alguns chamavam de servidor virtual), sem diferença nenhuma. Isso vem da virtualização (ou mais precisamente paravirtualização), um vps é um grande servidor dedicado que roda várias máquinas virtuais que são alugadas para os clientes. Só isso.

A grande diferença do cloud, na minha opinião (até porque não existe uma definição teórica disso), é o modelo de negocios: cloud computing é cobrado por hora, enquanto vps é cobrado por mês. Uma novidade inserida pelo cloud é o provisionamento rápido e a api para integração, mas ambos os recursos são possíveis em vps.

Em termos de arquitetura um datacenter de cloud computing nada mais é que um monte de servidores rodando máquinas virtuais e um sistema que gerencia em qual servidor físico colocar cada máquina virtual para aproveitar bem todas as máquinas físicas.

Bom, agora que sabemos que uma instância de cloud computing é uma máquina virtual, podemos falar das suas desvantagens. Antes que alguém venha me crucificar quero deixar claro que acho o cloud computing uma tecnologia muito legal e que é uma ótima escolha para a maioria das situações. Só que o objetivo do post é mostrar justamente as situações em que essa tecnologia não se encaixa.

O primeiro fator que o cloud deixa a desejar é quando há uma grande necessidade de I/O, um volume grande de leitura/escrita em disco. Como se está em uma máquina virtual, a taxa de leitura/escrita da máquina física é dividida entre todas as máquinas virtuais. Então mesmo que a máquina física tenha vários discos em RAID 10 ou RAID 5, não será possível conseguir uma alta taxa. E não me venha com benchmarks pois na maior parte das vezes os valores vistos na máquina virtual não são reais, são os valores da máquina física, ou seja a soma do uso de todas as máquinas virtuais, e não o que a sua máquina virtual está usando.

Para aplicações web se encaixam nessa categoria principalmente servidores de bancos de dados. Seu desempenho está totalmente preso à taxa de I/O (a menos que o banco de dados caiba inteiro na memória ram do servidor). Envio de emails também cai nessa categoria, MTAs fazem muito uso de filas em disco. Em geral qualquer tipo de aplicação que precise manipular arquivos que ficam no disco gosta muito de I/O, e portanto não é boa para o cloud.

Um outro ponto em que o cloud computing deixa a desejar são aplicações que usem um grande volume de memória ram. Existe um barramento chamado FSB (front side bus) que determina a frequência (e a velocidade) de transferência de dados do processador para o northbridge. Por exemplo: um processador e placa-mãe que funcionem com um FSB de 8 bytes de largura (64 bits) a uma frequência de 1066 MHz e com 4 transferências por ciclo, teriam um limite teórico de 34.112 MB. Esse seria o valor máximo de dados que pode trafegar do processador para a memória por segundo. Numa máquina virtual estamos dividindo essa taxa com todas as outras máquinas virtuais do servidor físico, e se tivermos algum vizinho usando bastante ram isso pode incomodar.

É claro que essas diferenças só começam a aparecer quando o uso dos recursos é grande. Para aplicações simples que não consumam muitos recursos o cloud computing ainda é uma ótima escolha. Pra ilustrar deixo o link para um post no blog do Github. Eles tinham a infra toda provida pela Engine Yard, que agrega serviços em cima da infra estrutura cloud da Amazon e nesse post explicam a decisão de mover toda a sua infra pra servidores bare metal na Rackspace.

11 responses to “Cloud Computing: O Que é e Quais são as suas Desvantagens?

  1. O problema é que o “Cloud” vendido hoje não é cloud coisa nenhuma.

    Cloud de verdade seria um serviço/servidor rodando em vários servidores (a nuvem) de modo que você não saiba sequer qual(is) servidor(es) respondeu(ram), você simplesmente usa.

    Por isso eu demorei a entender esses serviços que vedem “cloud” onde você pode configurar RAM e quantidade de CPU. Não é você quem deveria escolher isso. Você simplesmente usaria a nuvem e seria cobrado por isso.

  2. E ai pessoal,

    Concordo Guilherme, Cloud na verdade não é uma tecnologia. A ideia de Cloud (dentro do meu entendimento, afinal não existe definição formal) é abstrair a Infraestrutura. O meu ponto no artigo é justamente esse, hoje Cloud é vendido como a solução pra todos os problemas e as pessoas se apropriaram do termo para vender vários serviços diferentes.

    Rafael, creio que o que ele quer dizer com paga e usa é o modelo de cobrança por hora de uso.

    André, em momento algum eu critico as vantagens do Cloud. Minha ideia pro artigo foi mostrar o outro lado, mostrar os casos em que ele não se aplica, pois hoje só se fala disso como sendo uma grande revolução que soluciona todos os problemas. Mas na minha opinião o usuário final só sabe o que é Cloud pela questão de marketing. Cloud Computing é infraestrutura, o usuário final não deveria nem ficar sabendo.

  3. Alguns problemas vem do desconhecimento dos paradigmas teóricos de programação distribuída.

    O maior erro é programar na Cloud do mesmo jeito que se programa normalmente suas aplicações web. O jeito de programar distribuido é diferente, simplesmente isso.

    Não se deve fazer uso de algumas estruturas e se deve abusar do uso de outras…

    Também não adianta nada Amazon, Microsoft e Google, oferecerem uma PaaS com diversos recursos se a maioria só consegue ver o modelo de consumo SaaS por traz da coisa…

    I/O não é o grande problema. Os banco de dados também são distribuidos e sincronizados. Pelo menos na plataforma que eu uso. Não me preocupo se a maquina está na Europa ou EUA. Simplesmente tenho X instâncias de banco de dados no ar e opero com elas… “peace of mind”

    Existem estruturas de filas on-line que minimizam todo esse overhead citado. E no tempo que não existia, as pessoas improvisavam e botavam seus MSMQs distribuídos em servidores distintos.

    Se querem respostas rápidas para um número absurdo de dados, existem Big Tables e NoSQL disponíveis.

    Na maioria esmagadora das vezes, o problema não é ser Cloud ou não. O problema é a arquitetura. Ir pra CLOUD de verdade requer uma arquitetura especifica.

    Mas concordo com o autor que muita gente não precisa e que Cloud virou “moda”

  4. Pedro,

    Quando vc diz que não existe uma definição formal do que é Cloud eu discordo. Voce conhece o CSA (Cloud Security Alliance) ou o NIST (U.S. National Institute of Standards and Technology), pois eles realizaram diversos esforços para definir o que é Cloud e suas características essenciais. Recomendo fortemente que voce leia o documento abaixo, lá tu encontra uma definição FORMAL e muito bem feita para cloud.

    http://www.cloudsecurityalliance.org/csaguide.pdf

    Abraço,
    Marcelo Vighi

  5. “Cloud computing (‘cloud’) is *an evolving term* that describes the development of *many existing
    technologies and approaches* to computing into something different. Cloud separates application
    and information resources from the underlying infrastructure, and the mechanisms used to deliver
    them”

    Isto está longe de uma definição. Basicamente é qualquer coisa que abstraia a infra estrutura, como o autor apresentou.

  6. Guilherme, a maioria dos servidores de cloud que eu conheço (se não todos) cobram por hora. Só que como disse o colega João, se você pega um servidor em cloud para usar como se fosse um servidor dedicado, obviamente você perderá em horas ociosas.
    Agora se você monta uma arquitetura em que seu próprio sistema gerencia o dimensionamento dos servidores, você usa qualquer serviço exatamente da maneira como você disse.

    Cloud Computing não é um produto, é um serviço. Servidor dedicado é produto, e não serviço. Você está vendo cloud como produto, e usando como produto.
    É o mesmo que comprar um carro e querer o dinheiro de volta quando você não estiver dentro dele.

  7. Pessoal,

    Segundo o Gartner (http://www.gartner.com/it/page.jsp?id=1035013), existem 5 características que definem cloud computing:

    – Service-Based: existe uma interface que isola detalhes de implementação da cloud.

    – Scalable and Elastic: a solução deve ser escalável e elástica (devem existir APIs para aumentar e diminuir o tamanho da infra estrutura).

    – Shared: O hardware é compartilhado entre vários usuários.

    – Metered by Use: Paga-se pelo uso.

    – Uses Internet Technologies: Esta é meio óbvia.

    Levando isto em consideração, existe sim diferenças entre uma VPS e uma solução de cloud.

    As VPSs não são elásticas (pelo menos eu não conheço). Na minha opinião, esta é a principal característica de cloud. Deve existir uma API pra você conseguir aumentar ou diminuir sua capacidade computacional (sem downtime). Mas tem muita gente que vende “cloud” sem esta feature. Se não é elástico, não é cloud. Que eu saiba, nenhuma solução de “cloud” brasileira é elástica, portanto, não existe cloud no Brasil. Aqui no Brasil é só marketing mesmo.

    []s

    Bosco

    1. Pessoal, não atirem pedras no Pedro, estudem um pouco antes de postarem cmentários…e o mais importante… leiam mais de uma vez o post.
      Tem comentários onde o leitor aparentemente leu só metade do artigo… vamos se puxar pessoal…
      Se é para fazer comentário NOOB, fique quieto, vá pesquisar…ou lance sua dúvida no comentário…

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *