Usando cloud no EC2 da Amazon

Com a crescente popularidade do modelo Cloud Computing e da proposta da Amazon (como a plataforma EC2), tenho observado que varios fornecedores de software anunciam ofertas especificas para este ambiente. Entretanto, estes anúncios muitas vezes tendem a ser um tanto exagerados e acabam criando uma percepção um tanto enganosa para o mercado. Vamos analisar um pouco mais detalhadamente o que é a oferta EC2 da Amazon e validar se estas ofertas são realmente tão milagrosas assim.

 A plataforma EC2 oferece basicamente um ambiente virtualizado de servidores x86, suportado pelo sistema de virtualização Xen. Um servidor virtual ou uma instância (Amazon Machine Image ou AMI) é na verdade é uma imagem virtualizada de um servidor com sistema operacional como o Linux. Quando um fornecedor de software diz que suporta a plataforma EC2 ele está criando uma ou mais AMIs, adicionando seu software e os middlewares necessários. 

 Na imensa maioria das vezes estas ofertas são os mesmos softwares que rodam em servidores x86 tradicionais, com pequenas alterações para suportar os sistemas de arquivos da Amazon (Elastic Block Store, EBS) ou S3 (Simple Storage Service). Isto é necessário, pois ao contrário dos servidores tradicionais, uma AMI não embute automaticamente persistência em disco. Além disso, o software pode ser otimizado para rodar no EC2, como por exemplo considerando que os discos virtuais (S3, por exemplo) não são locais e portanto demandam latência tipica de discos remotos. Também,  uma vez que a Amazon cobra por numero de operações de I/O no EBS, otimiza-se o código diminuindo a demanda do software aos discos. Taí uma boa questão: o fornecedor ao dizer que suporta EC2 está fazendo alguma otimização para este ambiente ou está deixando o software exatamente como funciona nos servidores fisicos?

 Outra carateristica tipica do EC2 é que a escalabilidade da Amazon é horizontal, ou seja, abre-se mais instâncias. Mas, de maneira geral os softwares tradicionais aumentam sua escalabilidade através de mais recursos computacionais da mesma máquina, ou seja explorando a capacidade de servidores de maior potência. O problema é que a Amazon, ao detetar que a utilização de CPU de uma determinada instância atingiu um limite determinado, abre automaticamente uma nova instância. O efeito prático é o de instalar um novo servidor fisico quase instantaneamente. A questão é: o software consegue tirar proveito deste novo servidor? Na verdade estamos concluindo que colocar uma aplicação no EC2 não a torna automaticamente uma aplicacao “cloud”, mas sim que ela usa uma infraestrutura em cloud. A escalabilidade da infraestrutura não se reflete automaticamente na escalabilidade da aplicação.

 Outro aspecto que nem sempre é “lembrado” nas ofertas dos fornecedores: que modelo ou modelos de licença são adotados? Aí podemos ter vários tipos, como licenças voltadas para usos exploratórios, ou seja, propostas para testar o software no ambiente de cloud, mas sem permissão ou condições para uso em produção, ou licenças específicas para o EC2, como cobrança por instância e/ou por tamanho da AMI. Recomendo olhar as licenças com atenção, para evitarmos surpresas nos custos de propriedade.

 E já que falamos em custo de propriedade (TCO), sugiro enfáticamente avaliar o TCO da solução EC2 versus o modelo tradicional. Apenas pelo fato de estar na Amazon não garante à empresa que seus custos de TI serão menores. Instâncias virtuais não tem capex (capital expenses), como servidores físicos, mas dependendo de como serão gerenciadas e das licenças de softwares adotadas, podem até apresentar opex (operating expenses) mais elevados.

 Um bom exemplo de flexibilidade no uso da plataforma EC2 da Amazon é o da IBM. Vejam em http://aws.amazon.com/ibm/ .

 Mas, é indiscutível que o modelo de cloud computing ainda é um work in progress e a cada dia aprendemos um pouco mais. Recentemente a Amazon criou uma oferta bem interessante chamada de Spot Instances. A idéia é simples: a Amazon faz leilão automático de recursos computacionais. Se a demanda pela nuvem da Amazon diminui, os recursos tendem a baratear. Caso aumentem, os recursos tornam-se mais caros. É uma estratégia de precificação dinâmica. Funciona assim: baseada na lei da oferta e procura a Amazon determina um valor mínimo para as intâncias. Estes preços flutuam livremente, de acordo  com a demanda, influenciados, por exemplo, pela hora do dia.  O usuario dá seu lance. Se o seu lance é maior que o preço esperado pela Amazon, a instância é alocada a ele, que pode começar a executar. Quando o preço da instância torna-se maior que o lance oferecido, a instância é suspensa e só volta a rodar quando o lance se tornar maior novamente. Toda a operação é automática. Claro que esta oferta só vale para determinados tipos de aplicação, que não sejam dependentes de tempo.

 O que isto sinaliza? Que ainda estamos dando os primeiros passos de novos e inovadores modelos de negócio em cloud, quebrando a mesmice dos modelos atualmente praticados. Teremos dias bastante interessantes.

8 Respostas to “Usando cloud no EC2 da Amazon”

  1. Gustavo Chaves Says:

    Gostei do post, Cezar. Mas acho que a caracterização da escalabilidade do EC2 não está correta. De fato, é possível contratar o serviço de AutoScaling para que o EC2 crie novas instâncias de máquinas virtuais quando percebe que as existentes estão sobrecarregadas. Mas o AutoScaling é opcional.

    É possível escalar verticalmente uma aplicação escolhendo um dos cinco ou seis diferentes modelos de máquinas virtuais, cada qual com um número diferente de CPUs, quantidade de memória e de disco.

    • Andre Uebe Says:

      Gustavo

      O que você afirma, então, é que, a partir do momento que uma aplicação tenha sido, “importada” para a “nuvem”, ela passa automaticamente a contar com a possibilidade de ter escalabilidade?

      Atc

      Andre

  2. Usando cloud no EC2 da Amazon « Saas – Software como Serviço Says:

    […] https://computingonclouds.wordpress.com/2010/02/26/usando-cloud-no-ec2-da-amazon/  […]

  3. Andre Uebe Says:

    Taurion

    Muito esclarecedor esta distinção:

    “Na verdade estamos concluindo que colocar uma aplicação no EC2 não a torna automaticamente uma aplicacao “cloud”, mas sim que ela usa uma infraestrutura em cloud”

    Agora, realmente, me caiu a ficha da diferença entre dispor uma aplicação na “nuvem” e ter uma aplicação “em nuvem” pois, pelo que entendí, no primeiro caso, a aplicação só está hospedada na “nuvem”, sem aproveitar as vantagens de escalabilidade do ambiente “em nuvem” e, no segundo caso, a aplicação já prevê uma escabilidade.

    Muito legal!

  4. uchoaaa Says:

    Po, bem legal o texto, parabéns. Como já disseram, bem esclarecedor.
    Me diz uma coisa

    • uchoaaa Says:

      Ops, apertei Enter sem querer.
      Bom, me diz uma coisa: como, então, desenvolver aplicativos “em nuvem”, que explorem as características da cloud?

      • ctaurion Says:

        Veja que usando Amazon para implementar escalabilidade horizontal voce deve conhecer as APIs da nuvem e usar tecnicas de programacao adequadas. Alias isto vale para qqer nuvem. veja o site da cloud da Amazon e pesquise pelas FAQ. E faca um teste…abracos

  5. Cleverson Sacramento Says:

    Uso o EC2 e outros recursos do AWS faz um tempo e só tenho uma coisa a dizer: não achei um melhor até hoje.

    Para quem não sabe, há uma possibilidade de criar uma conta gratuita. Escrevi um post sobre isso, espero que ajude:

    http://cleversonsacramento.com/2011/12/07/crie-sua-conta-na-nuvem-amazon/

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s


%d blogueiros gostam disto: